Trong nhiều tháng, tôi đã kết nối với phiên bản MySQL đang chạy trên máy chủ thử nghiệm cục bộ của chúng tôi thông qua một đường hầm SSH mà không gặp sự cố nào. Mặc dù vậy, đột nhiên, không có thay đổi nào tôi có thể nghĩ ra, máy chủ đã bắt đầu từ chối nỗ lực đăng nhập từ Sequel Pro với lỗi:
Không thể kết nối với máy chủ 127.0.0.1 vì quyền truy cập bị từ chối.
Kiểm tra kỹ tên người dùng và mật khẩu của bạn và đảm bảo rằng quyền truy cập từ vị trí hiện tại của bạn được cho phép.
MySQL cho biết: Truy cập bị từ chối đối với người dùng 'root' @ 'localhost' (sử dụng mật khẩu: CÓ)
Tôi có thể đăng nhập từ thiết bị đầu cuối khi được kết nối trực tiếp với máy chủ thông qua SSH, không phải thông qua một đường hầm SSH. Vấn đề không phải là cụ thể đối với Sequel Pro hoặc chỉ bản thân tôi, tôi cũng gặp lỗi tương tự khi kết nối qua MySQL Workbench như những người khác trong văn phòng. Tôi đã đặt lại mật khẩu vớimysqladmin
chỉ vì mục đích của sự tỉnh táo, đó chắc chắn không phải là vấn đề.
Khi tôi bắt đầu tìm hiểu thêm, tôi nhận thấy rằng lỗi đã báo cáo máy chủ là "localhost", thay vì "127.0.0.1" mà tôi đã nhập trong Sequel Pro. Một người bạn cho rằng có lẽ đó chỉ là xử lý lỗi xấu, nhưng có vẻ lạ khi có sự khác biệt đáng kể giữa localhost và 127.0.0.1 trong MySQL.
Trong nỗ lực khắc phục sự cố đường hầm, tôi đã cấp quyền truy cập vào root @%, để tôi có thể kết nối trực tiếp. Điều này hoạt động với hầu hết các phần, tôi có thể xem dữ liệu bảng, tạo cơ sở dữ liệu mới, v.v. Vấn đề duy nhất là khi tôi đến để tạo người dùng, tôi gặp lỗi:
Truy cập bị từ chối cho người dùng 'root' @ '%' (sử dụng mật khẩu: CÓ)
Điều kỳ lạ là người dùng thực sự được tạo ra, tôi nghĩ đó chỉ là một vấn đề với sự cho phép. Một lần nữa, từ thiết bị đầu cuối, tôi có thể làm bất cứ điều gì khi đăng nhập bằng root.
Bất cứ ai cũng có thể giúp làm sáng tỏ lý do tại sao các kết nối đường hầm và (có thể) các lệnh cấp đang nhận được lỗi từ chối truy cập?
Để tham khảo MySQ là phiên bản 5.6.16 với hầu hết các cài đặt mặc định, được cài đặt qua Homebrew trên máy MAC OS X Server.
Cập nhật
Đây là danh sách các máy chủ mà root hiện đang được cấp quyền truy cập vào:
mysql> select host,user from mysql.user where user='root';
+----------------+------+
| host | user |
+----------------+------+
| % | root |
| 127.0.0.1 | root |
| ::1 | root |
| localhost | root |
+----------------+------+
4 rows in set (0.00 sec)
Theo tôi hiểu, hàng đầu tiên ("%") có thực sự khiến những người khác trở nên dư thừa?
Cập nhật 2
Đã sửa lỗi cấp; người dùng root @% chưa được cấp tất cả các đặc quyền với phần bổ sung with grant option
ở cuối, vì vậy nó có thể làm mọi thứ trừ cấp. Mặc dù vậy, vẫn muốn biết lý do tại sao các đường hầm SSH bị từ chối.