2011-07-26 70 views
17

有沒有人知道爲什麼我運行mysqlimport時出現這個錯誤?mysqlimport:錯誤:1045,拒絕訪問

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> 

回答

20

OK,事實證明,FILE權限是一個「全球性」的特權,這顯然意味着你不能有選擇地啓用某些數據庫,表。等等。這是爲什麼吧我以前的GRANT語句*無影響:

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

您需要在*.*授予FILE權限:

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

希望這可以幫助別人。

+0

如果您在設置不同的參數後收到'ERROR 1221(HY000):DB GRANT和GLOBAL PRIVILEGES'的錯誤用法,請回到此答案顯示的內容:「將GRANT FILE ON *。*添加到user @ localhost;」 - 「FILE權限是全局性的,不能應用於單個數據庫」 –

4

的mysqlimport是一個命令行界面LOAD DATA INFILE語句,在您需要的 '文件' 的權限(服務器級)。

LOAD DATA INFILE syntax

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

因此,「授予所有特權」不包括FILE特權? –

+2

您正在授予數據庫級別的所有PRIVILEGES權限,而FILE權限位於服務器級別。 – Bilal

+0

啊,是的,我只是想通了。謝謝您的幫助! –

20

您可以通過使用--local參數,以避免mysqlimport的爲額外的特權的需要:

--local, -L 

      Read input files locally from the client host. 
+1

爲我工作,恕我直言,一種比給予一個用戶重要的全局權限更好的方法 – happyskeptic

13

有些反而會選擇該命令,跳過額外的文件批。

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

+0

我使用這個命令得到相同的錯誤。 –

+1

我如何得到這個導入csv文件的工作?我是否只需以.sql格式重寫csv文件,然後將其加密?或者我可以使用像http://stackoverflow.com/a/18469353/2392358'mysqlimport' – HattrickNZ

+0

@HattrickNZ以及該命令只有在您的.sql文件中有語句。如果你有.csv,我想你將不得不做一些不同的事情,比如張貼在你的鏈接中。 – Rabiees

相關問題