当数据库名称包含下划线时,无法导入SQL文件

时间:2017-05-31 01:02:23

标签: mysql

我尝试使用以下命令将SQL文件导入MySQL数据库;

mysql --user example -p --database example_database < example.sql

这将返回错误:

ERROR 1044 (42000) at line 22: Access denied for user 'example'@'%' to database 'example'

请注意,数据库名称已修剪了下划线后的所有内容。连接细节肯定是正确的,因为我可以使用以下命令连接到MySql:

mysql --user example -p --database example_database

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:1)

观察到的行为的一个可能的解释是example.sql文件包含一个语句:

  USE example;

执行该语句时会抛出错误,因为未授予用户'example'@'%'对该数据库的权限。

(我不认为--database选项值正在下划线字符之前被修剪。关于数据库名称中下划线的猜想是红色鲱鱼。)

答案 1 :(得分:0)

编辑在下面添加评论:

它看起来像是指您要导入的example.sql数据库。您是否首先将所有权限授予您的示例&#39;用户在那个example.sql数据库?像

这样的东西

GRANT ALL PRIVILEGES ON example.* TO 'example'@'%' WITH GRANT OPTION;

尝试在数据库名称周围加上_,其中包含_

mysql --user example -p --database `example_database` < example.sql

这应该允许您导入整个名称