【问题标题】:Access denied for root MySQL user to DB拒绝 root MySQL 用户访问数据库
【发布时间】:2015-12-26 14:35:23
【问题描述】:

作为 phpMyAdmin 中的 MySQL 根用户,我运行:

GRANT INSERT ON db.* TO 'db_user'@'localhost' 

并收到:

1044 - 用户 'db_user'@'localhost' 对数据库 'db' 的访问被拒绝

我不明白为什么 root 不能将此权限授予 db 用户。

【问题讨论】:

  • 所以您输入了 GRANT 命令,并立即收到 1044 错误消息?或者你输入了 GRANT 命令,它执行成功,然后你尝试以 db_user 身份登录,它给出了 1044 命令?
  • 我像上面一样输入了 GRANT 命令,立即得到了 1044。

标签: mysql phpmyadmin


【解决方案1】:

您没有以 root 身份运行;您以 db_user 身份登录。也许这是您的浏览器会话的问题。注销并再次以root身份登录,然后重新运行命令

https://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html#error_er_dbaccess_denied_error

最坏的情况,换个浏览器试试。

【讨论】:

  • 为清楚起见,错误中提到的用户名是当前登录的用户,在这种情况下,它恰好与您尝试分配权限的用户相同,从而导致混淆。
【解决方案2】:

约翰,考虑到你得到的回应:

1044 - 用户 'db_user'@'localhost' 拒绝访问数据库 'db'

很明显,正如 Devin 所说,您执行的查询是以“db_user”而不是“root”用户身份连接的。

尝试以 root 身份再次登录,并在连接时仔细检查用户 root 是否确实已连接,方法是检查 phpmyadmin 主窗口右侧的“数据库服务器”信息。您应该会看到类似这样的内容:

  • 服务器:通过 UNIX 套接字的本地主机
  • 服务器类型:MySQL
  • 服务器版本:5.5.44(服务器版本/类型)
  • 协议版本:10
  • 用户:root@localhost
  • 服务器字符集:UTF-8 Unicode (utf8)

查看当前用户执行的权限:

SHOW GRANTS;

我猜您知道用户的权限可以是全局的或特定于数据库的(仅与所选数据库有关)

在任何情况下,使用 sql 命令行让您感到不舒服,通过执行以下操作来授予所需的权限要容易得多:

如果您想向用户授予一些全局权限,请执行以下操作:

  1. 从您的网络浏览器以 root 身份登录到 phpMyAdmin
  2. 单击“用户”选项卡(不要从菜单中选择任何数据库)
  3. 找到您要编辑的用户并点击“编辑权限”
  4. 选择您希望授予的任何权限。
  5. 点击“开始”

仅对于数据库特定权限,请按照上面提到的步骤 1-3 进行操作,然后:

  1. 向下滚动一点,直到看到“数据库特定权限”标题。
  2. 从下拉菜单中,选择要为其添加用户权限的数据库并输入主机名(默认为 %) 3.点击“前往”

请务必验证标头是否显示您正在为所引用的特定数据库授予权限。 (例如编辑权限:用户 'db_user'@'localhost' - 数据库 db)

  1. 检查您要授予的权限
  2. 点击“开始”

我希望它对你有用。

【讨论】:

  • 你是对的。我没有以 root 身份登录。我必须弄清楚如何通过我的托管服务提供商 bluehost 以 root 用户身份登录。
  • @JónÁrnason Jon,您的托管服务提供商已经在他们的域上发布了一个解释性视频,描述了创建新用户、将他分配到数据库以及最后定义所需权限的过程。链接是 (my.bluehost.com/cgi/help/6),在页面顶部,您将看到一个视频,其中显示了详细的过程。才2分钟,试试看吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 2021-06-01
  • 2016-06-12
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多