Mysqlimportの実行時にこのエラーが発生する理由を誰かが知っていますか?
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 someone@% |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'someone'@'%' IDENTIFIED BY PASSWORD '*BLAHBLAHBLAH' |
| GRANT ALL PRIVILEGES ON `bar`.* TO 'someone'@'%' |
+------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql>
OK、FILE特権は「グローバル」特権であることがわかりました。これは、特定のデータベース、テーブルで選択的に有効にできないことを意味しているようです。など。これが、以前のbar。*に関する付与ステートメントが効果がなかった理由です。
GRANT ALL PRIVILEGES ON `bar`.* TO 'someone'@'%'
*.*
に対するFILE権限を付与する必要があります。
GRANT FILE ON *.* to 'someone'@'%';
これが誰かを助けることを願っています。
Mysqlimportに--localパラメーターを使用することにより、追加の特権の必要性を回避できます。
--local, -L
Read input files locally from the client Host.
代わりに、追加のFILE許可をスキップして、このコマンドを選択する人もいます。
mysql -u username -p <yourdbname> < yourfile.sql
mysqlimportは、LOAD DATA INFILEステートメントへのコマンドラインインターフェイスであり、「FILE」権限(サーバーレベル)が必要です。
From LOAD DATA INFILE構文 :
Also, to use LOAD DATA INFILE on server files, you must have the FILE privilege.