Mặc định tính năng truy cập từ xa bị cấm trên máy chủ cơ sở dữ liệu
Truy cập MySQL từ xa
Bạn cần phải gõ các lệnh sau để bật tính năng truy cập từ xa.
Bước # 1: Truy cập sử dụng SSH (nếu máy chủ bên ngoài trung tâm dữ liệu của bạn)
Đầu tiên, đăng nhập bằng
ssh user@mysql.nixcraft.i
Bước # 2: Sửa tập tin my.cnf
Sau khi đã kết nối thành công bạn cần sửa tập tin cấu hình MySQL là my.cnf bằng cách sử dụng một công cụ soạn thảo ví dụ vi.
- Nếu bạn sử dụng Debian Linux thì tập tin cấu hình được lưu ở /etc/mysql/my.cnf
- Nếu bạn sử dụng Red Hat Linux/Fedora/Centos Linux thì tập tin cấu hình được lưu ở /etc/my.cnf
- Nếu bạn sử dụng FreeBSD thì tập tin cấu hình được lưu ở /var/db/mysql/my.cnf
Sửa /etc/my.cnf, bằng cách gõ lệnh:
# vi /etc/my.cnf
Bước # 3: Khi đã mở tập tin, tìm các dòng sau
[mysqld]
Chắc chắn là dòng skip-
bind-
Ví dụ, nếu máy của MySQL của bạn có IP là 65.55.55.2 thì nội dung cấu hình sẽ đặt 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
bind-address = 65.55.55.2
# skip-networking
….
..
….
Trong đó,
- bind-address : Địa chỉ IP để gán vào.
- skip-networking : Không lăng nghe bất kỳ kết nối
TCP /IP nào hếtl.Tất cả các tương tác với mysqld phải thông quaUnix sockets. Tùy chọn này được khuyến cáo sử dụng ở những hệ thống mà chỉ chấp nhận yêu cầu cục bộ. Khi bạn cần dùng tính năng truy cập từ xa thì phải bỏ dòng này trong tập tin my.cnf hoặc thêm ký tự # vào trước dòng.
Bước # 4 Lưu và đóng tập tin
Khởi động lại máy chủ MySQL bằng cách gõ:
# /etc/init.d/mysql restart
Bước # 5 Gán quyển truy cập cho địa chỉ IP
Kết nối tới máy chủ MySQL:
$ mysql -u root -p mysql
Gán truy cập tới một cơ sở dữ liệu mới
Nếu bạn muốn thêm một cơ sở dữ liệu mới là foo cho người dùng bar và địa chỉ IP là 202.54.10.20 thì bạn cần gõ lệnh sau:
mysql> CREATE DATABASE foo;
mysql> GRANT ALL ON foo.* TO bar@’202.54.10.20′ IDENTIFIED BY ‘
Làm sao để gán truy cập tới một cơ sở dữ liệu đã có sẵn?
Giả sử bạn luôn tạo kết nối từ IP 202.54.10.20 cho cơ sở dữ liệu webdb của người dùng webadmin, Để gán truy cập cho IP này, bạn gõ dòng lệnh sau:
mysql> update db set Host=’202.54.10.20′ where Db=’webdb’;
mysql> update user set Host=’202.54.10.20′ where user=’webadmin’;
Bước # 5: Thoát khỏi MySQL
Gõ lệnh thoát để thoát khỏi mysql: mysql> exit
Bước # 6: Mở cổng 3306
Bạn cần mở cổng 3306 bằng cách sử dụng iptables hoặc BSD pf
Ví dụ luật của iptables để mở iptables firewall
/sbin/iptables -A INPUT -i eth0 -p tcp –destination-port 3306 -j ACCEPT
hoặc chỉ cho phép truy cập từ xa từ máy chủ web đặt ở 10.5.1.3:
/sbin/iptables -A INPUT -i eth0 -s 10.5.1.3 -p tcp –destination-port 3306 -j ACCEPT
hoặc chỉ cho phép truy cập từ xa từ subnet của mạng 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 luật:
# service iptables save
Ví dụ luật của FreeBSD / OpenBSD pf ( /etc/pf.conf)
pass in on $ext_if proto tcp from any to any port 3306
hoặc chỉ cho phép truy cập từ máy chủ web ở địa chỉ: 10.5.1.3:
pass in on $ext_if proto tcp from 10.5.1.3 to any port 3306 flags S/SA synproxy state
Bước # 7: Kiểm tra
Từ máy hệ thống từ xa hoặc trên máy của bạn gõ lệnh sau:
$ mysql -u webadmin –h 65.55.55.2 –p
Trong đó,
- -u webadmin: webadmin là tên truy cập vào MySQL
- -h IP or hostname: 65.55.55.2 là địa chỉ IP máy chủ MySQL hoặc hostname (FQDN)
- -p : Hỏi mật khẩu
Bạn có thể sử dụng để kết nối tới cổng 3306 để kiểm tra:
$ telnet 65.55.55.2 3306
No comments:
Post a Comment