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

Rob*_*ert 5 mysql mysqldbcompare

我正在尝试使用该mysqldbcompare工具,但收到连接错误:

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

不过,我可以使用mysql和连接.我设置我的信用卡mysql_config_editor --host=<ip> --user=root --port=3306 --password并使用mysql命令测试,包括和不传递所有args(mysql -u root -p -h <ip> -P 3306).

我检查了服务器的绑定地址,并查看了服务器错误日志,但它只是重申了连接被拒绝的消息.我在线搜索(以及SO),但一直找不到任何东西.

任何帮助表示赞赏.

wal*_*ter 0

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

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

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

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