mysqldbcompare 访问被拒绝,但 mysql 命令有效

mysqldbcompare access denied but mysql command works

我正在尝试使用 mysqldbcompare 工具,但出现连接错误:

$ mysqldbcompare --server1=client --skip-data-check db1:db2
# server1 on <ip>: ...
ERROR: Access denied for user 'root'@'<ip>' (using password: YES)

不过我可以使用 mysql 并且连接正常。我使用 mysql_config_editor --host=<ip> --user=root --port=3306 --password 设置了我的信用,并使用 mysql 命令测试了是否传递了所有参数 (mysql -u root -p -h <ip> -P 3306).

我已经检查了服务器的绑定地址并查看了服务器错误日志,但它只是重复一条连接被拒绝的消息。我在网上(和 SO 上)搜索过,但什么也没找到。

感谢任何帮助。

我认为 mysql 的这个命令比较不使用默认配置,尝试将用户和密码强制输入命令行。

当您遇到访问被拒绝的错误时,这意味着TCP 连接已经建立,但是您提供的密码错误'User'@'Host'(User-Host 对是用于 MySQL 身份验证的真实帐户,而不是单个用户名)。

假设 MySQL 服务器在 172.0.0.8 上运行并且您的本地地址是 172.0.0.5

  1. 通过SELECT * FROM mysql.user\G; 查看mysql.user。如果您找不到这两个用户-主机对中的任何一个:'root'@'172.0.0.5''root'@'%',则表示没有这样的帐户。所以你失败了。
  2. 同时从上面的输出中检查现有用户主机对的密码。
  3. 现在,连接正常,帐户存在,密码正确,出现此类错误的唯一机会是:mysqldbcompare 没有使用您提供的参数!
  4. 尝试其他解决方法,例如:mysqldbcompare --server1=root:password@172.0.0.8:3306 --skip-data-check db1:db2

一步步检查所有这些东西,你就会明白的。