Cách cài đặt MySQL trên Ubuntu 18.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 ngăn xếp LAMP (Linux, Apache, MySQL, PHP / Python / Perl) phổ biến. Nó sử dụng database quan hệ và SQL (Ngôn ngữ truy vấn có cấu trúc) để quản lý dữ liệu của nó. Phiên bản cài đặt ngắn gọn rất đơn giản: cập nhật index gói của bạn, cài đặt gói mysql-server
, rồi chạy tập lệnh bảo mật đi kèm.
- sudo apt update
- sudo apt install mysql-server
- sudo mysql_secure_installation
Hướng dẫn này sẽ giải thích cách cài đặt MySQL version 5.7 trên server Ubuntu 18.04. Tuy nhiên, nếu bạn đang tìm cách cập nhật cài đặt MySQL hiện có lên version 5.7, bạn có thể đọc hướng dẫn cập nhật MySQL 5.7 này để thay thế.
Yêu cầu
Để làm theo hướng dẫn này, bạn cần :
- Một server Ubuntu 18.04 được cài đặt theo hướng dẫn cài đặt server ban đầu này , bao gồm user không phải root có quyền
sudo
và firewall .
Bước 1 - Cài đặt MySQL
Trên Ubuntu 18.04, chỉ có version MySQL mới nhất có trong repository APT theo mặc định. Tại thời điểm viết bài, đó là MySQL 5.7
Để cài đặt nó, hãy cập nhật index gói trên server của bạn với apt
:
- sudo apt update
Sau đó cài đặt gói mặc định:
- 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, bạn cần chạy tập lệnh bảo mật đi kèm. Điều này thay đổi một số tùy chọn mặc định kém an toàn hơn như đăng nhập root từ xa và user mẫu. Trên các version MySQL cũ hơn, bạn cũng cần khởi tạo folder dữ liệu theo cách thủ công, nhưng điều này được thực hiện tự động ngay bây giờ.
Chạy tập lệnh bảo mật:
- 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 của password MySQL của bạn hay không. Dù lựa chọn của bạn là gì, 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.
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.
Để khởi tạo folder dữ liệu MySQL, bạn sẽ sử dụng mysql_install_db
cho các version trước 5.7.6 và mysqld --initialize
cho 5.7.6 trở lên. Tuy nhiên, nếu bạn đã cài đặt MySQL từ bản phân phối Debian, như được mô tả trong Bước 1, folder dữ liệu được khởi tạo tự động; bạn không phải làm bất cứ điều gì. Nếu bạn vẫn thử chạy lệnh, bạn sẽ thấy lỗi sau:
mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists) . . . 2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting
Lưu ý mặc dù bạn đã đặt password cho user MySQL gốc , user này 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 muốn, bạn có thể điều chỉnh cài đặt này theo Bước 3.
Bước 3 - (Tùy chọn) Điều chỉnh Xác thực User và Đặc quyền
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 . Điều này cho phép một số bảo mật và hữu dụng trong nhiều trường hợp, nhưng nó cũng có thể làm phức tạp thêm khi 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 user .
Để sử dụng password để kết nối với MySQL dưới dạng root , bạn cần chuyển phương thức xác thực của nó từ auth_socket
sang mysql_native_password
. Để thực hiện việc này, hãy mở dấu nhắc MySQL 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 account user MySQL của bạn sử dụng bằng lệnh sau:
- 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 user root trên thực tế xác thực bằng cách sử dụng plugin auth_socket
. Để cấu hình account gốc để xác thực bằng password , hãy chạy ALTER USER
sau. Đảm bảo thay đổi password
mạnh mà bạn chọn và lưu ý lệnh này sẽ thay đổi password gốc mà bạn đã đặt ở Bước 2:
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Sau đó, chạy FLUSH PRIVILEGES
yêu cầu server reload các bảng tài trợ và áp dụng các thay đổi của bạn có hiệu lực:
- FLUSH PRIVILEGES;
Kiểm tra lại các phương thức xác thực được sử dụng bởi từng user của bạn để xác nhận root không còn xác thực bằng plugin auth_socket
:
- 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ụ này user MySQL gốc hiện xác thực bằng password . Khi bạn xác nhận điều này trên server của bạn , bạn có thể thoát MySQL shell:
- exit
Ngoài ra, một số có thể thấy rằng việc kết nối với MySQL với một user chuyên dụng sẽ phù hợp hơn với quy trình làm việc của họ. Để tạo một user như vậy, hãy mở lại MySQL shell:
- sudo mysql
Lưu ý: Nếu bạn đã cài đặt xác thực password cho root , như được mô tả trong các đoạn trước, bạn cần sử dụng một lệnh khác để truy cập vào MySQL shell. 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
Từ đó, tạo một user mới và cung cấp cho nó một password mạnh:
- CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Sau đó, cấp cho user mới của bạn các quyền thích hợp. Ví dụ: bạn có thể cấp quyền user cho tất cả các bảng trong database , cũng như quyền thêm, thay đổi và xóa quyền user bằng lệnh này:
- GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Lưu ý , tại thời điểm này, bạn không cần phải chạy lại lệnh FLUSH PRIVILEGES
. Lệnh này chỉ cần thiết khi bạn sửa đổi các bảng-cấp quyền bằng cách sử dụng các câu lệnh như INSERT
, UPDATE
hoặc DELETE
. Vì bạn đã tạo user mới, thay vì sửa đổi user hiện có, FLUSH PRIVILEGES
là không cần thiết ở đây.
Sau đó, thoát khỏi MySQL shell:
- exit
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:
● 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 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 MySQL dưới dạng root ( -u root
), nhắc nhập password ( -p
) và trả về version .
- sudo mysqladmin -p -u root version
Bạn sẽ thấy kết quả tương tự như sau:
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 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:
- Thực hiện một số biện pháp bảo mật bổ sung
- Định vị lại folder dữ liệu
- Quản lý server MySQL của bạn với SaltStack
Các tin liên quan
Cách cài đặt MySQL trên CentOS 82020-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
Cách tạo một ứng dụng trích dẫn đầy cảm hứng bằng AdonisJs và MySQL
2019-11-22
Cách cài đặt MySQL mới nhất trên Debian 10
2019-07-25
Cách triển khai ứng dụng cốt lõi ASP.NET với server MySQL bằng Nginx trên Ubuntu 18.04
2019-07-23
Cách tối ưu hóa MySQL với Bộ đệm truy vấn trên Ubuntu 18.04
2019-06-12
Cách di chuyển database MySQL sang PostgreSQL bằng pgLoader
2019-05-28