Thứ hai, 20/03/2017 | 00:00 GMT+7

Cách cấu hình SSL / TLS cho MySQL trên Ubuntu 16.04

MySQL là hệ quản trị database quan hệ nguồn mở phổ biến nhất trên thế giới. Các trình quản lý gói hiện đại đã giảm bớt một số khó khăn trong việc chạy MySQL, nhưng vẫn còn một số cấu hình cần được thực hiện sau khi cài đặt. Một trong những lĩnh vực quan trọng nhất cần dành thêm thời gian là bảo mật.

Theo mặc định, MySQL được cấu hình để chỉ chấp nhận các kết nối local . Nếu bạn cần cho phép kết nối từ xa, điều quan trọng là phải thực hiện điều đó một cách an toàn. Trong hướng dẫn này, ta sẽ trình bày cách cấu hình MySQL trên Ubuntu 16.04 để chấp nhận các kết nối từ xa với mã hóa SSL / TLS.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần hai server Ubuntu 16.04. Ta sẽ sử dụng một làm server MySQL và một làm client . Tạo một user không phải root với các quyền sudo trên mỗi server này. Làm theo hướng dẫn cài đặt server ban đầu Ubuntu 16.04 của ta để đưa server của bạn vào trạng thái ban đầu thích hợp.

Trên máy đầu tiên, bạn phải cài đặt và cấu hình server MySQL . Làm theo hướng dẫn cài đặt MySQL của ta cho Ubuntu 16.04 để cài đặt và cấu hình phần mềm.

Trên máy thứ hai, cài đặt gói máy khách MySQL . Bạn có thể cập nhật index gói apt và cài đặt phần mềm cần thiết bằng lệnh :

  • sudo apt-get update
  • sudo apt-get install mysql-client

Khi server và client của bạn đã sẵn sàng, hãy tiếp tục bên dưới.

Kiểm tra Trạng thái SSL / TLS hiện tại

Trước khi bắt đầu, ta có thể kiểm tra trạng thái hiện tại của SSL / TLS trên version server MySQL của ta .

Đăng nhập vào phiên MySQL bằng user MySQL root . Ta sẽ sử dụng -h để chỉ định giao diện lặp local IPv4 nhằm buộc client kết nối với TCP thay vì sử dụng file socket local . Điều này sẽ cho phép ta kiểm tra trạng thái SSL cho các kết nối TCP:

  • mysql -u root -p -h 127.0.0.1

Bạn sẽ được yêu cầu nhập password root MySQL mà bạn đã chọn trong quá trình cài đặt. Sau đó, bạn sẽ được đưa vào một phiên MySQL tương tác.

Hiển thị trạng thái của các biến SSL / TLS bằng lệnh :

  • SHOW VARIABLES LIKE '%ssl%';
Output
+---------------+----------+ | Variable_name | Value | +---------------+----------+ | have_openssl | DISABLED | | have_ssl | DISABLED | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | | +---------------+----------+ 9 rows in set (0.01 sec)

Các have_opensslhave_ssl biến đều được đánh dấu là DISABLED . Điều này nghĩa là chức năng SSL đã được biên dịch vào server , nhưng nó vẫn chưa được kích hoạt.

Kiểm tra trạng thái kết nối hiện tại của ta để xác nhận:

  • \s
Output
-------------- mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper Connection id: 30 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.17-0ubuntu0.16.04.1 (Ubuntu) Protocol version: 10 Connection: 127.0.0.1 via TCP/IP Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 TCP port: 3306 Uptime: 3 hours 38 min 44 sec Threads: 1 Questions: 70 Slow queries: 0 Opens: 121 Flush tables: 1 Open tables: 40 Queries per second avg: 0.005 --------------

Như kết quả ở trên cho biết, SSL hiện không được sử dụng cho kết nối của ta , mặc dù ta đã kết nối qua TCP.

Đóng phiên MySQL hiện tại khi bạn kết thúc:

  • exit

Bây giờ ta có thể bắt đầu cấu hình MySQL cho SSL để bảo mật các kết nối của ta .

Tạo certificate SSL / TLS và khóa

