Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách cài đặt MySQL 8 trên Ubuntu 20.04 LTS

MySQL là một trong những hệ thống cơ sở dữ liệu quan hệ phổ biến được sử dụng làm nơi lưu trữ dữ liệu của các trang web và ứng dụng web. Hướng dẫn này cung cấp tất cả các bước cần thiết để cài đặt MySQL 8 trên Ubuntu 20.04 LTS. Các bước phải giống nhau trên các phiên bản khác của hệ thống Ubuntu và Linux. Bạn cũng có thể làm theo Cách cài đặt MySQL 8 trên Ubuntu 18.04 LTS. Bạn cũng có thể quan tâm đến các hướng dẫn cụ thể về MySQL khác bao gồm Cách cài đặt MySQL 8 trên Windows và Tìm hiểu các truy vấn SQL cơ bản bằng MySQL.

Điều kiện tiên quyết

Hướng dẫn này giả định rằng bạn đã cài đặt phiên bản máy tính để bàn hoặc máy chủ Ubuntu 20.04 LTS để sử dụng cục bộ hoặc sản xuất. Bạn có thể thực hiện theo Cài đặt Ubuntu 20.04 LTS Desktop, Cài đặt Ubuntu 20.04 LTS trên Windows bằng VMware và Spin Up Ubuntu 20.04 LTS Server trên Amazon EC2 để cài đặt Ubuntu 20.04 LTS. Nó cũng giả định rằng bạn có đặc quyền root hoặc người dùng thông thường có đặc quyền sudo.

Cài đặt MySQL

Phần này cung cấp các lệnh cần thiết để cài đặt MySQL Database Server phiên bản 8 trên Ubuntu 20.04 LTS.

# Install MySQL Server 8
sudo apt install mysql-server

# Output
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libaio1 libcgi-fast-perl libcgi-pm-perl libevent-core-2.1-7 libfcgi-perl libhtml-template-perl libmecab2 mecab-ipadic
mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-server-8.0 mysql-server-core-8.0
---
---
Setting up mysql-server-8.0 (8.0.20-0ubuntu0.20.04.1) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Renaming removed key_buffer and myisam-recover options (if present)
mysqld will log errors to /var/log/mysql/error.log
mysqld is running as pid 63195
Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service.
Setting up mysql-server (8.0.20-0ubuntu0.20.04.1) ...
Processing triggers for systemd (245.4-4ubuntu3) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...

Tôi đã đánh dấu các gói MySQL được cài đặt sau khi thực hiện lệnh cài đặt. Nó cài đặt các gói lõi, máy chủ và máy khách MySQL. Ngoài ra, máy chủ MySQL phiên bản 8.0.20 đã được cài đặt trong khi viết hướng dẫn này.

Định cấu hình và cài đặt bảo mật MySQL

Chúng tôi cũng phải định cấu hình và bảo mật cài đặt bằng lệnh mysql_secure_installation như hình bên dưới. Nó sẽ yêu cầu đặt mật khẩu gốc và một số câu hỏi bảo mật.

Bước 1 - Cài đặt an toàn - Thực thi lệnh để bắt đầu cấu hình MySQL.

# Secure MySQL
sudo mysql_secure_installation

Bước 2 - Trình xác thực mật khẩu - Nó yêu cầu xác nhận việc sử dụng trình xác thực mật khẩu để xác thực mật khẩu. Nó cũng sẽ hiển thị độ mạnh của mật khẩu khi cung cấp mật khẩu.

# Password Validator Component
Press y|Y for Yes, any other key for No: y

Nếu chúng tôi chọn Không, nó sẽ không kiểm tra độ mạnh mật khẩu của người dùng gốc MySQL và những người dùng khác khi thêm họ. Chúng tôi nên sử dụng mật khẩu mạnh cho người dùng MySQL, do đó, chúng tôi khuyên bạn nên sử dụng Thành phần trình xác thực mật khẩu.

