CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Trang chủHướng dẫnHướng dẫn cài đặt MySQL trên Ubuntu 18.04 đơn giản

Hướng dẫn cài đặt MySQL trên Ubuntu 18.04 đơn giản

CyStack blog 7 phút để đọc
CyStack blog11/07/2025
Reading Time: 7 minutes

cài đặt MySQL trên Ubuntu 18.04

MySQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở, thường được cài đặt như một phần trong stack LAMP phổ biến (Linux, Apache, MySQL, PHP/Python/Perl). Nó sử dụng cơ sở dữ liệu quan hệ và ngôn ngữ SQL (Structured Query Language) để quản lý dữ liệu.

Tóm tắt quá trình cài đặt rất đơn giản: cập nhật chỉ mục gói, cài đặt gói mysql-server, rồi chạy script bảo mật đi kèm.

$ sudo apt update
$ sudo apt install mysql-server
$ sudo mysql_secure_installation

Bài viết này sẽ hướng dẫn chi tiết cách cài đặt MySQL trên Ubuntu 18.04. (Bài viết sử dụng phiên bản MySQL 5.7)

Yêu cầu trước khi bắt đầu

Để làm theo hướng dẫn này, bạn cần:

  • Một máy chủ Ubuntu 18.04 đã được cấu hình theo hướng dẫn thiết lập máy chủ ban đầu, bao gồm một người dùng không phải root có quyền sudo và đã cấu hình tường lửa.

-> Bài viết liên quan: So sánh SQLite, MySQL và PostgreSQL

Các bước cài đặt MySQL trên Ubuntu 18.04

Bước 1 – Cài đặt MySQL

Trên Ubuntu 18.04, kho APT mặc định chỉ bao gồm phiên bản mới nhất của MySQL. Tại thời điểm viết bài, đó là MySQL 5.7.

Để cài đặt, hãy cập nhật chỉ mục gói trên máy chủ của bạn bằng apt:

$ sudo apt update

Sau đó, cài đặt gói mặc định:

$ sudo apt install mysql-server

Đảm bảo rằng máy chủ đang chạy bằng cách sử dụng lệnh systemctl start:

$ sudo systemctl start mysql.service

Các lệnh này sẽ cài đặt và khởi động MySQL, nhưng sẽ không yêu cầu bạn đặt mật khẩu hoặc thực hiện bất kỳ thay đổi cấu hình nào khác. Vì điều này khiến cài đặt MySQL của bạn không an toàn, chúng ta sẽ xử lý vấn đề này ở bước tiếp theo.

Bước 2 – Cấu hình MySQL

Với các bản cài đặt mới, bạn nên chạy script bảo mật đi kèm. Script này sẽ thay đổi một số tuỳ chọn mặc định kém an toàn, chẳng hạn như cho phép root đăng nhập từ xa hoặc tồn tại các người dùng mẫu. Trên các phiên bản MySQL cũ hơn, bạn còn phải tự khởi tạo thư mục dữ liệu, nhưng giờ đây việc này đã được thực hiện tự động.

Chạy script bảo mật:

$ sudo mysql_secure_installation

Bạn sẽ được hướng dẫn qua một loạt câu hỏi cho phép thay đổi một số tuỳ chọn bảo mật của cài đặt MySQL. Câu hỏi đầu tiên sẽ hỏi bạn có muốn thiết lập Validate Password Plugin hay không – plugin này dùng để kiểm tra độ mạnh của mật khẩu MySQL. Dù bạn chọn bật hay không, bước tiếp theo sẽ yêu cầu bạn đặt mật khẩu cho tài khoản root của MySQL. Hãy nhập và xác nhận một mật khẩu mạnh theo ý bạn.

Tại các bước tiếp theo, bạn có thể nhấn Y rồi ENTER để chấp nhận các thiết lập mặc định cho tất cả câu hỏi còn lại. Việc này sẽ xóa một số người dùng ẩn danh và cơ sở dữ liệu dùng để thử nghiệm, tắt quyền đăng nhập từ xa của tài khoản root, và nạp các quy tắc mới để MySQL áp dụng ngay những thay đổi bạn đã thực hiện.

Để khởi tạo thư mục dữ liệu của MySQL, bạn sẽ dùng mysql_install_db đối với các phiên bản trước 5.7.6, và mysqld --initialize cho phiên bản 5.7.6 trở đi. Tuy nhiên, nếu bạn đã cài đặt MySQL từ bản phân phối Debian như đã mô tả ở Bước 1, thì thư mục dữ liệu đã được khởi tạo tự động; bạn không cần làm gì thêm. Nếu bạn vẫn thử chạy lệnh này, bạn sẽ gặp lỗi sau:

Output
mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
. . .
2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting

Lưu ý rằng mặc dù bạn đã đặt mật khẩu cho tài khoản root của MySQL, nhưng tài khoản này không được cấu hình để xác thực bằng mật khẩu khi kết nối vào MySQL shell. Nếu muốn, bạn có thể điều chỉnh thiết lập này bằng cách thực hiện theo Bước 3.

Bước 3 – (Tuỳ chọn) Điều chỉnh xác thực và quyền người dùng

Trên các hệ thống Ubuntu sử dụng MySQL 5.7 (và các phiên bản mới hơn), tài khoản root của MySQL mặc định được cấu hình xác thực bằng plugin auth_socket thay vì sử dụng mật khẩu. Điều này giúp tăng cường bảo mật và thuận tiện trong nhiều trường hợp, nhưng cũng có thể gây khó khăn nếu bạn cần cho phép một chương trình bên ngoài (ví dụ: phpMyAdmin) truy cập vào tài khoản này.

