MySQL là một hệ thống quản lý cơ sở dữ liệu phổ biến được dùng cho các trang web và các ứng dụng máy chủ. Tuy nhiên, MySQL không còn trong kho CentOS 7 và MariaDB đã trở thành hệ thống cơ sở dữ liệu mặc định cung cấp. MariaDB được coi là một sự thay thế drop-in cho MySQL. Nếu bạn vẫn thích MySQL, hướng dẫn này sẽ giới thiệu cách cài đặt, cấu hình và quản lý nó trên một máy chủ chạy CentOS 7. Trước khi bắt đầu Kiểm tra hostname bằng câu lệnh sau: Mã: hostname hostname -f Cập nhật hệ thống của bạn: Mã: yum update Cài đặt MySQL MySQL phải được cài đặt từ kho lưu trữ . Tải về và thêm kho lưu trữ, sau đó cập nhật. Mã: wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update Cài đặt MySQL như bình thường và bắt đầu dịch vụ. Mã: yum install mysql-server systemctl start mysqld MySQL sẽ bind với localhost (127.0.0.1) theo mặc định. Chú ý: Cho phép truy cập không giới hạn đến MySQL trên một IP public không được khuyến khích nhưng bạn có thể thay đổi địa chỉ nó lắng nghe trên bằng cách thay đổi các tham số bind-address trong /etc/my.cnf. Nếu bạn quyết định để bind MySQL đến IP public của bạn, bạn nên thực hiện các quy tắc tường lửa mà chỉ cho phép các kết nối từ các địa chỉ IP cụ thể. Harden MySQL Server Chạy script mysql_secure_installation để giải quyết một số vấn đề bảo mật trong một cài đặt MySQL mặc định. Mã: mysql_secure_installation Bạn sẽ được cung cấp các lựa chọn để thay đổi mật khẩu root MySQL, loại bỏ tài khoản người dùng ẩn danh, vô hiệu hóa đăng nhập root bên ngoài của localhost, và loại bỏ các cơ sở dữ liệu thử nghiệm. Chúng tôi đề nghị bạn trả lời có (yes) cho những tùy chọn. Bạn có thể đọc thêm về các kịch bản trong trong MySQL Reference Manual. Sử dụng MySQL Công cụ tiêu chuẩn để tương tác với MySQL là mysql client đã được cài đặt đồng thời với gói mysql-server. Các MySQL client được sử dụng thông qua một cửa sổ terminal: Root Login Để đăng nhập vào MySQL như là user root: Mã: mysql -u root -p Khi được nhắc, nhập mật khẩu root bạn chỉ định khi chạy script mysql_secure_installation. Sau đó bạn sẽ được trình bày với một tiêu đề chào đón và cửa sổ MySQL như sau: Mã: mysql> Để tạo ra một danh sách các lệnh cho cửa sổ MySQL, nhập \h. Sau đó bạn sẽ thấy: Mã: List of all MySQL commands: Note that all text commands must be first on line and end with ';' ? (\?) Synonym for `help'. clear (\c) Clear command. connect (\r) Reconnect to the server. Optional arguments are db and host. delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as new delimiter. edit (\e) Edit command with $EDITOR. ego (\G) Send command to mysql server, display result vertically. exit (\q) Exit mysql. Same as quit. go (\g) Send command to mysql server. help (\h) Display this help. nopager (\n) Disable pager, print to stdout. notee (\t) Don't write into outfile. pager (\P) Set PAGER [to_pager]. Print the query results via PAGER. print (\p) Print current command. prompt (\R) Change your mysql prompt. quit (\q) Quit mysql. rehash (\#) Rebuild completion hash. source (\.) Execute an SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. system (\!) Execute a system shell command. tee (\T) Set outfile [to_outfile]. Append everything into given outfile. use (\u) Use another database. Takes database name as argument. charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets. warnings (\W) Show warnings after every statement. nowarning (\w) Don't show warnings after every statement. For server side help, type 'help contents' mysql> Tạo một user MySQL và cơ sở dữ liệu (database) Trong ví dụ dưới đây, TestDB là tên của cơ sở dữ liệu, testuser là tên của user và pasword là mật khẩu của user. Mã: create database testdb; create user 'testuser'@'localhost' identified by 'password'; grant all on testdb.* to 'testuser' identified by 'password'; Bạn có thể rút ngắn quá trình này bằng cách tạo ra user đồng thời thực hiện việc chỉ định quyền cho user đối với cơ sở dữ liệu: Mã: create database testdb; grant all on testdb.* to 'testuser' identified by 'password'; Sau đó thoát khỏi MySQL. Mã: exit Tạo một table thử nghiệm Đăng nhập lại như testuser. Mã: mysql -u testuser -p Tạo một table thử nghiệm tên là customers. Mã: use testdb; create table customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT); Câu lệnh trên sẽ thực hiện việc tạo ra một table với một trường customer_id với giá trị sử dụng kiểu dữ liệu INT (tự động tăng cho các record mới, được sử dụng làm khóa chính), đồng thời tạo ra hai trường dùng để lưu trữ tên của khách hàng. Sau đó thoát khỏi MySQL. Mã: exit Đặt lại mật khẩu root MySQL Nếu bạn quên mật khẩu root MySQL của bạn, nó có thể được đặt lại. Dừng máy chủ MySQL hiện tại, sau đó khởi động lại nó với một lựa chọn để không yêu cầu mật khẩu. Mã: systemctl stop mysqld mysqld_safe --skip-grant-tables & Kết nối đến máy chủ MySQLvới tài khoản root MySQL. Mã: mysql -u root Sử dụng các lệnh sau để thiết lập lại mật khẩu root. Mã: use mysql; update user SET PASSWORD=PASSWORD("password") WHERE USER='root'; flush privileges; exit Sau đó khởi động lại MySQL. Mã: systemctl start mysqld Tune MySQL MySQLTuner là một script Perl để kết nối với một tiến trình chạy của MySQL và cung cấp các khuyến nghị cấu hình. Lý tưởng nhất, tiến trình MySQL nên được hoạt động ít nhất 24 giờ trước khi chạy tuner. Tải về MySQLTuner: Mã: wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl Để chạy nó: Mã: perl ./mysqltuner.pl Bạn sẽ được hỏi tên và mật khẩu user root của MySQL. Các đầu ra sẽ hiển thị hai trường: General recommendations và Variables to adjust. MySQL Tuner là một điểm khởi đầu tuyệt vời để tối ưu hóa một máy chủ MySQL nhưng bạn sẽ phải thận trọng khi cấu hình theo nó vì nếu mắc phải sai xót thì hệ thống của bạn có thể bị lổi. Bạn có thể tìm hiểu thêm MySQL Tunner qua bài viết này.