Bước 3 - Cấp độ xác thực mật khẩu - Lệnh cài đặt an toàn hỏi mức xác thực mật khẩu và cung cấp các tùy chọn để lựa chọn giữa Thấp (0), Trung bình (1) và Mạnh (2). Bạn nên sử dụng ít nhất Mức độ trung bình để có một mật khẩu mạnh của tất cả người dùng MySQL. Các quy tắc xác thực của tất cả các cấp được liệt kê bên dưới.

Thấp - Nó yêu cầu một mật khẩu có ít nhất 8 ký tự mà không có bất kỳ giới hạn nào về ký tự.

Trung bình - Mức Trung bình yêu cầu mật khẩu có ít nhất 8 ký tự và cho phép các ký tự số, chữ hoa, chữ thường và đặc biệt.

Mạnh mẽ - Cấp độ Mạnh cần mật khẩu có ít nhất 8 ký tự và cho phép các ký tự số, chữ hoa, chữ thường và đặc biệt. Nó cũng cho phép tệp từ điển.

# Password Validation Level
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Bước 4 - Mật khẩu gốc - Plugin xác thực mặc định được MySQL sử dụng cho người dùng gốc là auth_socket .

# Password Prompt
New password:<password>
Re-enter new password:<repeat password>

Trong trường hợp bạn đã chọn sử dụng Password Validator, nó cũng sẽ hiển thị độ mạnh mật khẩu của mật khẩu gốc và xác nhận sử dụng mật khẩu đã cho như hình dưới đây.

# Confirm Password
Estimated strength of the password: 80
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Nếu chúng tôi chọn Không, nó sẽ lại nhắc nhập mật khẩu.

Bước 5 - Xóa người dùng ẩn danh - Sau khi cung cấp mật khẩu, quá trình cài đặt an toàn yêu cầu xóa những người dùng ẩn danh. MySQL thêm một người dùng ẩn danh trong khi cài đặt nó cho mục đích thử nghiệm và cho phép bất kỳ ai đăng nhập mà không cần mật khẩu. Bạn nên xóa người dùng ẩn danh.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Bước 6 - Không cho phép đăng nhập từ xa - Quá trình cài đặt an toàn cũng yêu cầu xác nhận xem đăng nhập từ xa có được phép cho người dùng root hay không. Chúng ta nên chọn tùy chọn y để hạn chế người dùng root đối với localhost. Chúng tôi luôn có thể thêm người dùng bổ sung để cho phép đăng nhập từ xa khi được yêu cầu.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Bước 7 - Xóa cơ sở dữ liệu thử nghiệm - MySQL tạo cơ sở dữ liệu thử nghiệm trong khi cài đặt nó. Bạn có thể giữ cơ sở dữ liệu thử nghiệm cho mục đích phân tích và sau đó bỏ nó đi.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

Bước 8 - Tải lại bảng đặc quyền - Cuối cùng, cài đặt an toàn yêu cầu tải lại các bảng đặc quyền để áp dụng ngay các thay đổi.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Các bước hoàn chỉnh do tôi thực hiện để cài đặt MySQL mới như được hiển thị bên dưới.

# Secure MySQL
sudo mysql_secure_installation

# Configuration
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: 1
Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

Các bước trên loại bỏ cơ sở dữ liệu thử nghiệm và người dùng ẩn danh. Nó cũng không cho phép đăng nhập từ xa để đảm bảo rằng máy chủ có thể truy cập cục bộ bằng cách sử dụng 127.0.0.1 hoặc localhost .

Xác minh cài đặt

Chúng tôi có thể xác minh cài đặt máy chủ MySQL bằng lệnh như hình dưới đây để kiểm tra xem máy chủ MySQL có đang chạy hay không.

# Check MySQL Status
systemctl status mysql

# Output mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-06-05 19:42:35 IST; 9min ago Main PID: 63433 (mysqld) Status: "Server is operational" Tasks: 40 (limit: 4624) Memory: 319.2M CGroup: /system.slice/mysql.service └─63433 /usr/sbin/mysqld Jun 05 19:42:35 bravo systemd[1]: Starting MySQL Community Server... Jun 05 19:42:35 bravo systemd[1]: Started MySQL Community Server.

