2017-11-14 34 views
5

Tôi đang cố gắng để sử dụng công cụ mysqldbcompare nhưng nhận được một lỗi kết nối:truy cập mysqldbcompare từ chối nhưng lệnh mysql làm việc

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

tôi có thể sử dụng mysql và kết nối tốt, mặc dù. Tôi thiết lập số tín dụng của mình bằng cách sử dụng mysql_config_editor --host=<ip> --user=root --port=3306 --password và được kiểm tra bằng lệnh mysql có và không chuyển tất cả số arg (mysql -u root -p -h <ip> -P 3306).

Tôi đã kiểm tra địa chỉ liên kết của máy chủ và xem nhật ký lỗi máy chủ nhưng nó chỉ nhắc lại thông báo từ chối kết nối. Tôi đã tìm kiếm trực tuyến (và trên SO) nhưng không thể tìm thấy bất cứ điều gì.

Mọi trợ giúp đều được đánh giá cao.

Trả lời

0

Tôi nghĩ rằng lệnh này so sánh mysql không sử dụng cấu hình mặc định, cố gắng buộc người dùng và mật khẩu vào dòng lệnh.

0

Khi bạn gặp một truy cập lỗi từ chối nó có nghĩa kết nối TCP đã được thành lập, nhưng mật khẩu mà bạn cung cấp là sai cho 'User'@'Host' (một cặp tài-Host là một tài khoản thực để xác thực MySQL, không phải là một đơn tên người dùng).

Giả sử máy chủ MySQL chạy trên 172.0.0.8 và địa chỉ cục bộ của bạn là 172.0.0.5.

  1. Hãy xem mysql.user bởi: SELECT * FROM mysql.user\G;. Nếu bạn không thể tìm thấy một trong hai cặp Người dùng-Máy chủ này: 'root'@'172.0.0.5''root'@'%', điều đó có nghĩa là không có tài khoản như vậy. Vì vậy, bạn thất bại.
  2. Đồng thời kiểm tra mật khẩu của cặp Người dùng-Máy chủ lưu trữ tồn tại từ đầu ra ở trên.
  3. Bây giờ, kết nối là tốt, tài khoản tồn tại, mật khẩu là đúng, cơ hội duy nhất cho một lỗi như vậy là: mysqldbcompare không sử dụng các đối số bạn đã cung cấp!
  4. Hãy thử workaround khác như: mysqldbcompare --server1=root:[email protected]:3306 --skip-data-check db1:db2

Kiểm tra tất cả các bước thứ bước, và bạn sẽ tìm ra cách.

Các vấn đề liên quan