Hướng dẫn cấu hình Remote MySQL trên Linux

6
0
remote sql linux

Bước 1: SSH vào server Linux

Để thực hiện bạn cần ssh vào máy chủ với quyền root. Nếu bạn chưa biết cách SSH bạn có thể thực hiện theo hướng dẫn bên dưới nhé.

Bước 2: Điều chỉnh file cấu hình mysql

cp  /etc/mysql/my.cnf  /etc/mysql/my.cnf.bak
 /etc/mysql/my.cnf

Đầu tiên bạn hãy mở file my.cnf lên. Sau đó tìm giá trị bind-address = 127.0.0.1, với dòng này có nghĩa là máy chủ sẽ chỉ tìm kiếm các kết nối cục bộ. Và bạn cần thay đổi giá trị này bằng IP cố định của bạn, hoặc sử dụng *, :: hoặc 0.0.0.0 để cho phép tất cả các kết nối.

anh 17

Bước 3: Cấu hình Firewall

  • Đối với UFW (Uncomplicated Firewall)

UFW là công cụ tường lửa mặc định trong Ubuntu, bạn cần mở cho phép IP hoạt động trên port 3306

ufw allow from remote_ip_address to any port 3306
  • Đối với FirewallD

FirewallD là ứng dụng firewall mặc định của CentOS. Bạn cần tạo một zone mới để cho phép IP truy cập.

firewall-cmd --new-zone=mysqlrule --permanent
firewall-cmd --reload
firewall-cmd --permanent --zone=mysqlrule --add-source=11.22.33.44
firewall-cmd --permanent --zone=mysqlrule --add-port=3306/tcp
firewall-cmd --reload
  • Đối với iptables

iptables có sẵn trên hầu hết các bản phân phối mặc định của Linux. Bạn sử dụng lệnh sau để mở

#Cho phép tất cả kết nối qua cổng 3306
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT 
# Cho phép IP được chỉ định kết nối qua cổng 3306
iptables -A INPUT -p tcp -s 11.22.33.44 --dport 3306 -j ACCEPT
#Lưu lại cấu hình
service iptables save

Bước 4: Bật Remote MySQL Server

Trong bài viết này mình sẽ chủ thích một số dòng và bạn hãy thay đổi bằng thông tin của bạn.

  • user_1: Tên user
  • database1: Tên Database
  • %: Giá trị % sẽ cho phép tất cả IP access vào
  • 11.22.33.44: IP được chỉ định access vào
  • *.: Áp dụng toàn bộ Database

Trường hợp 1: Cho phép kết nối với tất cả IP và Tất cả User

Ở trường hợp này sẽ cho phép bạn kết nối với tất cả IP access vào và sẽ nhìn thấy tất cả các Database trên đó. Trường hợp này ít dùng vì mang tính nguy hiểm do access được tất cả DB

mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'user_1'@'%' IDENTIFIED BY 'Mat_Khau_User_Database' WITH GRANT OPTION;
FLUSH PRIVILEGES;
CleanShot 2022 06 28 at 13.24.52

Trường hợp 2: Cho phép kết nối với tất cả IP với Database nhất định

Trường hợp này thường sử dụng nhiều. Khi bạn sử dụng trường hợp này thì tất cả IP sẽ access được và chỉ access vào duy nhất Database chỉ định khi remote qua user/passwd

mysql -u root -p
GRANT ALL PRIVILEGES ON database1.* TO 'user_1'@'%' IDENTIFIED BY 'Mat_Khau_User_Database' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Trường hợp 3: Cho phép kết nối với IP và Database cố định

Trường hợp này khi bạn cấu hình chỉ định thì chỉ duy nhất IP bạn chỉ định mới được quyền access vào. Với các IP khác sẽ không thể truy cập vào được.

mysql -u root -p
GRANT ALL PRIVILEGES ON database1.* TO 'user_1'@'11.22.33.44' IDENTIFIED BY 'Mat_Khau_User_Database' WITH GRANT OPTION;
FLUSH PRIVILEGES;
CleanShot 2022 06 28 at 13.30.58

Sau mỗi thiết lập bạn cần khởi động lại dịch vụ MySQL để áp dụng thay đổi. Bạn hãy khởi động với lệnh sau

systemctl restart mysql

Bước 5: Bật Remote MySQL Server với DB có sẵn

Đối với Database có sẵn bạn sử dụng cách này để cập nhật quyền.

mysql -u root -p
update db set Host=’11.22.33.44' where Db='yourDB';
update user set Host=’11.22.33.44' where user='user1';
Đỗ Trung Quân
WRITTEN BY

Đỗ Trung Quân

Nguồn nội dung này đến từ Website DoTrungQuan.info

Trả lời