Bật quyền truy cập từ xa (Cấp) Trang chủ / Hướng dẫn / Mysql / Bật quyền truy cập từ xa (Cấp) Nếu bạn cố gắng kết nối với máy chủ mysql của mình từ máy từ xa và gặp lỗi như bên dưới, bài viết này là dành cho bạn.
LRI 1130 (HY000): Máy chủ '1.2.3.4' không được phép kết nối với máy chủ MySQL này
Thay đổi cấu hình mysql
Bắt đầu với việc chỉnh sửa tập tin cấu hình mysql
vim /etc/mysql/my.cnf
Nhận xét ra các dòng sau.
#bind-address = 127.0.0.1
#skip-networking
Nếu bạn không tìm thấy đường dây bỏ qua, hãy thêm nó và nhận xét nó.
Khởi động lại máy chủ mysql.
~ /etc/init.d/mysql restart
Thay đổi đặc quyền GRANT
Bạn có thể ngạc nhiên khi thấy ngay cả sau khi thay đổi ở trên, bạn không nhận được quyền truy cập từ xa hoặc có quyền truy cập nhưng không thể vào tất cả các cơ sở dữ liệu.
Theo mặc định, tên người dùng và mật khẩu mysql bạn đang sử dụng được phép truy cập máy chủ mysql cục bộ. Vì vậy, cần phải cập nhật đặc quyền.
Chạy một lệnh như dưới đây để truy cập từ tất cả các máy. (Thay thế USERNAME
và PASSWORD
bằng thông tin đăng nhập của bạn.)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Chạy một lệnh như dưới đây để cấp quyền truy cập từ IP cụ thể. (Thay thế USERNAME
và PASSWORD
bằng thông tin đăng nhập của bạn.)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Bạn có thể thay thế 1.2.3.4 bằng IP của mình. Bạn có thể chạy lệnh trên nhiều lần để truy cập GRANT từ nhiều IP.
Bạn cũng có thể chỉ định riêng USERNAME
& PASSWORD
để truy cập từ xa.
Bạn có thể kiểm tra kết quả cuối cùng bằng cách:
SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";
Cuối cùng, bạn cũng có thể cần phải chạy:
mysql> FLUSH PRIVILEGES;
Kiểm tra kết nối
Từ thiết bị đầu cuối / dòng lệnh:
mysql -h HOST -u USERNAME -pPASSWORD
Nếu bạn nhận được một vỏ mysql, đừng quên chạy cơ sở dữ liệu hiển thị; để kiểm tra xem bạn có quyền đặc quyền từ các máy từ xa không.
Tiền thưởng: Thu hồi quyền truy cập
Nếu bạn vô tình cấp quyền truy cập cho người dùng, tốt hơn là nên thu hồi tùy chọn tiện dụng.
Sau đây sẽ thu hồi tất cả các tùy chọn cho USERNAME từ tất cả các máy:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';
Following will revoke all options for USERNAME from particular IP:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
Its better to check information_schema.user_privileges table after running REVOKE command.
Nếu bạn thấy đặc quyền USAGE sau khi chạy lệnh REVOKE, thì tốt thôi. Nó là tốt như không có đặc quyền nào cả. Tôi không chắc chắn nếu nó có thể bị thu hồi.