huong-dan-cai-va-cau-hinh-mysql-5-tren-ubuntu-18-04
Hướng Dẫn Cài Và Cấu Hình MySQL 5 Trên Ubuntu 18.04

MySQL là một RDBMS (Relational Database Management System) hệ thống quản lý cơ sở dữ liệu quan hệ mã nguồn mở. Đặc điểm của MySQL  là cơ sở dữ liệu tốc độ cao, ổn định, dễ sử dụng, tương thích trên nhiều hệ điều hành cung cấp cho một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao nên MySQL rất thích hợp cho các ứng dụng có truy cập cơ sở dữ liệu trên internet và thường được cài đặt như là một phần của Web Server. Người dùng có thể tải về MySQL miễn phí từ trang download MySQL. MySQL làm việc trên nhiều Hệ điều hành và với nhiều ngôn ngữ như PHP, PERL, C, C++, Java, …

Để Cài đặt MySQL trên Ubuntu cũng khá là đơn giản, bạn chỉ cần cập nhật các package trong Ubuntu, tiếp sau đó chỉ cần cài đặt gói mysql-servervà các thao tác bảo mật qua các dòng lệnh bên dưới là bạn có thể sử dụng MySQL làm hệ quản trị cơ sở dữ liệu cho Webs Server của mình. Trong bài viết này MZE sẽ hướng dẫn bạn cài MySQL 5.7 trên Ubuntu 18, bạn hãy xem theo dõi các phần bên dưới

Có thể bạn quan tâm :

Phiên bản MySQL sẽ được cài đặt trong bài viết này :

MySQl 5.7.29 để kiểm tra sử dụng lệnh mysql -V
Ubuntu 18.04 LTS Cách kiểm tra phiên bản Ubuntu bằng lệnh lsb_release -a

Các lệnh bạn cần nắm trong bài viết này

sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation

Hướng dẫn cài MySQL

Trên Ubuntu 18.04, chỉ có phiên bản mới nhất của MySQL được bao gồm trong  APT package theo mặc định.

Trước tiên bạn cần cập nhật hệ thống

sudo apt update

Sau đó chạy lệnh sau để cài MySQL

sudo apt install mysql-server

Các gói sẽ được cài đặt theo MySQL, nhấn ” Y ” để đồng ý, nếu không muốn xuất hiện dòng nhắc, bạn có thể thêm -y trong câu lệnh như sau sudo apt install mysql-server -y

sudo apt install mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
grub-pc-bin
Use 'sudo apt autoremove' to remove it.
The following additional packages will be installed:
libaio1 libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-6 libfcgi-perl
libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl
libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libtimedate-perl liburi-perl
mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7
Suggested packages:
libdata-dump-perl libipc-sharedcache-perl libwww-perl mailx tinyca
The following NEW packages will be installed:
libaio1 libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-6 libfcgi-perl
libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl
libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libtimedate-perl liburi-perl
mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server mysql-server-5.7
mysql-server-core-5.7
0 upgraded, 21 newly installed, 0 to remove and 61 not upgraded.
Need to get 19.7 MB of archives.
After this operation, 156 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Nhấn ” Y ” để tiếp tục

Dòng lệnh này sẽ cài đặt MySQL, nhưng sẽ không yêu cầu bạn đặt mật khẩu hay thực hiện bất kỳ thay đổi cấu hình nào.

Mặc định sau khi cài đặt MySQL thì Root User không được đặt Password, để đảm bảo chúng ta sẽ cấu hình bảo mật Database trên MySQL qua những bước bên dưới

Cấu Hình MySQL

Sau khi cài xong MySQL để hoàn tất quá trình bảo mật, bạn nên đặt Password cho tài khoản Root, disable anonymous user, và delete test database, disable remote root logins các thao tác bên dưới sẽ giúp bạn thực hiện các việc này

Chạy lệnh sau

sudo mysql_secure_installation

Sau khi chạy dòng lệnh này bạn sẽ có một số nhắc nhở, bạn sẽ cần thực hiện một số thay đổi đối với các tùy chọn bảo mật cho cài đặt MySQL của bạn

Dòng nhắc đầu tiên sẽ hỏi bạn có muốn cài đặt Plugin xác thực mật khẩu hay không, nó được sử dụng để kiểm tra độ mạnh mật khẩu MySQL. Dòng nhắc tiếp theo sẽ là đặt mật khẩu cho người dùng root MySQL. Nhập và sau đó xác nhận mật khẩu an toàn của bạn. Bạn thực hiện theo các dòng nhắc được MZE in đậm và tô đỏ

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN 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 plugin?

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
Please set the password for root here.
New password: nhập mật khẩu
Re-enter new password: nhập lại mật khẩu


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
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 ( xóa người dùng anonymous )
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 ( đóng chức năng remote login )
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 ( xóa test database )
- 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!

Khởi tạo thư mục dữ liệu MySQL, sử dụng lệnh mysql_install_db đối với các phiên bản trở về trước 5.7.6 và mysqld –initialize đối với các phiên bản 5.7.6 trở về sau.

Điều chỉnh xác thực và quyền của người dùng

Trong các hệ thống Ubuntu chạy MySQL 5.7 (và các phiên bản mới hơn), người dùng MySQL root được đặt để xác thực bằng cách sử dụng plugin auth_socket theo mặc định thay vì bằng mật khẩu. Phương thức xác thực này đảm bảo khả năng bảo mật và sử dụng cao hơn, tuy nhiên bạn sẽ gặp một số vấn đề nếu cần cho phép chương trình bên ngoài sử dụng.

