Thiết Lập MySQL Server trên Ubuntu/Debian
Giới Thiệu
MySQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở rất phổ biến, được sử dụng rộng rãi trong các ứng dụng web, hệ thống doanh nghiệp và lưu trữ dữ liệu. Việc cài đặt MySQL Server trên Linux là một kỹ năng cơ bản nhưng thiết yếu đối với các nhà phát triển và quản trị viên hệ thống. Hướng dẫn này sẽ trình bày chi tiết các bước cài đặt và cấu hình ban đầu trên các hệ điều hành dựa trên Debian/Ubuntu.
📋 Thời gian: 20 phút | Độ khó: Cơ bản
Yêu Cầu
Để thực hiện theo hướng dẫn này, bạn cần:
- Một máy chủ hoặc máy ảo chạy hệ điều hành Ubuntu hoặc Debian.
- Quyền truy cập
sudo(người dùng có quyền quản trị). - Kết nối internet ổn định để tải xuống các gói cài đặt.
- Kiến thức cơ bản về sử dụng dòng lệnh Linux.
Các Bước Thực Hiện
Bước 1: Cập nhật hệ thống
Trước khi cài đặt bất kỳ phần mềm nào, việc cập nhật danh sách gói và nâng cấp các gói hiện có trên hệ thống là một thực hành tốt. Điều này đảm bảo bạn đang làm việc với các phiên bản phần mềm mới nhất và tránh các xung đột tiềm ẩn.
sudo apt update # Cập nhật danh sách gói từ kho lưu trữ
sudo apt upgrade -y # Nâng cấp các gói đã cài đặt lên phiên bản mới nhất
Bước 2: Cài đặt MySQL Server
Sau khi hệ thống được cập nhật, bạn có thể tiến hành cài đặt MySQL Server. Gói mysql-server chứa tất cả các thành phần cần thiết để chạy máy chủ cơ sở dữ liệu MySQL.
sudo apt install mysql-server -y # Cài đặt gói mysql-server
Trong quá trình cài đặt, hệ thống có thể yêu cầu bạn thiết lập mật khẩu cho người dùng root của MySQL. Nếu không, bạn sẽ thiết lập nó ở bước sau.
Bước 3: Kiểm tra trạng thái MySQL
Sau khi cài đặt hoàn tất, MySQL Server sẽ tự động khởi động. Bạn có thể kiểm tra trạng thái của dịch vụ để đảm bảo nó đang chạy bình thường.
sudo systemctl status mysql
✅ Bạn sẽ thấy một đầu ra tương tự như sau, với Active: active (running) cho thấy MySQL đang hoạt động:
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since ...
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/8.0/en/
Main PID: ... (mysqld)
Status: "Server is operational"
Tasks: ...
Memory: ...
CPU: ...
CGroup: /system.slice/mysql.service
└─... /usr/sbin/mysqld
Bước 4: Chạy script bảo mật MySQL
Ngay sau khi cài đặt, MySQL Server có một số cấu hình mặc định không an toàn. MySQL cung cấp một script bảo mật để giúp bạn cấu hình các cài đặt này.
sudo mysql_secure_installation
Script này sẽ hướng dẫn bạn qua một loạt các câu hỏi:
- VALIDATE PASSWORD COMPONENT: Bạn có muốn cài đặt thành phần kiểm tra độ mạnh mật khẩu không? (💡 Khuyên dùng
Yesđể tăng cường bảo mật). Nếu chọnYes, bạn sẽ được yêu cầu chọn cấp độ kiểm tra mật khẩu (LOW, MEDIUM, STRONG). - Set root password?: Thiết lập mật khẩu cho người dùng
rootcủa MySQL. Đây là mật khẩu quan trọng nhất, hãy chọn một mật khẩu mạnh và ghi nhớ nó. - Remove anonymous users?: Xóa người dùng ẩn danh. (✅
Yes- Người dùng ẩn danh có thể truy cập cơ sở dữ liệu mà không cần mật khẩu). - Disallow root login remotely?: Ngăn chặn người dùng
rootđăng nhập từ xa. (✅Yes- Đây là một biện pháp bảo mật quan trọng để chỉ cho phéprootđăng nhập cục bộ). - Remove test database and access to it?: Xóa cơ sở dữ liệu
testmặc định. (✅Yes- Cơ sở dữ liệu này không cần thiết cho môi trường sản xuất). - Reload privilege tables now?: Tải lại các bảng đặc quyền để các thay đổi có hiệu lực ngay lập tức. (✅
Yes).
Bước 5: Đăng nhập vào MySQL Shell
Sau khi hoàn tất các bước bảo mật, bạn có thể đăng nhập vào MySQL Shell để kiểm tra và quản lý cơ sở dữ liệu.
mysql -u root -p
Hệ thống sẽ yêu cầu bạn nhập mật khẩu root mà bạn đã thiết lập ở Bước 4. Sau khi đăng nhập thành công, bạn sẽ thấy dấu nhắc mysql>, cho phép bạn thực hiện các lệnh SQL.
Để thoát khỏi MySQL Shell, gõ exit;.
Bước 6: Tạo người dùng và cơ sở dữ liệu mới (Thực hành tốt nhất)
⚠️ Không nên sử dụng người dùng root cho các ứng dụng của bạn. Thay vào đó, hãy tạo một người dùng chuyên dụng với các đặc quyền cần thiết cho từng cơ sở dữ liệu.
Đăng nhập lại vào MySQL Shell với người dùng root:
mysql -u root -p
Sau đó, thực hiện các lệnh SQL sau để tạo một cơ sở dữ liệu mới và một người dùng mới, rồi cấp quyền cho người dùng đó trên cơ sở dữ liệu cụ thể:
CREATE DATABASE mydatabase;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'MyStrongPassword';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
- Thay thế
mydatabasebằng tên cơ sở dữ liệu bạn muốn. - Thay thế
myuserbằng tên người dùng bạn muốn tạo. - Thay thế
MyStrongPasswordbằng một mật khẩu mạnh cho người dùng mới.
Bây giờ bạn có thể đăng nhập bằng người dùng mới:
mysql -u myuser -p
Troubleshooting
-
MySQL không khởi động sau khi cài đặt:
- Kiểm tra nhật ký hệ thống để tìm lỗi:
sudo journalctl -u mysql - Kiểm tra dung lượng đĩa trống.
- Thử khởi động lại dịch vụ:
sudo systemctl restart mysql.
- Kiểm tra nhật ký hệ thống để tìm lỗi:
-
Không thể kết nối từ xa (Remote Connection):
- Theo mặc định, MySQL chỉ cho phép kết nối từ
localhost. Để cho phép kết nối từ xa, bạn cần chỉnh sửa file cấu hình MySQL:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf - Tìm dòng
bind-address = 127.0.0.1và thay đổi nó thànhbind-address = 0.0.0.0(cho phép kết nối từ mọi địa chỉ IP) hoặc địa chỉ IP cụ thể của máy chủ của bạn. - Lưu file và khởi động lại MySQL:
sudo systemctl restart mysql. - ⚠️ Đảm bảo rằng tường lửa của bạn (ví dụ: UFW) cho phép truy cập qua cổng 3306 (cổng mặc định của MySQL):
sudo ufw allow 3306/tcp
sudo ufw reload - Kiểm tra rằng người dùng bạn muốn kết nối từ xa có quyền truy cập từ địa chỉ IP đó (ví dụ:
CREATE USER 'myuser'@'%' IDENTIFIED BY 'password';hoặcGRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'%').
- Theo mặc định, MySQL chỉ cho phép kết nối từ
-
Quên mật khẩu
rootcủa MySQL:- Đây là một tình huống phức tạp hơn. Bạn sẽ cần dừng dịch vụ MySQL, khởi động nó ở chế độ an toàn (skip grant tables), sau đó đặt lại mật khẩu. Có nhiều hướng dẫn chi tiết về cách thực hiện việc này trên mạng, tìm kiếm "reset mysql root password ubuntu" để có các bước cụ thể.
Kết Luận
Bạn đã thành công cài đặt và cấu hình cơ bản MySQL Server trên hệ thống Linux của mình. Các bước này bao gồm cập nhật hệ thống, cài đặt MySQL, chạy script bảo mật và tạo người dùng/cơ sở dữ liệu mới theo các thực hành tốt nhất.
💡 Best Practices:
- Bảo mật: Luôn sử dụng mật khẩu mạnh, giới hạn quyền truy cập của người dùng và không sử dụng người dùng
rootcho các ứng dụng. - Cập nhật thường xuyên: Đảm bảo MySQL Server và hệ điều hành của bạn luôn được cập nhật để vá các lỗ hổng bảo mật.
- Sao lưu dữ liệu: Thiết lập một chiến lược sao lưu định kỳ cho cơ sở dữ liệu của bạn.
- Giám sát: Theo dõi hiệu suất và nhật ký của MySQL Server để phát hiện sớm các vấn đề.
Với MySQL Server đã được thiết lập, bạn có thể bắt đầu triển khai các ứng dụng web hoặc hệ thống yêu cầu cơ sở dữ liệu.