Việc triển khai MySQL 8.0 trên hệ điều hành CentOS 7 có thể thực hiện qua nhiều phương pháp: biên dịch từ mã nguồn, cài đặt thủ công bằng rpm, hoặc sử dụng trình quản lý gói yum. Trong môi trường sản xuất hoặc máy chủ không kết nối Internet ổn định, việc sử dụng gói RPM đã được biên dịch sẵn mang lại lợi ích rõ rệt về tính kiểm soát, khả năng hoạt động ngoại tuyến và độ tin cậy cao — đặc biệt khi các phụ thuộc đã được xác minh trước.
Chuẩn bị môi trường
- Hệ điều hành: CentOS 7.8 (cài đặt tối thiểu)
- Quyền: root
- Phiên bản MySQL: Community Edition 8.0.16
Tải gói phân phối dạng bundle từ kho lưu trữ chính thức của MySQL:
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar
Giải nén gói
Lưu ý: Không dùng tùy chọn -z vì đây là file .tar, không phải .tar.gz:
tar -xvf mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar
Sau giải nén, thư mục chứa 8 tệp RPM tương ứng với các thành phần khác nhau của MySQL.
Kiểm tra xung đột với MariaDB
Một số bản phân phối CentOS 7 tích hợp sẵn mariadb-libs, gây xung đột với thư viện MySQL. Kiểm tra sự tồn tại của gói này:
rpm -qa | grep -i mariadb
Nếu kết quả trả về:
mariadb-libs-5.5.65-1.el7.x86_64
Thực hiện gỡ bỏ bắt buộc để tránh lỗi liên kết thư viện:
rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64
Cài đặt theo thứ tự phụ thuộc
Để đảm bảo quá trình cài đặt diễn ra trơn tru, cần tuân thủ thứ tự sau:
mysql-community-commonmysql-community-libsmysql-community-clientmysql-community-server
Các gói còn lại như -devel, -embedded hoặc -test là tùy chọn và không bắt buộc:
rpm -ivh mysql-community-common-8.0.16-2.el7.x86_64.rpm<br>rpm -ivh mysql-community-libs-8.0.16-2.el7.x86_64.rpm<br>rpm -ivh mysql-community-client-8.0.16-2.el7.x86_64.rpm<br>rpm -ivh mysql-community-server-8.0.16-2.el7.x86_64.rpm
Kích hoạt và khởi động dịch vụ
systemctl start mysqld<br>systemctl status mysqld
Mật khẩu khởi tạo cho tài khoản root@localhost được sinh ngẫu nhiên và ghi vào nhật ký hệ thống:
grep 'temporary password' /var/log/mysqld.log
Ví dụ đầu ra:
2020-09-02T05:30:06.739311Z 5 [Note] [MY-010454] A temporary password is generated for root@localhost: tC0;+kB?BqCg
Đăng nhập và thiết lập mật khẩu mới
Sử dụng mật khẩu tạm thời để đăng nhập:
mysql -u root -p
Sau khi đăng nhập thành công, hệ thống yêu cầu thay đổi mật khẩu ngay lập tức do chính sách bảo mật mặc định của MySQL 8.0. Mật khẩu mới phải đáp ứng các tiêu chí: tối thiểu 8 ký tự, bao gồm chữ hoa, chữ thường, chữ số và ký tự đặc biệt.
Ví dụ đặt mật khẩu thành SecurePass!2024:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'SecurePass!2024';
Cấu hình truy cập từ xa
Mặc định, tài khoản root chỉ cho phép kết nối từ localhost. Để cấp quyền truy cập từ bên ngoài, thực hiện trong phiên kết nối MySQL:
USE mysql;<br>UPDATE user SET host='%' WHERE user='root' AND host='localhost';<br>FLUSH PRIVILEGES;
Mở cổng tường lửa
MySQL sử dụng cổng mặc định 3306/tcp. Trên CentOS 7 sử dụng firewalld, thực hiện:
firewall-cmd --permanent --add-port=3306/tcp<br>firewall-cmd --reload
Lưu ý: Với máy chủ đám mây (AWS EC2, Alibaba Cloud, v.v.), cần cấu hình thêm Security Group hoặc Network ACL để mở cổng tương ứng.
Tùy chỉnh cấu hình (tùy chọn)
Tệp cấu hình chính nằm tại /etc/my.cnf. Có thể chỉnh sửa để thay đổi đường dẫn dữ liệu (datadir), nhật ký (log-error), hoặc các tham số hiệu năng như innodb_buffer_pool_size.
vi /etc/my.cnf
Sau khi hoàn tất, hệ thống MySQL đã sẵn sàng cho kết nối từ các công cụ quản trị như DBeaver, MySQL Workbench hoặc ứng dụng phía người dùng.