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

时间:2017-11-14 22:04:10

标签: mysql mysqldbcompare

我尝试使用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上搜索过)但是还没找到任何东西。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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