Để có thể sử dụng mật khẩu để kết nối vào MySQL với tài khoản root, bạn cần chuyển phương thức xác thực từ auth_socket sang mysql_native_password. Để thực hiện điều này, hãy mở MySQL prompt từ terminal của bạn:

$ sudo mysql

Tiếp theo, hãy kiểm tra phương thức xác thực mà mỗi tài khoản người dùng MySQL đang sử dụng bằng lệnh sau:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Trong ví dụ này, bạn có thể thấy rằng tài khoản root thực sự đang xác thực bằng plugin auth_socket. Để cấu hình lại tài khoản root sử dụng xác thực bằng mật khẩu, hãy chạy lệnh ALTER USER sau. Hãy chắc chắn thay thế password bằng một mật khẩu mạnh do bạn lựa chọn, và lưu ý rằng lệnh này sẽ thay đổi mật khẩu root mà bạn đã đặt ở Bước 2:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Sau đó, chạy lệnh FLUSH PRIVILEGES để yêu cầu máy chủ tải lại bảng phân quyền (grant tables) và áp dụng các thay đổi bạn vừa thực hiện:

mysql> FLUSH PRIVILEGES;

Kiểm tra lại phương thức xác thực được sử dụng bởi từng tài khoản người dùng để xác nhận rằng tài khoản root không còn xác thực bằng plugin: auth_socket:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Bạn có thể thấy trong kết quả ví dụ rằng tài khoản root của MySQL hiện đang xác thực bằng mật khẩu. Khi bạn đã xác nhận điều này trên máy chủ của mình, bạn có thể thoát khỏi MySQL shell:

mysql> exit

Ngoài ra, một số người có thể thấy rằng cách làm việc của họ sẽ thuận tiện hơn nếu kết nối vào MySQL bằng một tài khoản người dùng riêng biệt. Để tạo tài khoản như vậy, hãy mở lại MySQL shell:

$ sudo mysql

Lưu ý: Nếu bạn đã bật xác thực bằng mật khẩu cho tài khoản root như đã đề cập ở các phần trước, bạn sẽ cần sử dụng một lệnh khác để truy cập vào MySQL shell. Lệnh sau sẽ chạy MySQL client với quyền người dùng thông thường, và bạn sẽ chỉ có được quyền quản trị trong cơ sở dữ liệu sau khi xác thực:

$ mysql -u root -p

Từ đó, hãy tạo một người dùng mới và đặt cho người đó một mật khẩu mạnh:

mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

Tiếp theo, hãy cấp các quyền phù hợp cho người dùng mới. Ví dụ, bạn có thể cấp quyền truy cập tất cả các bảng trong cơ sở dữ liệu, cũng như quyền thêm, sửa đổi và xoá quyền của người dùng khác bằng lệnh sau:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Lưu ý rằng tại thời điểm này, bạn không cần chạy lại lệnh FLUSH PRIVILEGES. Lệnh này chỉ cần thiết khi bạn chỉnh sửa bảng phân quyền trực tiếp bằng các câu lệnh như INSERT, UPDATE hoặc DELETE. Vì bạn đã tạo một người dùng mới thay vì sửa đổi người dùng hiện có, nên FLUSH PRIVILEGES là không cần thiết trong trường hợp này.

Sau đó, thoát khỏi MySQL shell:

mysql> exit

Cuối cùng, hãy kiểm tra xem MySQL đã được cài đặt.

Bước 4 – Kiểm tra MySQL

Dù bạn đã cài đặt MySQL bằng phương pháp nào, dịch vụ này thường sẽ tự động chạy sau khi cài đặt. Để kiểm tra, hãy xem trạng thái của nó.

$ systemctl status mysql.service

Bạn sẽ thấy kết quả tương tự như sau:

Output
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
   Active: active (running) since Wed 2018-04-23 21:21:25 UTC; 30min ago
 Main PID: 3754 (mysqld)
    Tasks: 28
   Memory: 142.3M
      CPU: 1.994s
   CGroup: /system.slice/mysql.service
           └─3754 /usr/sbin/mysqld

Nếu MySQL chưa chạy, bạn có thể khởi động nó bằng lệnh sudo systemctl start mysql.

Để kiểm tra kỹ hơn, bạn có thể thử kết nối vào cơ sở dữ liệu bằng công cụ mysqladmin, một client cho phép thực hiện các lệnh quản trị. Ví dụ, lệnh sau sẽ kết nối với MySQL bằng tài khoản root (-u root), yêu cầu nhập mật khẩu (-p) và hiển thị phiên bản MySQL.

$ sudo mysqladmin -p -u root version

Bạn sẽ thấy kết quả đầu ra tương tự như sau:

Output
mysqladmin  Ver 8.42 Distrib 5.7.21, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version		5.7.21-1ubuntu1
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/run/mysqld/mysqld.sock
Uptime:			30 min 54 sec

Threads: 1  Questions: 12  Slow queries: 0  Opens: 115  Flush tables: 1  Open tables: 34  Queries per second avg: 0.006

Điều này có nghĩa là MySQL đã được cài đặt thành công và đang hoạt động.

Kết luận

Bạn đã hoàn tất việc cài đặt MySQL trên máy chủ của mình. Dưới đây là một số bước tiếp theo bạn có thể thực hiện:

  • Triển khai thêm các biện pháp bảo mật nâng cao
  • Di chuyển thư mục dữ liệu sang vị trí khác
  • Quản lý các máy chủ MySQL bằng SaltStack

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất