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 của LAMP stack phổ biến (Linux, Apache, MySQL, PHP/Python/Perl). Nó triển khai mô hình quan hệ (relational model) và sử dụng Ngôn ngữ truy vấn có cấu trúc (Structured Query Language – hay còn gọi là SQL) để quản lý dữ liệu của nó.
Hướng dẫn này sẽ trình bày cách cài đặt MySQL phiên bản 8.0 trên máy chủ Ubuntu 20.04. Sau khi hoàn thành, bạn sẽ có một cơ sở dữ liệu quan hệ hoạt động được mà bạn có thể sử dụng để xây dựng trang web hoặc ứng dụng tiếp theo của mình.
Điều kiện tiên quyết
Để làm theo hướng dẫn này, bạn sẽ cần:
- Một máy chủ Ubuntu với người dùng quản trị không phải root (non-root administrative user) và tường lửa được cấu hình với UFW. Để thiết lập điều này, hãy làm theo hướng dẫn cài đặt máy chủ ban đầu của chúng tôi dành cho Ubuntu.
Bước 1: Cài đặt MySQL
Trên Ubuntu, bạn có thể cài đặt MySQL bằng cách sử dụng APT package repository (Kho lưu trữ của gói APT). Tại thời điểm viết bài này, phiên bản MySQL có sẵn trong kho lưu trữ Ubuntu mặc định là phiên bản 8.0.27.
Để cài đặt nó, hãy cập nhật package index trên máy chủ của bạn nếu bạn chưa làm gần đây:
sudo apt update
Sau đó cài đặt gói mysql-server:
sudo apt install mysql-server
Đảm bảo máy chủ đang chạy bằ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 nhắc 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ẽ giải quyết vấn đề này tiếp theo.
Bước 2: Cấu hình MySQL
Đối với các cài đặt MySQL mới, bạn sẽ cần chạy script bảo mật đi kèm của hệ quản trị cơ sở dữ liệu (DBMS). Script này thay đổi một số tùy chọn mặc định kém an toàn hơn cho các thứ như đăng nhập root từ xa và tài khoản người dùng mẫu.
Cảnh báo:
Kể từ tháng 7 năm 2022, một lỗi sẽ xảy ra khi bạn chạy script mysql_secure_installation
mà không có một số cấu hình bổ sung. Lý do là script sẽ cố gắng đặt mật khẩu cho tài khoản MySQL root của cài đặt nhưng theo mặc định trên các cài đặt Ubuntu, tài khoản này không được cấu hình để kết nối bằng mật khẩu.
Trước tháng 7 năm 2022, script này sẽ âm thầm thất bại sau khi cố gắng đặt mật khẩu tài khoản root và tiếp tục với các lời nhắc còn lại. Tuy nhiên, tại thời điểm viết bài này, script sẽ trả về lỗi sau đây sau khi bạn nhập và xác nhận mật khẩu:
Output
... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.
New password:
Điều này sẽ dẫn script vào một vòng lặp đệ quy mà bạn chỉ có thể thoát ra bằng cách đóng cửa sổ terminal của mình.
Bởi vì script mysql_secure_installation
thực hiện một số hành động khác rất hữu ích để giữ cho cài đặt MySQL của bạn an toàn, bạn vẫn nên chạy nó trước khi bắt đầu sử dụng MySQL để quản lý dữ liệu của mình. Tuy nhiên, để tránh rơi vào vòng lặp đệ quy này, bạn sẽ cần điều chỉnh cách người dùng MySQL root của bạn xác thực trước tiên.
Đầu tiên, mở dấu nhắc MySQL:
sudo mysql
Sau đó, chạy lệnh ALTER USER
sau để thay đổi phương thức xác thực của người dùng root sang phương thức sử dụng mật khẩu. Ví dụ sau đây thay đổi phương thức xác thực thành mysql_native_password
:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Sau khi thực hiện thay đổi này, thoát dấu nhắc MySQL:
exit
Tiếp theo đó, bạn có thể chạy tập lệnh mysql_secure_installation
mà không gặp vấn đề gì.
Khi tập lệnh bảo mật hoàn tất, bạn có thể mở lại MySQL và thay đổi phương thức xác thực của người dùng root trở lại mặc định, auth_socket
. Để xác thực với tư cách người dùng MySQL root bằng mật khẩu, hãy chạy lệnh này:
mysql -u root -p
Sau đó, quay lại sử dụng phương thức xác thực mặc định bằng lệnh này:
ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
Điều này có nghĩa là bạn có thể kết nối lại với MySQL với tư cách người dùng root của mình bằng lệnh sudo mysql
.
Chạy tập lệnh security script với sudo
:
sudo mysql_secure_installation
Quá trình này sẽ đưa bạn qua một loạt các bước nhắc, cho phép bạn thay đổi một số tùy chọn bảo mật cho cài đặt MySQL của mình. Bước nhắc đầu tiên sẽ hỏi bạn có muốn thiết lập Validate Password Plugin hay không. Plugin này được dùng để kiểm tra độ mạnh của mật khẩu khi tạo người dùng MySQL mới, đảm bảo chúng đáp ứng yêu cầu bảo mật.
Nếu bạn chọn thiết lập validate password plugin, bất kỳ người dùng MySQL nào bạn tạo mà xác thực bằng mật khẩu sẽ được yêu cầu có mật khẩu thỏa mãn chính sách bạn chọn. Mức chính sách mạnh nhất mà bạn có thể chọn bằng cách nhập 2
sẽ yêu cầu mật khẩu phải dài ít nhất 8 ký tự và bao gồm hỗn hợp các ký tự viết hoa, viết thường, số và ký tự đặc biệt:
Output
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
2
Bất kể bạn có chọn thiết lập validate password plugin hay không, lời nhắc tiếp theo sẽ là đặt mật khẩu cho người dùng root MySQL. Hãy nhập và sau đó xác nhận một mật khẩu mạnh tùy chọn của bạn:
Output
Please set the password for root here.
New password:
Re-enter new password:
Lưu ý rằng mặc dù bạn đã đặt mật khẩu cho người dùng root MySQL, nhưng người dùng này hiện tại không được cấu hình để xác thực bằng mật khẩu khi kết nối với MySQL shell.
Nếu bạn đã sử dụng validate password plugin, bạn sẽ nhận được phản hồi về độ mạnh của mật khẩu mới của mình. Sau đó, tập lệnh sẽ hỏi bạn có muốn tiếp tục với mật khẩu vừa nhập hay muốn nhập một mật khẩu mới. Giả sử bạn hài lòng với độ mạnh của mật khẩu vừa nhập, hãy nhập Y
để tiếp tục tập lệnh:
Output
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
Từ đó, bạn có thể nhấn Y
rồi ENTER
để chấp nhận các cài đặt mặc định cho tất cả các câu hỏi tiếp theo. Thao tác này sẽ xóa một số người dùng ẩn danh và cơ sở dữ liệu kiểm thử, tắt tính năng đăng nhập root từ xa và tải các quy tắc mới này để MySQL ngay lập tức tuân thủ các thay đổi bạn đã thực hiện.
Khi tập lệnh hoàn tất, cài đặt MySQL của bạn sẽ được bảo mật. Giờ đây, bạn có thể chuyển sang tạo một người dùng cơ sở dữ liệu chuyên dụng bằng MySQL client.
Bước 3: Tạo người dùng MySQL chuyên dụng và cấp quyền
Khi cài đặt, MySQL tạo một tài khoản người dùng root mà bạn có thể sử dụng để quản lý cơ sở dữ liệu của mình. Người dùng này có toàn quyền đối với máy chủ MySQL, nghĩa là nó có quyền kiểm soát hoàn toàn mọi cơ sở dữ liệu, bảng, người dùng, v.v. Vì lý do này, tốt nhất là nên tránh sử dụng tài khoản này bên ngoài các chức năng quản trị. Bước này sẽ phác thảo cách sử dụng người dùng root MySQL để tạo một tài khoản người dùng mới và cấp quyền cho nó.
Trong các hệ thống Ubuntu chạy MySQL 5.7 (và các phiên bản sau), người dùng root MySQL được đặt để xác thực bằng plugin auth_socket theo mặc định thay vì bằng mật khẩu. Plugin này yêu cầu tên của người dùng hệ điều hành (operating system user) gọi MySQL client phải khớp với tên người dùng MySQL được chỉ định trong lệnh, vì vậy bạn phải gọi mysql
với quyền sudo
để có quyền truy cập vào người dùng root MySQL:
sudo mysql
Lưu ý: Nếu bạn đã cài đặt MySQL với một hướng dẫn khác và đã bật xác thực bằng mật khẩu cho người dùng root, bạn sẽ cần sử dụng một lệnh khác để truy cập vào MySQL shell. Lệnh sau đây sẽ chạy MySQL client của bạn với các 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 bằng cách xác thực:
mysql -u root -p
Khi bạn đã truy cập được vào dấu nhắc MySQL, bạn có thể tạo một người dùng mới bằng câu lệnh CREATE USER
. Cú pháp chung của các câu lệnh này như sau:
CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
Sau CREATE USER
, bạn xác định tên người dùng (username). Ngay sau đó là ký hiệu @
và sau đó là tên máy chủ (hostname) mà người dùng này sẽ kết nối từ đó. Nếu bạn chỉ có kế hoạch truy cập người dùng này cục bộ từ máy chủ Ubuntu của mình, bạn có thể chỉ định localhost
. Việc đặt tên người dùng và máy chủ trong dấu nháy đơn (single quotes) không phải lúc nào cũng cần thiết, nhưng làm như vậy có thể giúp ngăn ngừa lỗi.
Bạn có một số lựa chọn khi chọn plugin xác thực (authentication plugin) cho người dùng của mình. Plugin auth_socket đã đề cập trước đây có thể tiện lợi, vì nó cung cấp bảo mật mạnh mẽ mà không yêu cầu người dùng hợp lệ phải nhập mật khẩu để truy cập cơ sở dữ liệu. Nhưng nó cũng ngăn chặn kết nối từ xa, điều này có thể làm phức tạp mọi thứ khi các chương trình bên ngoài cần tương tác với MySQL.
Như một giải pháp thay thế, bạn có thể bỏ hoàn toàn phần WITH authentication_plugin
của cú pháp để người dùng xác thực bằng plugin mặc định của MySQL, caching_sha2_password
. Tài liệu MySQL khuyến nghị plugin này cho những người dùng muốn đăng nhập bằng mật khẩu do các tính năng bảo mật mạnh mẽ của nó.
Chạy lệnh sau để tạo một người dùng xác thực với caching_sha2_password
. Đảm bảo thay đổi sammy
thành tên người dùng bạn muốn và password
thành mật khẩu mạnh mà bạn chọn:
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Lưu ý: Có một vấn đề đã biết với một số phiên bản PHP gây ra sự cố với caching_sha2_password
. Nếu bạn định sử dụng cơ sở dữ liệu này với một ứng dụng PHP – ví dụ: phpMyAdmin – bạn có thể muốn tạo một người dùng sẽ xác thực bằng plugin mysql_native_password
cũ hơn, mặc dù vẫn an toàn:
CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Nếu bạn không chắc chắn, bạn luôn có thể tạo một người dùng xác thực với caching_sha2_plugin
và sau đó ALTER
nó sau này bằng lệnh này:
ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Sau khi tạo người dùng mới, bạn có thể cấp cho họ các đặc quyền (privileges) phù hợp. Cú pháp chung để cấp đặc quyền người dùng như sau:
GRANT PRIVILEGE ON database.table TO 'username'@'host';
Giá trị PRIVILEGE
trong cú pháp ví dụ này định nghĩa những hành động mà người dùng được phép thực hiện trên cơ sở dữ liệu và bảng được chỉ định. Bạn có thể cấp nhiều đặc quyền cho cùng một người dùng trong một lệnh bằng cách phân tách từng đặc quyền bằng dấu phẩy. Bạn cũng có thể cấp đặc quyền toàn cục cho người dùng bằng cách nhập dấu hoa thị (*
) thay cho tên cơ sở dữ liệu và bảng. Trong SQL, dấu hoa thị là các ký tự đặc biệt được sử dụng để đại diện cho “tất cả” các cơ sở dữ liệu hoặc bảng.
Để minh họa, lệnh sau đây cấp cho người dùng các đặc quyền toàn cục để CREATE
, ALTER
và DROP
cơ sở dữ liệu, bảng và người dùng, cũng như quyền INSERT
, UPDATE
và DELETE
dữ liệu từ bất kỳ bảng nào trên máy chủ. Nó cũng cấp cho người dùng khả năng truy vấn dữ liệu bằng SELECT
, tạo khóa ngoại (foreign keys) bằng từ khóa REFERENCES
và thực hiện các thao tác FLUSH
với đặc quyền RELOAD
. Tuy nhiên, bạn chỉ nên cấp cho người dùng những quyền mà họ cần, vì vậy hãy thoải mái điều chỉnh các đặc quyền của người dùng của riêng bạn khi cần thiết.
Bạn có thể tìm thấy danh sách đầy đủ các đặc quyền có sẵn trong tài liệu MySQL chính thức.
Chạy câu lệnh GRANT
này, thay thế sammy
bằng tên người dùng MySQL của riêng bạn, để cấp các đặc quyền này cho người dùng của bạn:
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Lưu ý rằng câu lệnh này cũng bao gồm WITH GRANT OPTION
. Điều này sẽ cho phép người dùng MySQL của bạn cấp bất kỳ quyền nào mà nó có cho những người dùng khác trên hệ thống.
Cảnh báo: Một số người dùng có thể muốn cấp cho người dùng MySQL của họ đặc quyền ALL PRIVILEGES
, điều này sẽ cung cấp cho họ các đặc quyền siêu người dùng (superuser privileges) rộng rãi tương tự như đặc quyền của người dùng root, như sau:
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Những đặc quyền rộng rãi như vậy không nên được cấp một cách dễ dàng, vì bất kỳ ai có quyền truy cập vào người dùng MySQL này sẽ có toàn quyền kiểm soát mọi cơ sở dữ liệu trên máy chủ.
Sau đó, việc chạy lệnh FLUSH PRIVILEGES
là một thực hành tốt. Thao tác này sẽ giải phóng mọi bộ nhớ mà máy chủ đã lưu trữ do các câu lệnh CREATE USER
và GRANT
trước đó:
FLUSH PRIVILEGES;
Sau đó, bạn có thể thoát khỏi MySQL client:
exit
Trong tương lai, để đăng nhập với tư cách người dùng MySQL mới của bạn, bạn sẽ sử dụng một lệnh như sau:
mysql -u sammy -p
-p
flag sẽ khiến MySQL client nhắc bạn nhập mật khẩu người dùng MySQL của bạn để xác thực.
Cuối cùng, hãy kiểm tra cài đặt MySQL.
Bước 4: Kiểm tra MySQL
Bất kể bạn cài đặt bằng cách nào, MySQL sẽ tự động bắt đầu chạy. Để kiểm tra điều này, hãy kiểm tra trạng thái của nó.
systemctl status mysql.service
Bạn sẽ thấy đầu ra tương tự như sau:
Output
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago
Main PID: 10382 (mysqld)
Status: "Server is operational"
Tasks: 39 (limit: 1137)
Memory: 370.0M
CGroup: /system.slice/mysql.service
└─10382 /usr/sbin/mysqld
Nếu MySQL không chạy, bạn có thể khởi động nó bằng sudo systemctl start mysql
.
Để kiểm tra bổ sung, bạn có thể thử kết nối với cơ sở dữ liệu bằng công cụ mysqladmin
, đây là một client cho phép bạn chạy các lệnh quản trị. Ví dụ, lệnh này yêu cầu kết nối với tư cách người dùng MySQL có tên sammy
(-u sammy
), nhắc nhập mật khẩu (-p
) và trả về phiên bản. Đảm bảo thay đổi sammy
thành tên người dùng MySQL chuyên dụng của bạn và nhập mật khẩu của người dùng đó khi được nhắc:
sudo mysqladmin -p -u sammy version
Bạn sẽ thấy đầu ra tương tự như sau:
Output
mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2020, 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 8.0.19-0ubuntu5
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 10 min 44 sec
Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038
Điều này có nghĩa là MySQL đang hoạt động.
Cài đặt MySQL và MariaDB trên Ubuntu
MySQL và MariaDB là hai trong số các hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở (RDBMS) phổ biến nhất được sử dụng để lưu trữ và quản lý dữ liệu có cấu trúc (structured data). Cả hai đều được sử dụng rộng rãi trong các ứng dụng web và nổi tiếng về hiệu suất cao, khả năng mở rộng và độ tin cậy.
Dưới đây là so sánh về việc cài đặt MySQL và MariaDB trên Ubuntu:
Tính năng | MySQL | MariaDB |
---|---|---|
Giấy phép | GPL | GPL |
Công cụ lưu trữ (Storage Engines) | InnoDB, MyISAM, Memory, v.v. | InnoDB, Aria, TokuDB, v.v. |
Hiệu suất (Performance) | Tối ưu hóa cho hiệu suất cao và khả năng mở rộng | Hiệu suất nâng cao với truy vấn được tối ưu hóa tốt hơn |
Bảo mật (Security) | Tập trung mạnh vào bảo mật với các tính năng như mã hóa SSL/TLS | Các tính năng bảo mật nâng cao, bao gồm hàm băm mật khẩu và mã hóa tốt hơn |
Sao chép (Replication) | Hỗ trợ sao chép Master-Slave và Master-Master | Hỗ trợ sao chép Master-Slave và Master-Master với hiệu suất được cải thiện |
Fork | Thuộc sở hữu của Oracle, với định hướng thương mại hơn | Fork của MySQL do cộng đồng điều khiển, tập trung vào mã nguồn mở |
Công cụ lưu trữ mặc định (Default Storage Engine) | InnoDB, nổi tiếng với khả năng giao dịch | Aria, được thiết kế cho hiệu suất cao và độ tin cậy |
Bộ ký tự mặc định (Default Charset) | utf8mb4, hỗ trợ nhiều ngôn ngữ | utf8mb4, đảm bảo khả năng tương thích với nhiều ngôn ngữ |
Cú pháp SQL (SQL Syntax) | Hỗ trợ nhiều cú pháp và tính năng SQL | Tương thích với cú pháp SQL của MySQL, với các tính năng và cải tiến bổ sung |
Hỗ trợ cộng đồng (Community Support) | Cộng đồng lớn và tài liệu phong phú | Cộng đồng tích cực tập trung vào hợp tác và phát triển mã nguồn mở |
Khả năng tương thích (Compatibility) | Tương thích với nhiều nền tảng và công cụ | Tương thích với các công cụ và nền tảng của MySQL, với hỗ trợ bổ sung cho các công nghệ mã nguồn mở |
Các lỗi thường gặp và cách khắc phục
Dịch vụ MySQL không khởi động
Nếu dịch vụ MySQL không khởi động được, bạn có thể thử các bước sau để khắc phục sự cố:
- Kiểm tra nhật ký lỗi MySQL: Tìm bất kỳ lỗi hoặc cảnh báo nào có thể chỉ ra nguyên nhân của vấn đề. Bạn có thể thực hiện việc này bằng cách chạy lệnh
sudo grep 'error' /var/log/mysql/error.log
trong terminal của mình. - Đảm bảo cấu hình MySQL chính xác: Đảm bảo rằng tệp cấu hình MySQL được thiết lập chính xác và không có lỗi cú pháp. Bạn có thể kiểm tra tệp cấu hình bằng cách chạy
sudo cat /etc/mysql/my.cnf
và xác minh rằng nó khớp với định dạng mong đợi. - Kiểm tra xung đột cổng: Kiểm tra xem dịch vụ MySQL có đang chạy dưới một người dùng khác hay có bất kỳ tiến trình nào khác đang sử dụng cùng một cổng không. Bạn có thể thực hiện việc này bằng cách chạy
sudo netstat -tlnp | grep 3306
để kiểm tra xem có tiến trình nào đang sử dụng cổng MySQL mặc định hay không. - Khởi động dịch vụ MySQL thủ công: Thử khởi động dịch vụ MySQL thủ công bằng lệnh
sudo service mysql start
hoặcsudo systemctl start mysql
.
Lỗi plugin xác thực
Lỗi plugin xác thực có thể xảy ra do các vấn đề tương thích giữa các phiên bản MySQL client và server. Để giải quyết vấn đề này:
- Xác minh khả năng tương thích phiên bản: Đảm bảo rằng các phiên bản MySQL client và server tương thích. Bạn có thể kiểm tra phiên bản MySQL server bằng cách chạy
sudo mysql -V
và phiên bản client bằng cách chạymysql -V
. - Kiểm tra cấu hình plugin xác thực: Kiểm tra xem plugin xác thực có được cấu hình chính xác trên máy chủ hay không. Bạn có thể thực hiện việc này bằng cách chạy
SELECT @@default_authentication_plugin;
trong MySQL client của mình. - Cập nhật hoặc thay đổi plugin xác thực: Thử sử dụng một plugin xác thực khác hoặc cập nhật MySQL client lên phiên bản tương thích. Ví dụ: bạn có thể cập nhật MySQL client bằng cách chạy
sudo apt update && sudo apt install mysql-client
.
Cài đặt MySQL thất bại: Thiếu dependencies
Nếu cài đặt MySQL thất bại do thiếu dependencies (các gói phụ thuộc), bạn có thể thử các bước sau để giải quyết vấn đề:
- Kiểm tra nhật ký cài đặt: Kiểm tra nhật ký cài đặt để tìm bất kỳ thông báo lỗi nào cho biết các dependencies nào bị thiếu. Bạn có thể thực hiện việc này bằng cách chạy
sudo apt update && sudo apt install mysql-server
và kiểm tra đầu ra để tìm bất kỳ thông báo lỗi nào. - Cài đặt các dependencies bị thiếu: Sử dụng trình quản lý gói (package manager) để cài đặt các dependencies bị thiếu. Ví dụ: nếu thông báo lỗi cho biết thiếu
libssl1.1
, bạn có thể cài đặt nó bằng cách chạysudo apt install libssl1.1
. - Thử lại cài đặt MySQL: Sau khi các dependencies được cài đặt, hãy thử lại quá trình cài đặt MySQL bằng cách chạy
sudo apt update && sudo apt install mysql-server
. - Đảm bảo trình quản lý gói được cập nhật: Đảm bảo rằng trình quản lý gói được cập nhật và tất cả các gói được cài đặt chính xác. Bạn có thể thực hiện việc này bằng cách chạy
sudo apt update && sudo apt full-upgrade
.
Yêu cầu hệ thống để cài đặt MySQL
Trước khi cài đặt MySQL, hãy đảm bảo hệ thống của bạn đáp ứng các yêu cầu sau:
- Hệ điều hành: Ubuntu 18.04 trở lên (64-bit)
- CPU: Bộ xử lý lõi kép 2 GHz
- Bộ nhớ: 4 GB RAM (khuyên dùng 8 GB trở lên)
- Lưu trữ: 2 GB dung lượng đĩa trống (khuyên dùng nhiều hơn cho các cơ sở dữ liệu lớn hơn)
- Phần mềm: Ubuntu Server hoặc Ubuntu Desktop với nhân Linux tương thích
Cài đặt MySQL với Docker trên Ubuntu
Để cài đặt MySQL bằng Docker trên Ubuntu, hãy làm theo các bước sau:
- Cài đặt Docker: sudo apt update && sudo apt install docker.io
- Tải image MySQL: sudo docker pull mysql
- Chạy container MySQL: sudo docker run –name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql
- Xác minh cài đặt: sudo docker exec -it mysql mysql -uroot -ppassword
Tinh chỉnh hiệu suất MySQL sau khi cài đặt
- Tối ưu hóa tệp cấu hình MySQL: Điều chỉnh các cài đặt trong tệp
/etc/mysql/my.cnf
để tối ưu hóa hiệu suất dựa trên tài nguyên hệ thống của bạn. - Sử dụng công cụ lưu trữ phù hợp: Chọn công cụ lưu trữ thích hợp nhất cho cơ sở dữ liệu của bạn, chẳng hạn như InnoDB cho các tải công việc giao dịch.
- Đánh chỉ mục (Index) cho các bảng của bạn: Tạo chỉ mục trên các cột thường xuyên được truy vấn để cải thiện hiệu suất truy vấn.
- Cập nhật thống kê thường xuyên: Chạy lệnh
ANALYZE TABLE
để cập nhật thống kê bảng và cải thiện khả năng tối ưu hóa truy vấn. - Giám sát hiệu suất Sử dụng các công cụ như
mysqladmin
hoặcsysdig
để giám sát hiệu suất MySQL và xác định các nút thắt cổ chai.
Các câu hỏi thường gặp
Làm thế nào để cài đặt SQL trong terminal Ubuntu?
Để cài đặt MySQL trên Ubuntu, hãy chạy lệnh sau trong terminal của bạn:
sudo apt update && sudo apt install mysql-server
Lệnh này sẽ cài đặt MySQL server trên hệ thống Ubuntu của bạn.
Làm thế nào để cài đặt MySQL Workbench trong Ubuntu 20.04 bằng terminal?
Để cài đặt MySQL Workbench trên Ubuntu 20.04, hãy chạy lệnh sau trong terminal của bạn:
sudo apt update && sudo apt install mysql-workbench
Lệnh này sẽ cài đặt MySQL Workbench trên hệ thống Ubuntu 20.04 của bạn.
Làm thế nào để thiết lập một cơ sở dữ liệu MySQL?
Để thiết lập một cơ sở dữ liệu MySQL, hãy làm theo các bước sau:
- Đầu tiên, đảm bảo MySQL đã được cài đặt và đang chạy trên hệ thống của bạn.
- Mở một terminal và kết nối với MySQL server bằng lệnh sau:
sudo mysql -u root -p
- Nhập mật khẩu root khi được nhắc.
- Khi đã kết nối, tạo một cơ sở dữ liệu mới bằng lệnh SQL sau:
CREATE DATABASE mydatabase;
- Để sử dụng cơ sở dữ liệu vừa tạo, hãy chạy lệnh SQL sau:
USE mydatabase;
- Bây giờ bạn có thể tạo bảng và chèn dữ liệu vào cơ sở dữ liệu của mình.
Mật khẩu root MySQL mặc định trên Ubuntu là gì?
Theo mặc định, mật khẩu root MySQL không được đặt trên Ubuntu. Bạn sẽ được nhắc đặt mật khẩu trong quá trình cài đặt.
Làm thế nào để khởi động và dừng MySQL trên Ubuntu?
Để khởi động MySQL trên Ubuntu, hãy chạy lệnh sau trong terminal của bạn:
sudo service mysql start
Để dừng MySQL trên Ubuntu, hãy chạy lệnh sau trong terminal của bạn:
sudo service mysql stop
Có thể cài đặt nhiều phiên bản MySQL trên Ubuntu không?
Có, bạn có thể cài đặt nhiều phiên bản MySQL trên Ubuntu bằng cách sử dụng Docker. Ví dụ, để cài đặt MySQL 5.7 và MySQL 8.0, bạn có thể chạy các lệnh sau:
sudo docker run --name mysql57 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=password mysql:5.7
sudo docker run --name mysql80 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=password mysql:8.0
Thao tác này sẽ cài đặt và chạy MySQL 5.7 và MySQL 8.0 trong các container riêng biệt.
Làm thế nào để gỡ cài đặt hoàn toàn MySQL khỏi Ubuntu?
Để gỡ cài đặt hoàn toàn MySQL khỏi Ubuntu, hãy chạy các lệnh sau trong terminal của bạn:
sudo apt purge mysql-server mysql-client mysql-common
sudo apt autoremove
sudo apt autoclean
Thao tác này sẽ xóa MySQL server, client và các tệp chung khỏi hệ thống của bạn.
Sự khác biệt giữa MariaDB và MySQL trên Ubuntu là gì?
MariaDB là một fork của MySQL, và cả hai đều là các hệ quản trị cơ sở dữ liệu quan hệ (relational database management systems). MariaDB được thiết kế để trở thành một sự thay thế trực tiếp (drop-in replacement) cho MySQL, mang lại hiệu suất cải thiện và các tính năng mới. Trên Ubuntu, bạn có thể cài đặt MariaDB thay vì MySQL bằng lệnh sau:
sudo apt update && sudo apt install mariadb-server
MariaDB tương thích với MySQL, và hầu hết các ứng dụng MySQL có thể hoạt động với MariaDB mà không cần sửa đổi.
Kết luận
Với việc thiết lập MySQL cơ bản đã được cài đặt trên máy chủ của bạn, giờ đây bạn đã sẵn sàng đưa việc quản lý cơ sở dữ liệu của mình lên một tầm cao mới.