Để kích hoạt kết nối SSL với MySQL, trước tiên ta cần tạo certificate và file khóa thích hợp. Một tiện ích được gọi là mysql_ssl_rsa_setup được cung cấp với MySQL 5.7 trở lên để đơn giản hóa quá trình này. Ubuntu 16.04 có một version MySQL tương thích, vì vậy ta có thể sử dụng lệnh này để tạo các file cần thiết.

Các file sẽ được tạo trong folder dữ liệu của MySQL, nằm tại /var/lib/mysql . Ta cần quy trình MySQL để có thể đọc các file được tạo, vì vậy ta sẽ chuyển mysql làm user sở hữu các file được tạo:

  • sudo mysql_ssl_rsa_setup --uid=mysql

Thế hệ sẽ tạo ra kết quả giống như sau:

Output
Generating a 2048 bit RSA private key ...................................+++ .....+++ writing new private key to 'ca-key.pem' ----- Generating a 2048 bit RSA private key ......+++ .................................+++ writing new private key to 'server-key.pem' ----- Generating a 2048 bit RSA private key ......................................................+++ .................................................................................+++ writing new private key to 'client-key.pem' -----

Kiểm tra các file đã tạo bằng lệnh :

  • sudo find /var/lib/mysql -name '*.pem' -ls
Output
256740 4 -rw-r--r-- 1 mysql mysql 1078 Mar 17 17:24 /var/lib/mysql/server-cert.pem 256735 4 -rw------- 1 mysql mysql 1675 Mar 17 17:24 /var/lib/mysqlsql/ca-key.pem 256739 4 -rw-r--r-- 1 mysql mysql 451 Mar 17 17:24 /var/lib/mysqlsql/public_key.pem 256741 4 -rw------- 1 mysql mysql 1679 Mar 17 17:24 /var/lib/mysqlsql/client-key.pem 256737 4 -rw-r--r-- 1 mysql mysql 1074 Mar 17 17:24 /var/lib/mysqlsql/ca.pem 256743 4 -rw-r--r-- 1 mysql mysql 1078 Mar 17 17:24 /var/lib/mysqlsql/client-cert.pem 256736 4 -rw------- 1 mysql mysql 1675 Mar 17 17:24 /var/lib/mysqlsql/private_key.pem 256738 4 -rw------- 1 mysql mysql 1675 Mar 17 17:24 /var/lib/mysqlsql/server-key.pem

Cột cuối cùng hiển thị các tên file đã tạo. Các cột trung tâm hiển thị “mysql” cho biết rằng các file được tạo có quyền sở hữu group và user chính xác.

Các file này là cặp khóa và cặp certificate cho tổ chức phát hành certificate (bắt đầu bằng “ca”), quy trình server MySQL (bắt đầu bằng “ server ”) và cho client MySQL (bắt đầu bằng “máy khách”). Ngoài ra, các file private_key.pempublic_key.pem được MySQL sử dụng để chuyển password một cách an toàn khi không sử dụng SSL.

Bật kết nối SSL trên server MySQL

Các version MySQL hiện đại sẽ tìm kiếm các file certificate thích hợp trong folder dữ liệu MySQL khi server khởi động. Do đó, ta thực sự không cần phải sửa đổi cấu hình MySQL để kích hoạt SSL.

Thay vào đó, ta chỉ có thể khởi động lại dịch vụ MySQL:

  • sudo systemctl restart mysql

Sau khi khởi động lại, hãy mở một phiên MySQL mới bằng lệnh tương tự như trước. Máy khách MySQL sẽ tự động cố gắng kết nối bằng SSL nếu nó được server hỗ trợ:

  • mysql -u root -p -h 127.0.0.1

Hãy cùng xem thông tin ta đã yêu cầu lần trước. Kiểm tra giá trị của các biến liên quan đến SSL:

  • SHOW VARIABLES LIKE '%ssl%';
Output
+---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | ca.pem | | ssl_capath | | | ssl_cert | server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | server-key.pem | +---------------+-----------------+ 9 rows in set (0.00 sec)

Các have_opensslhave_ssl biến đọc “YES” thay vì “TÀN TẬT” lần này. Hơn nữa, các ssl_ca , ssl_certssl_key đã được điền với tên của các certificate liên quan mà ta đã tạo.

Tiếp theo, hãy kiểm tra lại chi tiết kết nối:

  • \s