Ví dụ bạn có thể gặp lỗi bên dưới khi truy cập phpMyAdmin.

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Để sử dụng mật khẩu khi kết nối với MySQL với quyền root, bạn sẽ cần phải chuyển phương thức xác thực từ auth_socket sang mysql_native_password. Để làm việc này, hãy sử dụng lệnh sudo mysql để mở MySQL

Lệnh kiểm tra phương thức xác thực mỗi tài khoản người dùng trong MySQL :

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| 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 | *665590A7454AE78B798ED03A94F614C1853CC245 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Để định cấu hình tài khoản root để xác thực bằng mật khẩu, bạn sẽ cần sử dụng lệnh ALTER USER. Hãy chắc chắn thay đổi password với mật khẩu đủ mạnh mà bạn đã chọn và lưu ý rằng lệnh này sẽ thay đổi mật khẩu root bạn đã đặt ở bước đặt mật khẩu root ( Cấu Hình MySQL )

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

Ví dụ bên dưới mình đặt mật khẩu trong ‘password’ không đủ mạnh, nên sẽ xuất hiện lỗi bên dưới, bạn hãy đặt mật khẩu đủ độ mạnh theo chính sách hiện tại

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mzengineer';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Sau khi thay đổi mật khẩu phù hợp chính sách truy vấn sẽ báo OK

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[email protected]#$';
Query OK, 0 rows affected (0.00 sec)

Sau cùng tải lại bảng, cập nhật các thay đổi mới bằng lệnh

FLUSH PRIVILEGES;

Kiểm tra lại phương thức xác thực người dùng, lặp lại câu lệnh sau

SELECT user,authentication_string,plugin,host FROM mysql.user;

Output bên dưới đã xác thực người dùng Root bằng mật khẩu

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

Để thoát MySQL sử dụng lệnh exit

Thêm người dùng mới trong MySQL

Đầu tiên bạn cần truy cập mySQL bằng lệnh mysql -u root -p

Tạo người dùng mới

 mysql> CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'your_pass';

Ví dụ :

Tạo user “mzengineer” với password “[email protected]#

mysql> CREATE USER 'mzengineer'@'localhost' IDENTIFIED BY '[email protected]#';

Liệt kê danh sách người dùng và phương thức xác nhận

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output :

+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *C9CBD1E7434923946DEAD12D07EA228A21372A1A | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *03D2AABF475901D16CD42546DF301D15402052CA | mysql_native_password | localhost |
| phpmyadmin | *C7074BF869079BCC684B017560018AD23EC5C8D3 | mysql_native_password | localhost |
| admin | | auth_socket | localhost |
| mzengineer | *73DED2A68096755A0AC9D9E7CF9E43870060CA15 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
8 rows in set (0.00 sec)

Cấp quyền cho người dùng mới tạo

Cấp quyền người dùng cho tất cả các bảng trong cơ sở dữ liệu

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

Thoát MySQL bằng lệnh exit

Chú ý :

Khi bạn đã bật xác thực mật khẩu cho root  thay phương thức sử dụng plugin auth_socket, như được mô tả ở trên bạn không thể sử dụng lệnh sudo mysql khi truy cập, bạn sẽ cần phải sử dụng một lệnh khác để truy cập vào MySQL Shell để chạy ứng dụng khách MySQL với các đặc quyền người dùng thông thường và bạn sẽ chỉ nhận được các đặc quyền của quản trị viên trong cơ sở dữ liệu bằng cách xác thực thông qua lệnh mysql -u root -p sau đó nhập mật khẩu root mà bạn đã tạo

Bạn có thể xem qua bài viết Các câu lệnh MySQL thường dùng trong Linux Server để thực hiện các thao tác cơ bản trên MySQL như tạo Database, User,….

Kiểm tra hoạt động MySQL

Khởi động MySQL sudo systemclt start mysql

Cho phép MySQL khởi động mỗi khi hệ thống khởi động sudo systemclt enable mysql

Để kiểm tra trạng thái,hoạt động MySQL bằng lệnh sudo systemctl status mysql.service, output bên dưới đã Active (running) là thành công

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

systemctl status mysql.service
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-03-30 20:52:16 UTC; 1h 12min ago
Main PID: 27492 (mysqld)
Tasks: 29 (limit: 1152)
CGroup: /system.slice/mysql.service
└─27492 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Mar 30 20:52:15 ubuntu-04 systemd[1]: Starting MySQL Community Server...
Mar 30 20:52:16 ubuntu-04 systemd[1]: Started MySQL Community Server.

Lệnh kiểm tra phiên bản MySQL đang sử dụng mysql -V

Cấu hình Firewall cho MySQL

Để cho phép MySQL kết nối từ xa, chúng ta cần cấu hình firewall mở port cho MySQL

sudo ufw allow mysql

sudo ufw reload

Kết Luận

Qua bài viết này, bạn có thể tự cài đặt và cấu hình MySQL 5.7 trên Ubuntu 18.04, bạn cũng có thể sử dụng các Linux Commands để thực hiện tạo User, Database trên MySQl. Trong các bài viết tiếp theo MZE sẽ hướng dẫn bạn cài đặt PHP trên Ubuntu, và sẽ tổng hợp để cài đặt LEMP trên Ubuntu

Nếu bài viết có ích hãy LikeShare, và đừng quên đánh giá bài viết bên dưới nhé.

Nguồn MzEngineer.com

LEAVE A REPLY

Please enter your comment!
Please enter your name here