我尝试使用以下命令将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
为什么会发生这种情况?
答案 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
这应该允许您导入整个名称