【问题标题】:When importing SQL file to the database using command line, wrong MySQL user is used使用命令行将 SQL 文件导入数据库时​​,使用了错误的 MySQL 用户
【发布时间】:2017-04-24 12:32:30
【问题描述】:

我有 MySQL 用户 company_dev 可以访问 DB company_dev,还有用户 company_prod 可以访问 DB company_prod

当我在我的 Debian 服务器上以 root 身份登录时,我尝试将 SQL 文件导入我的company_dev DB。

这是我正在使用的命令:mysql -u company_dev -pMyPassword company_dev < some_db.sql

但我收到此错误:

用户 'company_dev'@'localhost' 拒绝访问数据库 '公司产品'

如果我正确理解了这条消息 - 有人尝试将文件 some_db.sql 写入 company_prod DB,即使我在命令中输入了 company_dev?!

这怎么可能?

【问题讨论】:

    标签: mysql shell command-line debian


    【解决方案1】:

    注意:在服务器上以root身份登录并不等同于mysql服务器的root用户,它们是不同的。

    请检查以下内容:

    • 检查密码是否正确,也可能需要加引号: -p'passWordHere'

    • 文件 some_db.sql 可能有一些语句要插入 someDbName。核实。

    • 您正在导入的用户是 -u company_dev 你需要确保这个用户有权限。

    要授予权限,请使用此 sql,您将需要以下内容:

     GRANT [type of permission] ON company_prod TO ‘company_dev’@'localhost’;
    

    这一切都取决于您需要授予用户的权限, 所有权限都是这样的:

    GRANT ALL PRIVILEGES ON * . * TO 'company_dev'@'localhost';
    

    【讨论】:

    • 感谢您的回答。我会看看你提供的链接。但是,我不确定我是否完全清楚。用户company_dev 拥有company_dev DB 的所有权限。但是当我从我的问题中执行命令时,用户company_dev 似乎正在尝试将 SQL 文件导入company_prod DB。即使在命令中清楚地保留了 SQL 文件必须由用户 company_dev 导入到 company_dev DB!
    • 我认为您写的第二项是问题 - “文件 some_db.sql 可能有一些语句要插入到 someDbName。检查它。”有SQLCREATE DATABASE /*!32312 IF NOT EXISTS*/ company_prod/*!40100 DEFAULT CHARACTER SET utf8mb4 */; USE company_prod;
    • 我需要找到一种仅从company_prod 导出数据的方法,而不需要这些用于创建数据库的命令。所以我可以在company_dev 中导入该数据。
    猜你喜欢
    • 2015-08-29
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 2021-03-23
    相关资源
    最近更新 更多