Ngoài ra, hãy kiểm tra phiên bản của máy chủ do chúng tôi cài đặt và đảm bảo rằng máy chủ có thể truy cập được bằng mật khẩu gốc do chúng tôi định cấu hình.

# Check version
sudo mysql --version

# Output
mysql Ver 8.0.20-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

# Login
sudo mysql
# OR
sudo mysql -u root

# Quit Database
exit

Chúng ta có thể đăng nhập vào MySQL một cách đơn giản như hình trên, thậm chí chúng ta đã cung cấp mật khẩu của người dùng root trong khi bảo mật máy chủ MySQL. MySQL trực tiếp cho phép người dùng gốc vì nó sử dụng auth_socket plugin cho người dùng root không cần mật khẩu.

Plugin mật khẩu người dùng gốc

Chúng tôi có thể thay đổi plugin mật khẩu của người dùng gốc thành caching_sha2_password (ưu tiên) hoặc mysql_native_password để cho phép các ứng dụng khác bao gồm phpMyAdmin đăng nhập vào máy chủ MySQL bằng người dùng gốc. Nó có thể được thực hiện bằng cách sử dụng các lệnh như được hiển thị bên dưới.

# Login to MySQL
sudo mysql

# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Note the password plugin of root user
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$[DA
NP9|K1zAmHe`LVwrhII7zBo5b5xUoPnvOLuCa9CSJVqCn7W1rzOCCyZD | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+

# Change to new and recommended password plugin - caching_sha2_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<pw>';

# Apply changes
flush privileges;

# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Note the password plugin of root user
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | $A$005$ZtYD-ppbn>iO�"MHhl/0TXh9Qo3xYdWK3ThKPmDB6r.QhVlZY1dcT1LWH0A | caching_sha2_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

# Change password plugin of root user to mysql_native_password - not recommended
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<pw>';

# Apply changes
flush privileges;

# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;

# Note the password plugin of root user
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *E5C4F73D963032BEF9BB4CA799A848C08BADC343 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

# Quit Database
exit

Người dùng bổ sung

Chúng tôi có thể thêm người dùng bổ sung bằng lệnh CREATE USER như hình dưới đây.

# Login to MySQL - auth_socket
sudo mysql

# OR - Login to MySQL - caching_sha2_password
sudo mysql -u root -p

# Add User
CREATE USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<pw>';

# Apply changes
flush privileges;

# Quit Database
exit

Bạn cũng có thể theo dõi Tìm hiểu truy vấn SQL cơ bản sử dụng MySQL để tìm hiểu các truy vấn SQL cơ bản.

Các lệnh quan trọng

Phần này hiển thị một số lệnh quan trọng để bắt đầu, dừng và khởi động lại máy chủ.

# Check server status
sudo service mysql status

# Stop server
sudo service mysql stop

# Start server
sudo service mysql start

# Restart server
sudo service mysql restart
 

Tóm tắt

Hướng dẫn này cung cấp tất cả các bước cần thiết để cài đặt phiên bản mới nhất của máy chủ MySQL, tức là MySQL 8 trên Ubuntu 20.04 LTS. Nó cũng cung cấp các bước cấu hình để bảo mật hơn nữa cài đặt máy chủ MySQL.

Sau khi hoàn tất cài đặt, bạn cũng có thể làm theo Tìm hiểu các truy vấn SQL cơ bản sử dụng MySQL, Hướng dẫn thiết kế cơ sở dữ liệu để quản lý blog trong MySQL và Hướng dẫn thiết kế cơ sở dữ liệu cho giỏ hàng trực tuyến trong MySQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đặt lại mật khẩu gốc MySQL

  2. Cách cài đặt MySQL trên Ubuntu

  3. Cách tải lên và tải xuống các tệp PHP và MySQL

  4. mySQL - Tạo một bảng mới bằng cách sử dụng dữ liệu và cột từ ba bảng

  5. Cách kiểm tra kích thước cơ sở dữ liệu MySQL trong Linux