Подтвердить что ты не робот

Mysqlimport: Ошибка: 1045, доступ запрещен

Кто-нибудь знает, почему я получаю эту ошибку при запуске 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 [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>
4b9b3361

Ответ 1

ОК, выясняется, что привилегия FILE является "глобальной" привилегией, что, по-видимому, означает, что вы не можете выборочно включать ее в определенные базы данных, таблицы. и т.д. Поэтому моя предыдущая заявка на грант на баре * не имела эффекта:

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

Вам необходимо предоставить привилегии FILE на *.*:

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

Надеюсь, это поможет кому-то.

Ответ 2

Вы можете избежать необходимости в дополнительных привилегиях, используя параметр -local для mysqlimport:

--local, -L

           Read input files locally from the client host.

Ответ 3

Некоторые предпочитают эту команду, пропуская дополнительный FILE-грант.

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

Ответ 4

mysqlimport - это интерфейс командной строки для инструкции LOAD DATA INFILE, для которой вам нужна привилегия "FILE" (уровень сервера).

Из Синтаксис LOAD DATA INFILE:

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