Output
-------------- . . . SSL: Cipher in use is DHE-RSA-AES256-SHA . . . Connection: 127.0.0.1 via TCP/IP . . . --------------

Lần này, mật mã SSL cụ thể được hiển thị, cho biết rằng SSL đang được sử dụng để bảo mật kết nối của ta .

Thoát trở lại shell:

  • exit

Server của ta hiện có khả năng sử dụng mã hóa, nhưng cần có một số cấu hình bổ sung để cho phép truy cập từ xa và bắt buộc sử dụng các kết nối an toàn.

Cấu hình kết nối an toàn cho khách hàng từ xa

Bây giờ ta đã có SSL trên server , ta có thể bắt đầu cấu hình truy cập từ xa an toàn. Để làm điều này, ta cần:

  • Yêu cầu SSL cho các kết nối từ xa
  • Liên kết với giao diện công khai
  • Tạo user MySQL cho các kết nối từ xa
  • Điều chỉnh các luật firewall của ta để cho phép các kết nối bên ngoài

Cấu hình truy cập từ xa với SSL bắt buộc

Hiện tại, server MySQL được cấu hình để chấp nhận kết nối SSL từ các client . Tuy nhiên, nó sẽ vẫn cho phép các kết nối không được mã hóa nếu khách hàng yêu cầu.

Ta có thể khắc phục điều này bằng cách bật tùy chọn require_secure_transport . Điều này yêu cầu tất cả các kết nối phải được thực hiện với SSL hoặc với socket Unix local . Vì socket Unix chỉ có thể truy cập từ bên trong server , tùy chọn kết nối duy nhất mở cho user từ xa sẽ là với SSL.

Để bật cài đặt này, hãy mở file /etc/mysql/my.cnf trong editor của bạn:

  • sudo nano /etc/mysql/my.cnf

Bên trong, sẽ có hai lệnh !includedir Includeir được sử dụng để tạo nguồn cho các file cấu hình bổ sung. Ta cần đặt cấu hình của riêng mình bên dưới các dòng này để chúng overrides lên cài đặt xung đột nào.

Bắt đầu bằng cách tạo phần [mysqld] để nhắm đến quy trình server MySQL. Trong tiêu đề phần đó, đặt require_secure_transport thành ON :

/etc/mysql/my.cnf
. . .  !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/  [mysqld] # Require clients to connect either using SSL # or through a local socket file require_secure_transport = ON 

Dòng đó là cài đặt duy nhất cần thiết để thực thi các kết nối an toàn.

Theo mặc định, MySQL được cấu hình để chỉ lắng nghe các kết nối có nguồn root trên máy tính local . Để cấu hình nó để lắng nghe các kết nối từ xa, ta có thể đặt bind-address thành một giao diện khác.

Để cho phép MySQL chấp nhận các kết nối trên bất kỳ giao diện nào của nó, ta có thể đặt bind-address thành “0.0.0.0”:

/etc/mysql/my.cnf
. . .  !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/  [mysqld] # Require clients to connect either using SSL # or through a local socket file require_secure_transport = ON bind-address = 0.0.0.0 

Lưu file khi bạn hoàn tất.

Tiếp theo, khởi động lại MySQL để áp dụng các cài đặt mới:

  • sudo systemctl restart mysql

Xác minh MySQL đang lắng nghe trên “0.0.0.0” thay vì “127.0.0.1” bằng lệnh :

  • sudo netstat -plunt
Output
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4330/mysqld tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1874/sshd tcp6 0 0 :::22 :::* LISTEN 1874/sshd

“0.0.0.0” trong kết quả ở trên cho biết MySQL đang lắng nghe các kết nối trên tất cả các giao diện có sẵn.

Tiếp theo, ta cần cho phép các kết nối MySQL thông qua firewall của ta . Tạo một ngoại lệ bằng lệnh :

  • sudo ufw allow mysql
Output
Rule added Rule added (v6)

Như vậy, các nỗ lực kết nối từ xa sẽ có thể đến được server MySQL của ta .

Cấu hình User MySQL Từ xa

Server MySQL hiện đang lắng nghe các kết nối từ xa, nhưng ta hiện không có mọi user được cấu hình có thể kết nối từ một máy tính bên ngoài.

