Bài viết này sẽ hướng dẫn nhận biết và xử lý khi không kết nối được tới cơ sở dữ liệu từ xa.
1. Những lỗi cơ bản
Có rất nhiều trường hợp dẫn đến lỗi không thể kết nối tới cơ sở dữ liệu từ xa được và đây là một số lỗi cơ bản:
– Không thể kết nối tới dịch vụ MySQL.
– Người dùng không có quyền truy cập vào hệ thống.
– Cấu hình sai thông số kết nối tới máy chủ.
– Server chặn port của dịch vụ MySQL.
– Không phân full quyền cho tài khoản user và gắn IP kết nối.
– Chưa cấu hình trong file my.cnf của MySQL.
2. Cách kiểm tra lỗi
Thông thường để nhận biết việc không thể kết nối tới cơ sở dữ liệu từ xa được, bạn có thể kiểm tra bằng một số cách cơ bản như sau:
– Sử dụng công cụ Command Prompt trên máy tính cá nhân bằng cách như sau: Start => Run => gõ cmd nhấn Enter để ra giao diện Command Prompt, sau đó tiến hành gõ lệnh để kiểm tra kết nối tới port của dịch vụ MySQL, mặc định thông thường dịch vụ MySQL sẽ lắng nghe trên port 3306, sử dụng lệnh: telnet IP 3306 (ví dụ: bạn kết nối tới Server có IP là 192.168.0.1 thì sẽ như sau: telnet 192.168.0.1 3306).
– Truy cập vào website để xem việc kết nối tới cơ sở dữ liệu từ xa, nếu kết nối không thành công sẽ có những thông báo lỗi như:
- Can’t connect to MySQL server.
- Access denied for user ‘xxx@192.168.0.1’
- ..v…v
– Kiểm tra tình trạng dịch vụ MySQL.
– Kiểm tra iptables có chặn port của dịch vụ MySQL không.
– Kiểm tra lại file cấu hình của dịch vụ MySQL, theo từng hệ điều hành:
- Debian Linux: /etc/mysql/my.cnf.
- Red Hat/ Fedora/ Centos: /etc/my.cnf.
- FreeBSD: /var/db/mysql/my.cnf
– Kiểm tra việc phân quyền user và IP được phép truy cập từ xa.
3. Cách xử lý các trường hợp không thể kết nối tới cơ sở dữ liệu từ xa
– Kiểm tra tình trạng của dịch vụ Mysql bằng lệnh: # service mysql status. Nếu dịch vụ Mysql hiện tại đang stop, bạn có thể start lại dịch vụ.
– Kiểm tra iptables có chặn port của dịch vụ mysql hay không bằng lệnh: # netstat – nltp | grep mysql. Nếu sau khi chạy lệnh này nhưng không tìm thấy mysql có thể dịch vụ iptables của máy chủ đã chặn port của dịch vụ. Khách hàng có thể sử dụng lệnh sau để enable port của dịch vụ MySQL: iptables –A INPUT –i eth0 –p tcp –destination-port 3306 –j ACCEPT.
– Đảm bảo trong file cấu hình MySQL /etc/mysql đã cho phép việc kết nối tới cơ sở dữ liệu từ xa:
- bind-address = IP ( IP của máy chủ cần kết nối)
- port = 3306
– Bạn phải đảm bảo trong lúc tạo user cần phải phân full quyền và gán IP cần remote vào cơ sở dữ liệu. Để có thể tạo một database có user full quyền và gán IP remote, bạn có thể làm theo các bước sau đây:
- mysql -u root (đăng nhập vào MySQL bằng tài khoản root).
- create database databasename; (tạo database tên là databasename, nếu bạn cung cấp tên cụ thể thì điền tên vào)
- grant all privileges on databasename.* to ‘dbuser’@’IP’ identified by ‘password’; (tạo user dbuser với mật khẩu là password và gán full quyền trên database databasename và IP là địa chỉ IP cần remote)
- flush privileges;
- exit
– Kiểm tra các thông số kết nối tới Server MySQL như: database, user, password một cách chính xác.
Chúc bạn thành công!