Thông thường quyền truy cập từ xa vào máy chủ cơ sở dữ liệu MySQL bị vô hiệu hóa vì lý do bảo mật. Tuy nhiên, đôi khi bạn cần cung cấp quyền truy cập từ xa vào máy chủ cơ sở dữ liệu MySQL từ nhà hoặc máy chủ web. Bạn có thể làm theo các bước sau để kích hoạt nó.
Bước 1:Đăng nhập bằng SSH (nếu máy chủ nằm ngoài môi trường hoặc mạng nội bộ của bạn)
Đầu tiên, đăng nhập qua ssh vào máy chủ cơ sở dữ liệu MySQL từ xa từ windows bằng PuTTy hoặc từ Linux bằng SSH
Bước 2:Chỉnh sửa tệp my.cnf
Sau khi kết nối, bạn cần chỉnh sửa tệp cấu hình máy chủ MySQL my.cnf bằng trình soạn thảo văn bản như vi:
- Trên Debian Linux tệp được đặt tại /etc/mysql/my.cnf vị trí.
- Trên Red Hat Linux / Fedora / Centos Linux tệp được đặt tại /etc/my.cnf vị trí.
Để chỉnh sửa /etc/my.cnf, hãy chạy:
# vi /etc/my.cnf
- Trên Windows , tệp my.ini nằm tại C:\ Program Files \ MySQL \ MySQL Server X.Y (X.Y là số phiên bản của máy chủ MySQL)
Đối với windows, hãy mở tệp my.ini trong notepad
Bước 3:Sau khi tệp được mở, tìm dòng có nội dung như sau
[mysqld]
Đảm bảo rằng mạng bỏ qua dòng được nhận xét (hoặc xóa dòng) và thêm dòng sau
bind-address=YOUR-SERVER-IP
Ví dụ:nếu IP máy chủ MySQL của bạn là 173.234.21.12 thì toàn bộ khối sẽ giống như sau:
[mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/English bind-address = 173.234.21.12 # skip-networking ....
Ở đâu,
- địa chỉ ràng buộc :Địa chỉ IP để liên kết.
- bỏ qua mạng :Hoàn toàn không lắng nghe các kết nối TCP / IP. Tất cả các tương tác với mysqld phải được thực hiện thông qua Unix socket. Tùy chọn này rất được khuyến khích cho các hệ thống chỉ cho phép các yêu cầu cục bộ. Vì bạn cần cho phép kết nối từ xa, dòng này nên được xóa khỏi my.cnf hoặc nhận xét.
Bước 4:Lưu và đóng tệp
Trên Debian / Ubuntu Linux, nhập lệnh sau để khởi động lại máy chủ mysql:
# /etc/init.d/mysql restart
Trên RHEL / CentOS / Fedora / Scientific Linux, nhập lệnh sau để khởi động lại máy chủ mysql:
# /etc/init.d/mysqld restart
Trên Windows, mở dấu nhắc lệnh với tư cách Quản trị viên và nhập
net stop MySQL net start MySQL
Bước 5:Cấp quyền truy cập vào địa chỉ IP từ xa
Cấp quyền truy cập vào cơ sở dữ liệu mới
Nếu bạn muốn thêm cơ sở dữ liệu mới có tên foo cho thanh người dùng và IP từ xa 162.72.20.23 thì bạn cần nhập các lệnh sau tại dấu nhắc mysql:
mysql> CREATE DATABASE foo; mysql> GRANT ALL ON foo.* TO bar@'162.72.20.23' IDENTIFIED BY 'PASSWORD';
Cấp quyền truy cập vào cơ sở dữ liệu hiện có
Giả sử rằng bạn luôn thực hiện kết nối từ IP từ xa có tên 162.72.20.23 tới cơ sở dữ liệu có tên là webdb cho webadmin của người dùng. Để cấp quyền truy cập vào địa chỉ IP này cho cơ sở dữ liệu hiện có, hãy nhập lệnh sau tại dấu nhắc mysql:
mysql> update db set Host='162.72.20.23' where Db='webdb'; mysql> update user set Host='162.72.20.23' where user='webadmin';
Bước 6:Đăng xuất MySQL
Gõ lệnh exit để đăng xuất khỏi mysql:
mysql> exit
Bước 7:Mở cổng 3306
Quy tắc iptables mẫu để mở tường lửa iptables Linux
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
HOẶC chỉ cho phép kết nối từ xa từ máy chủ web của bạn đặt tại 162.72.20.23:
/sbin/iptables -A INPUT -i eth0 -s 162.72.20.23 -p tcp --destination-port 3306 -j ACCEPT
HOẶC chỉ cho phép kết nối từ xa từ mạng con lan của bạn 192.168.1.0/24:
/sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT
Cuối cùng lưu tất cả các quy tắc (lệnh cụ thể RHEL / CentOS):
# service iptables save
Trên windows, đi tới Control Panel> Windows Firewall> Add inbound rule cho cổng 3306
Bước 8:Kiểm tra quyền truy cập từ xa vào cơ sở dữ liệu MySQL
Từ hệ thống từ xa hoặc máy tính để bàn của bạn, hãy nhập lệnh sau:
$ mysql -u webadmin –h 173.234.21.12 –p
Trên windows, chạy chương trình dòng lệnh MySQL và đăng nhập với tư cách quản trị viên bằng cách nhập lệnh sau từ thư mục gốc MySQL (ví dụ:Program Files \ MySQL \ MySQL Server 5.5 \ bin):
C:\Program Files\MySQL\MySQL Server 5.5\bin>mysql -u webadmin –h 173.234.21.12 –p
Ở đâu,