Đăng nhập vào MySQL với quyền là user root để bắt đầu:

  • mysql -u root -p

Bên trong, bạn có thể tạo user từ xa mới bằng CREATE USER . Ta sẽ sử dụng địa chỉ IP của client của bạn trong phần server của thông số kỹ thuật user để hạn chế kết nối với máy đó.

Đối với một số dự phòng trong trường hợp tùy chọn require_secure_transport bị tắt trong tương lai, ta cũng sẽ chỉ định trong quá trình tạo account rằng user này yêu cầu SSL bằng cách bao gồm điều khoản REQUIRE SSL :

  • CREATE USER 'remote_user'@'mysql_client_IP' IDENTIFIED BY 'password' REQUIRE SSL;

Tiếp theo, cấp quyền cho user mới trên database hoặc bảng mà họ phải có quyền truy cập. Để chứng minh, ta sẽ tạo một example database và cung cấp cho chủ sở hữu sử dụng mới của ta :

  • CREATE DATABASE example;
  • GRANT ALL ON example.* TO 'remote_user'@'mysql_client_IP';

Tiếp theo, xóa các quyền để áp dụng các cài đặt đó ngay lập tức:

  • FLUSH PRIVILEGES;

Thoát trở lại shell khi bạn hoàn tất:

  • exit

Server của ta được cài đặt để cho phép kết nối với user từ xa của ta .

Kiểm tra kết nối từ xa

Trên máy khách MySQL , hãy kiểm tra đảm bảo bạn có thể kết nối thành công với server . Sử dụng tùy chọn -u để chỉ định user từ xa và tùy chọn -h để chỉ định địa chỉ IP của server MySQL:

  • mysql -u remote_user -p -h mysql_server_IP

Sau khi chỉ định password , bạn sẽ đăng nhập vào server từ xa.

Kiểm tra đảm bảo rằng kết nối của bạn an toàn:

  • \s
Output
-------------- . . . SSL: Cipher in use is DHE-RSA-AES256-SHA . . . Connection: mysql_server_IP via TCP/IP . . . --------------

Thoát trở lại shell:

  • exit

Tiếp theo, cố gắng kết nối không an toàn:

  • mysql -u remote_user -p -h mysql_server_IP --ssl-mode=disabled

Sau khi được yêu cầu nhập password , kết nối của bạn sẽ bị từ chối:

Output
ERROR 1045 (28000): Access denied for user 'remote_user'@'mysql_server_IP' (using password: YES)

Đây là những gì ta đang làm việc hướng tới. Nó cho thấy rằng các kết nối SSL được phép, trong khi các kết nối không được mã hóa bị từ chối.

Đến đây, server MySQL của ta đã được cấu hình để chấp nhận các kết nối từ xa một cách an toàn. Bạn có thể dừng ở đây nếu điều này đáp ứng các yêu cầu bảo mật của bạn, nhưng có một số phần bổ sung mà ta có thể đưa ra để tăng cường bảo mật và sự tin cậy của ta hơn nữa.

Cấu hình xác thực cho các kết nối MySQL (Tùy chọn)

Hiện tại, server MySQL của ta được cấu hình với certificate SSL được ký bởi tổ chức phát hành certificate được tạo local (CA). Chứng chỉ và cặp khóa của server đủ để cung cấp mã hóa cho các kết nối đến.

Tuy nhiên, ta hiện không tận dụng mối quan hệ tin cậy mà tổ chức phát hành certificate có thể cung cấp. Bằng cách phân phối certificate CA cho khách hàng, cũng như certificate và khóa ứng dụng client , cả hai bên có thể cung cấp bằng chứng rằng certificate của họ được ký bởi tổ chức phát hành certificate tin cậy . Điều này có thể giúp ngăn chặn các kết nối giả mạo đến các server độc hại.

Để thực hiện biện pháp bảo vệ bổ sung, tùy chọn này, ta cần :

  • Chuyển các file SSL thích hợp sang client
  • Tạo file cấu hình client
  • Thay đổi user từ xa của ta certificate request tin cậy

Chuyển Chứng chỉ Khách hàng sang Máy Khách

