Thứ năm, 30/07/2020 | 00:00 GMT+7

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

MySQL là một hệ quản trị database open-souce , thường được cài đặt như một phần của LAMP (Linux, Apache, MySQL, PHP / Python / Perl) phổ biến. Nó triển khai mô hình quan hệ và sử dụng Ngôn ngữ truy vấn có cấu trúc (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 về cách cài đặt MySQL version 8.0 trên server Ubuntu 20.04. Bằng cách hoàn thành nó, bạn sẽ có một database quan hệ hoạt động mà bạn có thể sử dụng để xây dựng trang web hoặc ứng dụng tiếp theo của bạn .

Yêu cầu

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

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

Trên Ubuntu 20.04, bạn có thể cài đặt MySQL bằng cách sử dụng repository APT. Tại thời điểm viết bài này, version MySQL có sẵn trong repository lưu trữ Ubuntu mặc định là version 8.0.19 .

Để cài đặt nó, hãy cập nhật index gói trên server của bạn nếu gần đây bạn chưa làm như vậy:

  • sudo apt update

Sau đó cài đặt gói mysql-server :

  • sudo apt install mysql-server

Thao tác này sẽ cài đặt MySQL, nhưng sẽ không nhắc bạn đặt password 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 quá trình cài đặt MySQL của bạn không an toàn, 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 bản cài đặt mới của MySQL, bạn cần chạy tập lệnh bảo mật đi kèm của DBMS. Tập lệnh này thay đổi một số tùy chọn mặc định kém an toàn hơn như thông tin đăng nhập root từ xa và user mẫu.

Chạy tập lệnh bảo mật với sudo :

  • sudo mysql_secure_installation

Điều này sẽ đưa bạn qua một loạt dấu nhắc mà bạn có thể thực hiện một số thay đổi đối với các tùy chọn bảo mật của cài đặt MySQL của bạn . Dấu nhắc đầu tiên sẽ hỏi bạn có muốn cài đặt Trình cắm password xác thực, được dùng để kiểm tra độ mạnh password của user MySQL mới trước khi cho là hợp lệ hay không.

Nếu bạn chọn cài đặt Trình cắm password xác thực, bất kỳ user MySQL nào bạn tạo để xác thực bằng password sẽ được yêu cầu có password phù hợp policy bạn chọn. Cấp policy mạnh nhất - mà bạn có thể chọn bằng lệnh 2 - sẽ yêu cầu password phải dài ít nhất tám ký tự và bao gồm hỗn hợp các ký tự viết hoa, viết thường, số và đặ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 

Dù bạn có chọn cài đặt Trình cắm password xác thực hay không, dấu nhắc tiếp theo sẽ là đặt password cho user gốc MySQL. Nhập và sau đó xác nhận một password an toàn mà bạn chọn:

Output
Please set the password for root here.   New password:   Re-enter new password:  

Lưu ý mặc dù bạn đã đặt password cho user MySQL gốc , user này hiện không được cấu hình để xác thực bằng password khi kết nối với MySQL shell.

Nếu bạn đã sử dụng Plugin xác thực password , bạn sẽ nhận được phản hồi về độ mạnh của password mới của bạn . Sau đó, tập lệnh sẽ hỏi bạn có muốn tiếp tục với password vừa nhập hay bạn muốn nhập password mới. Giả sử bạn hài lòng với độ mạnh của password 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 giá trị 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ố user ẩn danh và database thử nghiệm, vô hiệu hóa đăng nhập root từ xa và tải các luật mới này để MySQL áp dụng ngay những 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. Đến đây bạn có thể chuyển sang tạo user database chuyên dụng với client MySQL.

Bước 3 - Tạo User MySQL Chuyên dụng và Cấp các Đặc quyền

Sau khi cài đặt, MySQL tạo một account user gốc mà bạn có thể sử dụng để quản lý database của bạn . User này có đầy đủ các quyền đối với server MySQL, nghĩa là nó có toàn quyền kiểm soát mọi database , bảng, user , v.v. Do đó, tốt nhất bạn nên tránh sử dụng account này bên ngoài các chức năng quản trị. Bước này phác thảo cách sử dụng user MySQL gốc để tạo account user mới và cấp quyền cho account đó.

Trong các hệ thống Ubuntu chạy MySQL 5.7 (và các version mới hơn), user MySQL gốc được đặt để xác thực bằng cách sử dụng plugin auth_socket theo mặc định chứ không phải bằng password . Plugin này yêu cầu tên của user hệ điều hành gọi client MySQL phải trùng với tên của user 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 user MySQL gốc :

  • sudo mysql

Lưu ý: Nếu bạn cài đặt MySQL với một hướng dẫn và cho phép xác thực password cho thư mục root , bạn cần phải sử dụng một lệnh khác nhau để truy cập shell MySQL. Phần sau sẽ chạy ứng dụng client MySQL của bạn với quyền regular user và bạn sẽ chỉ có được quyền administrator trong database bằng cách xác thực:

  • mysql -u root -p

 

Khi bạn có quyền truy cập vào dấu nhắc MySQL, bạn có thể tạo user mới bằng câu CREATE USER . Chúng tuân theo cú pháp chung sau:

  • CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

Sau khi CREATE USER , bạn chỉ định tên user . Ngay sau đó là dấu @ và sau đó là tên server mà user này sẽ kết nối. Nếu bạn chỉ định truy cập local user này từ server Ubuntu của bạn , bạn có thể chỉ định localhost . Việc bao bọc cả tên user và server trong một dấu ngoặc kép 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ố tùy chọn khi chọn plugin xác thực user của bạn . Plugin auth_socket được đề cập trước đây có thể tiện lợi vì nó cung cấp khả năng bảo mật mạnh mẽ mà không yêu cầu user hợp lệ nhập password để truy cập database . Nhưng nó cũng ngăn chặn các kết nối từ xa, điều này có thể làm phức tạp thêm khi các chương trình bên ngoài cần tương tác với MySQL.

Thay vào đó, bạn có thể loại bỏ hoàn toàn phần WITH authentication plugin của cú pháp để user xác thực với plugin mặc định của MySQL, caching_sha2_password . Tài liệu MySQL đề xuất plugin này cho user muốn đăng nhập bằng password do tính năng bảo mật mạnh mẽ của nó.

Chạy lệnh sau để tạo user xác thực bằng caching_sha2_password . Đảm bảo thay đổi sammy thành tên user và password bạn muốn thành một password mạnh mà bạn chọn:

  • CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

Lưu ý : Có một sự cố đã biết với một số version PHP gây ra sự cố với caching_sha2_password . Nếu bạn định sử dụng database này với một ứng dụng PHP - ví dụ: phpMyAdmin - bạn có thể cần tạo một user sẽ xác thực với plugin mysql_native_password cũ hơn, mặc dù vẫn an toàn, thay vào đó:

  • 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 user xác thực bằng 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 user mới, bạn có thể cấp cho họ các quyền thích hợp. Cú pháp chung để cấp quyền user như sau:

  • GRANT PRIVILEGE ON database.table TO 'username'@'host';

Giá trị PRIVILEGE trong cú pháp ví dụ này xác định những hành động mà user được phép thực hiện trên databasetable được chỉ định. Bạn có thể cấp nhiều quyền cho cùng một user trong một lệnh bằng cách phân tách từng quyền bằng dấu phẩy. Bạn cũng có thể cấp quyền user trên phạm vi global bằng lệnh dấu hoa thị ( * ) vào vị trí của database và tên 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ả" database hoặc bảng.

Để minh họa, lệnh sau đây cấp cho user các quyền global để CREATE , ALTERDROP database , bảng và user , cũng như quyền INSERT , UPDATEDELETE dữ liệu từ bất kỳ bảng nào trên server . Nó cũng cấp cho user khả năng truy vấn dữ liệu với SELECT , tạo foreign keys với từ khóa REFERENCES và thực hiện các hoạt động FLUSH với quyền RELOAD . Tuy nhiên, bạn chỉ nên cấp cho user các quyền mà họ cần, vì vậy hãy thoải mái điều chỉnh các quyền của user của bạn nếu cần.

Bạn có thể tìm thấy danh sách đầy đủ 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 user MySQL của bạn , để cấp các quyền này cho user của bạn:

  • GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Lưu ý lệnh này cũng bao gồm WITH GRANT OPTION . Điều này sẽ cho phép user MySQL của bạn cấp bất kỳ quyền nào mà nó có cho user khác trên hệ thống.

Cảnh báo : Một số user có thể cần cấp cho user MySQL của họ quyền ALL PRIVILEGES , điều này sẽ cung cấp cho họ các quyền siêu user rộng rãi tương tự như quyền của user root , như vậy:

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

Không nên cấp nhẹ các quyền rộng rãi như vậy, vì bất kỳ ai có quyền truy cập vào user MySQL này sẽ có toàn quyền kiểm soát mọi database trên server .

Sau đây, bạn nên chạy lệnh FLUSH PRIVILEGES . Điều này sẽ giải phóng bất kỳ bộ nhớ nào mà server đã lưu trong bộ nhớ cache do kết quả của các câu CREATE USERGRANT trước đó:

  • FLUSH PRIVILEGES;

Sau đó, bạn có thể thoát khỏi client MySQL:

  • exit

Trong tương lai, để đăng nhập với quyền là user MySQL mới của bạn, bạn sẽ sử dụng một lệnh như sau:

  • mysql -u sammy -p

Cờ -p sẽ khiến client MySQL nhắc bạn nhập password user 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

Dù bạn đã cài đặt nó như thế nào, MySQL phải bắt đầu chạy tự động. Để 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 kết quả 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 thêm, bạn có thể thử kết nối với database bằng công cụ mysqladmin , là một ứng dụng client cho phép bạn chạy các lệnh quản trị. Ví dụ: lệnh này cho biết kết nối với quyền user MySQL có tên sammy ( -u sammy ), nhắc nhập password ( -p ) và trả về version . Đảm bảo thay đổi sammy thành tên của user MySQL chuyên dụng của bạn và nhập password của user đó khi được yêu cầu :

  • sudo mysqladmin -p -u sammy version

Bạn sẽ thấy kết quả 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 nghĩa là MySQL đang hoạt động.

Kết luận

Đến đây bạn đã cài đặt cài đặt MySQL cơ bản trên server của bạn . Dưới đây là một số ví dụ về các bước tiếp theo mà bạn có thể thực hiện:


Tags:

Các tin liên quan

Cách cài đặt MySQL trên Ubuntu 20.04 [Quickstart]
2020-07-30
Cách triển khai Laravel 7 và MySQL trên Kubernetes bằng Helm
2020-06-23
Cách đặt lại mật khẩu gốc MySQL hoặc MariaDB của bạn
2020-05-05
Cách sử dụng Kiểu dữ liệu MySQL BLOB để lưu trữ image bằng PHP trên Ubuntu 18.04
2020-05-05
Cách cài đặt MySQL trên Ubuntu 18.04
2020-04-21
Cách cài đặt MySQL trên CentOS 8
2020-03-18
Cách triển khai phân trang trong MySQL với PHP trên Ubuntu 18.04
2020-01-29
Cách tối ưu hóa truy vấn MySQL với bộ đệm ProxySQL trên Ubuntu 16.04
2019-12-30
Cách cấu hình Cụm Galera với MySQL trên server Ubuntu 18.04
2019-12-16
Cách quản lý và sử dụng trình kích hoạt database MySQL trên Ubuntu 18.04
2019-12-10