【问题标题】:Cannot connect to database server, access denied to user root@%无法连接到数据库服务器,拒绝用户 root@% 访问
【发布时间】:2021-05-11 06:24:03
【问题描述】:

我在尝试打开数据库连接时收到此错误: “无法连接到数据库服务器 您的用户 root@% 与数据库 [mydatabase] 的连接失败 请:

  1. 检查 mysql 是否在 localhost 上运行
  2. 检查 mysql 在 3306 上是否可达
  3. 检查 root 是否有权连接到 localhost
  4. 如果需要,请确保双方都提供密码”

我正在使用 Windows 10 机器上的 Mysql 工作台。我认为我的 root 权限已被删除(不确定如何)所以任何关于此的建议也将是美妙的......谢谢 :)

【问题讨论】:

  • 您的密码正确吗?
  • 肯定是正确的密码,用它通过mysql命令行客户端登录就对了

标签: mysql mysql-workbench


【解决方案1】:

您能否提供有关您的设置的其他信息,包括。 MySQL 服务器和客户端应用程序的版本?您提到您仍然可以连接,如果可以,您使用什么命令,您可以从表mysql.user 中查询所有内容并发布吗?此外,查询表mysql.user 以获取plugin info,因为根据 MySQL 文档 (6.4.1.2 Caching SHA-2 Pluggable Authentication),在 MySQL 服务器 8.0 及更高版本的新版本中,服务器默认通过身份验证插件 caching_sha2_password使用新的身份验证方法>。在这种情况下,密码通过安全连接或 RSA public_key 进行加密。然后加密的密码在服务器上通过私有 RSA 密钥解密。例如,来自旧客户端或应用程序中的连接器的连接可能由于不兼容而失败。如果您使用兼容的客户端和身份验证插件caching_sha2_password,客户端和服务器之间的连接可能会失败,原因是:

  1. 密码错误。
  2. 未建立安全 (SSL) 连接。
  3. 客户端没有提供公共 RSA 密钥。

在案例 3 中,引用文档:

客户端用户可以通过两种方式获取 RSA 公钥:

数据库管理员可以提供公钥文件的副本。

可以通过其他方式连接到服务器的客户端用户可以使用 SHOW STATUS LIKE 'Caching_sha2_password_rsa_public_key' 语句和 将返回的键值保存在文件中。

如果您可以使用任何客户端连接到数据库,请获取公钥并使用它来配置另一个客户端。或者,可以从服务器数据目录中获取 RSA 连接的公钥。在 Windows 10 上,它通常是 C:\ProgramData\MySQL\MySQL Server 8.0\Data

example server data directory location on a windows 10 default installation

因此,如果用户设置了 caching_sha2_password 并且您拥有 MySQL 服务器的公共 RSA 密钥,则可以使用它来建立连接。如果用户有mysql_native_password,原因就不同了。

【讨论】:

    猜你喜欢
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2015-12-26
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多