Cấu hình MySQL trên EC2 AWS
✅ I. CÀI ĐẶT MYSQL TRÊN EC2
Nếu bạn chưa cài MySQL, làm như sau (Ubuntu/Debian):
sudo apt update
sudo apt install mysql-server
Kiểm tra MySQL:
sudo systemctl status mysql
⚙️ II. CẤU HÌNH MYSQL CHO PHÉP KẾT NỐI TỪ XA
1. Sửa mysqld.cnf
Mặc định, MySQL chỉ lắng nghe ở localhost, cần sửa để lắng nghe ở tất cả IP.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Tìm dòng:
bind-address = 127.0.0.1
Sửa thành:
bind-address = 0.0.0.0
Lưu và thoát (Ctrl + O, Enter, Ctrl + X)
2. Khởi động lại MySQL:
sudo systemctl restart mysql
👤 III. TẠO USER CÓ QUYỀN KẾT NỐI TỪ XA
Giả sử bạn muốn tạo user tên remote_user với mật khẩu your_password.
Vào MySQL shell:
sudo mysql -u root -p
Tạo user:
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
✅ % có nghĩa là cho phép kết nối từ mọi IP. Bạn có thể thay thế bằng IP cụ thể nếu muốn bảo mật hơn.
🔒 IV. MỞ PORT 3306 TRONG SECURITY GROUP
- Vào AWS Console → EC2 → Instances → Chọn instance bạn chạy MySQL.
- Trong tab “Security” → Chọn Security Groups
- Vào tab “Inbound rules” → Click “Edit inbound rules”
- Thêm rule:
| Type | Protocol | Port Range | Source |
|---|---|---|---|
| MySQL/Aurora | TCP | 3306 | Your IP hoặc 0.0.0.0/0 |
⚠️ KHÔNG nên dùng 0.0.0.0/0 nếu server là production, trừ khi dùng kết hợp với SSH Tunnel.
🌐 V. KẾT NỐI TỪ XA (KHÔNG SSH TUNNEL)
Mở MySQL Workbench hoặc DBeaver:
- Host: IP public của EC2
- Port: 3306
- User:
remote_user - Password:
your_password
👉 Nếu vẫn không kết nối được:
- Kiểm tra firewall trong EC2 (
ufw status) - Kiểm tra lại port có mở (
sudo netstat -tulnp | grep 3306)
🛡️ VI. (TÙY CHỌN) DÙNG SSH TUNNEL CHO BẢO MẬT
Nếu không muốn mở port 3306 ra ngoài:
- Mở DBeaver hoặc Workbench → cấu hình SSH Tunnel:
- SSH Host: Public IP EC2
- User:
ec2-userhoặcubuntu - Private Key: file
.pemcủa bạn - Local port: 3306
- Remote host:
127.0.0.1 - Remote port: 3306
- Khi kết nối xong, dùng
localhost:3306làm DB host.
🧪 Kiểm tra kết nối từ máy bạn
mysql -h your-ec2-ip -P 3306 -u remote_user -p

