2017-11-14 64 views
5

Próbuję użyć narzędzia mysqldbcompare ale otrzymuję błąd połączenia:mysqldbcompare odmowa dostępu, ale polecenie mysql działa

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

mogę używać mysql i połączyć w porządku, choć. Skonfigurowałem swoje credo używając mysql_config_editor --host=<ip> --user=root --port=3306 --password i przetestowałem je za pomocą polecenia mysql zi bez podania wszystkich argumentów (mysql -u root -p -h <ip> -P 3306).

Sprawdziłem adres powiązania serwera i zajrzałem do dzienników błędów serwera, ale po prostu powtórzono komunikat odmowy połączenia. Szukałem w Internecie (i na SO), ale nie udało mi się znaleźć niczego.

Każda pomoc jest doceniana.

Odpowiedz

0

Myślę, że to polecenie porównania mysql nie używać domyślnej konfiguracji, spróbuj zmusić użytkownika i hasło do linii poleceń.

0

Kiedy napotkał odmowa dostępu błędu oznacza to połączenie TCP zostało ustalone, ale hasło podałeś jest niewłaściwe dla 'User'@'Host' (pary User-Host jest prawdziwym konto uwierzytelniania MySQL, a nie pojedynczy Nazwa Użytkownika).

Załóżmy, że serwer MySQL działa pod numerem 172.0.0.8, a Twój lokalny adres to 172.0.0.5.

  1. Spójrz na mysql.user przez: SELECT * FROM mysql.user\G;. Jeśli nie możesz znaleźć żadnej z dwóch par User-Host: 'root'@'172.0.0.5' i 'root'@'%', oznacza to, że nie ma takiego konta. Więc zawiodłeś.
  2. Sprawdź również hasło istniejącej pary User-Host z powyższego wyjścia.
  3. Teraz połączenie jest w porządku, konto istnieje, hasło jest prawidłowe, jedyną szansą na taki błąd jest: mysqldbcompare nie użył podanych argumentów!
  4. Spróbuj inne obejście takiego: mysqldbcompare --server1=root:[email protected]:3306 --skip-data-check db1:db2

Sprawdź wszystkie te rzeczy krok po kroku, a będziesz zrozumieć.