2011-07-26 15 views
17

Mysqlimport çalışırken bu hatayı neden aldığımı bilen var mı? Ancak mysqlimport: Hata: 1045, Erişim reddedildi

mysqlimport -u someone -pwhatever --columns=a,b,c,d,e bar /var/tmp/baz.sql 
mysqlimport: Error: 1045, Access denied for user 'someone'@'%' (using password: YES), when using table: baz 

...

mysql -u someone -pwhatever 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 199 
Server version: 5.1.41-3ubuntu12.10 (Ubuntu) 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> show grants; 
+------------------------------------------------------------------------------------------------------------+ 
| Grants for [email protected]%                     | 
+------------------------------------------------------------------------------------------------------------+ 
| GRANT USAGE ON *.* TO 'someone'@'%' IDENTIFIED BY PASSWORD '*BLAHBLAHBLAH' | 
| GRANT ALL PRIVILEGES ON `bar`.* TO 'someone'@'%'           | 
+------------------------------------------------------------------------------------------------------------+ 
2 rows in set (0.00 sec) 

mysql> 

cevap

20

Tamam, DOSYA ayrıcalığı görünüşe seçerek, belirli veritabanlarında tablolar etkinleştirmek anlamına gelir "global" bir ayrıcalık olduğunu çıkıyor. .

GRANT ALL PRIVILEGES ON `bar`.* TO 'someone'@'%' 

Sen *.* üzerine DOSYA ayrıcalıkları vermek gerekir: Bu kimse yardımcı

GRANT FILE ON *.* to 'someone'@'%'; 

Umut çubuğunda önceki hibe deyimi * hiçbir etkisi nedeni vb budur.

+0

Farklı parametreler ayarlandıktan sonra 'ERROR 1221 (HY000): DB GRANT ve GLOBAL PRIVILEGES'in yanlış kullanımı' alıyorsanız, bu cevabın gösterdiği şeye geri dönün: "GRANT FILE ON *. * Kullanıcıya @ localhost;" - "FILE ayrıcalıkları globaldir ve tek bir veritabanına uygulanamaz" –

4

mysqlimport sen 'DOSYA' ayrıcalığı (sunucu seviyesi) gereksinim duyduğunuz LOAD DATA INFILE açıklamada, bir komut satırı arayüzüdür. LOAD DATA INFILE syntax itibaren

:

Also, to use LOAD DATA INFILE on server files, you must have the FILE privilege. 
+0

Yani "HİBE TÜM ĠMTĠYAZLAR" DOSYA ayrıcalığı içermez? –

+2

Veritabanı düzeyinde TÜM PRIVILEGE'leri veriyorsunuz, FILE ayrıcalığı ise sunucu düzeyinde. – Bilal

+0

Ah evet, sadece bunu anladım. Yardım için teşekkürler! –

20

Sen mysqlimport için --local parametresini kullanarak ekstra ayrıcalığın ihtiyacını önleyebilirsiniz:

--local, -L 

      Read input files locally from the client host. 
+1

Benim için Çalıştı, ve IMHO bir kullanıcı için önemli bir küresel izin vermekten çok daha iyi bir yaklaşım – happyskeptic

13

Bazı yerine ekstra DOSYA hibe atlayarak, bu komut için tercih olacaktır.

mysql -u username -p <yourdbname> < yourfile.sql

+0

Bu komutu kullanarak aynı hatayı alıyorum. –

+1

Bunu bir csv dosyasını içe aktarmak için nasıl çalıştırabilirim? Csv dosyasını bir .sql biçiminde yeniden yazıp sonra imha ediyor muyum? veya http://stackoverflow.com/a/18469353/2392358 'mysqlimport' – HattrickNZ

+0

@ HattrickNZ gibi bir şeyi kullanabilirim. Bu komut sadece .sql dosyanızda ifadeniz varsa geçerlidir. Eğer .csv varsa, bağlantınızda yayınlanan gibi farklı bir şey yapmak zorunda kalacaksınız. – Rabiees

İlgili konular