Để bắt đầu, ta cần lấy MySQL CA và các file certificate client từ server MySQL và đặt chúng trên client MySQL.

Bắt đầu bằng cách tạo một folder trên máy khách MySQL trong folder chính của user mà bạn sẽ sử dụng để kết nối. Gọi cho client-ssl :

  • mkdir ~/client-ssl

Vì khóa certificate nhạy cảm, ta nên khóa quyền truy cập vào folder này để chỉ user hiện tại mới có thể truy cập:

  • chmod 700 ~/client-ssl

Bây giờ, ta có thể sao chép thông tin certificate vào folder mới.

Trên server MySQL , hiển thị nội dung của certificate CA bằng lệnh :

  • sudo cat /var/lib/mysql/ca.pem
Output
-----BEGIN CERTIFICATE----- . . . -----END CERTIFICATE-----

Sao chép toàn bộ kết quả kết quả , bao gồm các dòng BEGIN CERTIFICATEEND CERTIFICATE vào clipboard của bạn.

Trên máy khách MySQL , tạo một file có cùng tên bên trong folder mới:

  • nano ~/client-ssl/ca.pem

Bên trong, dán nội dung certificate đã sao chép từ clipboard của bạn. Lưu file khi bạn hoàn tất.

Tiếp theo, hiển thị certificate ứng dụng client trên server MySQL :

  • sudo cat /var/lib/mysql/client-cert.pem
Output
-----BEGIN CERTIFICATE----- . . . -----END CERTIFICATE-----

, sao chép nội dung vào clipboard của bạn. Hãy nhớ bao gồm dòng đầu tiên và dòng cuối cùng.

Mở file có cùng tên trên máy khách MySQL trong folder client-ssl :

  • nano ~/client-ssl/client-cert.pem

Dán nội dung từ clipboard của bạn. Lưu và đóng file .

Cuối cùng, hiển thị nội dung của file khóa client trên server MySQL :

  • sudo cat /var/lib/mysql/client-key.pem
Output
-----BEGIN RSA PRIVATE KEY----- . . . -----END RSA PRIVATE KEY-----

Sao chép nội dung được hiển thị, bao gồm cả dòng đầu tiên và dòng cuối cùng, vào clipboard của bạn.

Trên máy khách MySQL , hãy mở file có cùng tên trong folder client-ssl :

  • nano ~/client-ssl/client-key.pem

Dán nội dung từ clipboard của bạn. Lưu và đóng file .

Máy khách bây giờ phải có tất cả thông tin đăng nhập cần thiết để truy cập server MySQL. Tiếp theo, ta cần thay đổi user từ xa của bạn .

Yêu cầu certificate từ CA tin cậy cho user từ xa

Hiện tại, client MySQL có sẵn các file để xuất trình certificate của nó cho server khi kết nối. Tuy nhiên, server vẫn chưa được cài đặt để certificate request client từ một CA tin cậy .

Để thay đổi điều này, hãy đăng nhập lại vào account root MySQL trên server MySQL :

  • mysql -u root -p

Tiếp theo, ta cần thay đổi các yêu cầu cho user từ xa của bạn . Thay vì mệnh đề REQUIRE SSL , ta cần áp dụng mệnh đề REQUIRE X509 . Điều này ngụ ý tất cả các bảo mật được cung cấp bởi yêu cầu trước đó, nhưng cũng yêu cầu client kết nối xuất trình certificate được ký bởi tổ chức phát hành certificate mà server MySQL tin cậy.

Để điều chỉnh các yêu cầu của user , hãy sử dụng ALTER USER :

  • ALTER USER 'remote_user'@'mysql_client_IP' REQUIRE X509;

Xóa các thay đổi đảm bảo rằng chúng được áp dụng ngay lập tức:

  • FLUSH PRIVILEGES;

Thoát trở lại shell khi bạn hoàn thành:

  • exit

Tiếp theo, ta có thể kiểm tra đảm bảo rằng ta vẫn có thể kết nối.

Kiểm tra xác thực certificate khi kết nối

Bây giờ là thời điểm tốt để kiểm tra xem liệu ta có thể xác thực cả hai bên khi ta kết nối hay không.

Trên máy khách MySQL , trước tiên hãy thử kết nối mà không cần cung cấp certificate client :

  • mysql -u remote_user -p -h mysql_server_IP
