Cài đặt MySQL 8.0 trên CentOS 7 bằng gói RPM

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:

  1. mysql-community-common
  2. mysql-community-libs
  3. mysql-community-client
  4. mysql-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.

Thẻ: MySQL8 centos7 RPM firewalld linux-admin

Đăng vào ngày 16 tháng 10 lúc 13:28