mysqlimport:错误:1045,访问被拒绝

Mik*_*ike 19 mysql mysqlimport mysql-error-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
Run Code Online (Sandbox Code Playgroud)

然而...

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>
Run Code Online (Sandbox Code Playgroud)

Omr*_*dan 29

通过使用mysqlimport的--local参数,您可以避免需要额外的权限:

--local, -L

           Read input files locally from the client host.
Run Code Online (Sandbox Code Playgroud)

  • 为我工作,恕我直言,这是比向一个用户授予重要的全局许可更好的方法 (2认同)

Mik*_*ike 22

好吧,事实证明FILE特权是一个"全局"特权,这显然意味着你不能在某些数据库,表上有选择地启用它.这就是为什么我之前关于bar.*的授权声明没有效果:

GRANT ALL PRIVILEGES ON `bar`.* TO 'someone'@'%' 
Run Code Online (Sandbox Code Playgroud)

您需要授予FILE权限*.*:

GRANT FILE ON *.* to 'someone'@'%';
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人.


H.R*_*iee 13

有些人会选择此命令,跳过额外的FILE授权.

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

  • 如何让这个工作导入csv文件?我只是以.sql格式重写csv文件,然后将其删除吗?或者我可以使用像http://stackoverflow.com/a/18469353/2392358,mysqlimport这样的东西 (2认同)

Bil*_*lal 5

mysqlimport是LOAD DATA INFILE语句的命令行界面,您需要"FILE"权限(服务器级别).

LOAD DATA INFILE语法:

Also, to use LOAD DATA INFILE on server files, you must have the FILE privilege.
Run Code Online (Sandbox Code Playgroud)

  • 您在数据库级别授予ALL PRIVILEGES,而FILE特权在服务器级别. (3认同)