Output
ERROR 1045 (28000): Access denied for user 'remote_user'@'mysql_client_IP' (using password: YES)

Nếu không cung cấp certificate client , server sẽ từ chối kết nối.

Bây giờ, hãy kết nối trong khi sử dụng các --ssl-ca , --ssl-cert--ssl-key để trỏ đến các file có liên quan trong folder ~/client-ssl :

  • mysql -u remote_user -p -h mysql_server_IP --ssl-ca=~/client-ssl/ca.pem --ssl-cert=~/client-ssl/client-cert.pem --ssl-key=~/client-ssl/client-key.pem

Bạn sẽ đăng nhập thành công. Đăng xuất để lấy lại quyền truy cập vào phiên shell của bạn:

  • exit

Bây giờ ta đã xác nhận quyền truy cập vào server , ta có thể thực hiện một cải tiến nhỏ về khả năng sử dụng.

Tạo file cấu hình client MySQL

Để tránh phải chỉ định file certificate mỗi khi bạn kết nối, ta có thể tạo file cấu hình client MySQL đơn giản.

Bên trong folder chính của bạn trên máy khách MySQL , hãy tạo một file ẩn có tên ~/.my.cnf :

  • nano ~/.my.cnf

Ở đầu file , tạo một phần có tên là [client] . Bên dưới, ta có thể đặt các tùy chọn ssl-ca , ssl-certssl-key để trỏ đến các file ta đã sao chép từ server . Nó sẽ giống như thế này:

~ / .my.cnf
[client] ssl-ca = ~/client-ssl/ca.pem ssl-cert = ~/client-ssl/client-cert.pem ssl-key = ~/client-ssl/client-key.pem 

Tùy chọn ssl-ca yêu cầu client xác minh certificate do server MySQL cung cấp có được ký bởi tổ chức phát hành certificate mà ta chỉ đến. Điều này cho phép client tin tưởng rằng nó đang kết nối với server MySQL tin cậy .

Các tùy chọn ssl-certssl-key trỏ đến các file được yêu cầu để chứng minh với server MySQL rằng nó cũng có certificate đã được ký bởi cùng một tổ chức phát hành certificate . Ta cần điều này nếu ta muốn server MySQL xác minh client cũng được CA tin cậy.

Lưu file khi bạn hoàn tất.

Bây giờ, bạn có thể kết nối với server MySQL mà không cần thêm các --ssl-ca , --ssl-cert--ssl-key trên dòng lệnh:

  • mysql -u remote_user -p -h mysql_server_ip

Máy khách và server của bạn bây giờ phải xuất trình certificate khi thương lượng kết nối. Mỗi bên được cấu hình để xác minh certificate từ xa so với certificate CA mà bên đó có local .

Kết luận

Server MySQL của bạn bây giờ sẽ được cấu hình để yêu cầu kết nối an toàn cho các client từ xa. Ngoài ra, nếu bạn đã làm theo các bước để xác thực kết nối bằng cách sử dụng tổ chức phát hành certificate , một số cấp độ tin cậy được cài đặt bởi cả hai bên rằng bên từ xa là hợp lệ .


Tags:

Các tin liên quan

Cách Import, Export database trong MySQL hoặc MariaDB
2016-12-21
Cách thay đổi thư mục dữ liệu MySQL sang vị trí mới trên CentOS 7
2016-12-19
Cách thay đổi thư mục dữ liệu MySQL sang vị trí mới bằng cách sử dụng liên kết biểu tượng
2016-12-02
Cách cài đặt MySQL trên CentOS 7
2016-12-01
Cách cài đặt MySQL trên Ubuntu 16.04
2016-11-23
Cách kết nối với server MySQL từ xa bằng MySQL Workbench
2016-10-21
Cách cấu hình một cụm Galera với MySQL 5.6 trên Ubuntu 16.04
2016-09-02
Cách di chuyển thư mục dữ liệu MySQL đến vị trí mới trên Ubuntu 16.04
2016-07-21
Cách tạo một cụm MySQL nhiều node trên Ubuntu 16.04
2016-06-17
Cách cài đặt MySQL trên Ubuntu 14.04
2016-03-08