Khi quy mô website ngày càng được mở rộng thì bạn cần có những chiến lược hiệu quả để phản hồi tốt các yêu cầu từ khách truy cập. Bài viết này sẽ hướng dẫn chi tiết cách cấu hình remote MySQL database để tối ưu hiệu suất trang web trên Ubuntu 20.04.
Những điểm chính
- Điều kiện chuẩn bị: Giúp bạn nắm rõ các yêu cầu về server, MySQL, Nginx, PHP và chứng chỉ TLS/SSL cần thiết để thiết lập môi trường hiệu quả và suôn sẻ.
- Các thực hiện: Hướng dẫn chi tiết các bước thực hiện thiết lập remote database bằng MySQL trên Ubuntu 20.04 để tối ưu hiệu suất website.
- Giới thiệu VPS Vietnix: Biết đến Vietnix là nhà cung cấp VPS tốc độ cao, ổn định, giúp tối ưu hiệu suất, tăng tốc độ tải trang.
Điều kiện để thiết lập cơ sở dữ liệu từ xa với MySQL trên Ubuntu 20.04
Bài viết này sẽ hướng dẫn trên WordPress. Các ứng dụng khác chạy bằng MySQL cũng có thể được cấu hình theo cách tương tự.

Trước khi bắt đầu, bạn đọc hãy bảo đảm đáp ứng đủ các điều kiện sau:
- Có hai server Ubuntu 20.04. Mỗi server có một user non-root với quyền sudo và firewall UFW bật sẵn (Hướng dẫn chi tiết cách thiết lập tường lửa bằng UFW trên Ubuntu 20.04 tại đây). Trong đó một server sẽ host backend MySQL (tạm gọi là database server). Server còn lại sẽ kết nối đến database server từ xa này và hoạt động như web server (tạm gọi là web server trong hướng dẫn này).
- Trên database server cần cài đặt sẵn MySQL.
- Trên web server đã cài sẵn Nginx và PHP.
- Có thể cài đặt chứng chỉ TLS/SSL trên server.
Việc thiết lập cơ sở dữ liệu từ xa đòi hỏi server database phải luôn hoạt động ổn định và bảo mật. Nếu bạn đang tìm kiếm một giải pháp VPS giá rẻ, mạnh mẽ và đáng tin cậy cho database server hay web server của mình, hãy tham khảo ngay các gói VPS tốc độ cao của Vietnix.
Với hạ tầng hiện đại, ổ cứng tốc độ cao, không giới hạn data transfer và đội ngũ hỗ trợ 24/7, Vietnix sẽ giúp bạn dễ dàng triển khai và quản lý server MySQL từ xa, đảm bảo hiệu suất và an toàn dữ liệu cho ứng dụng WordPress hoặc các ứng dụng khác của bạn. Truy cập ngay website Vietnix để tìm hiểu thêm và lựa chọn gói VPS phù hợp nhất.

VPS Giá rẻ Vietnix: UPTIME VƯỢT TRỘI – chi phí tối ưu
Ổn định, an toàn, tiết kiệm – Nền tảng vững chắc cho website và ứng dụng của bạn.
Xem thêm: Hướng dẫn chi tiết cách cài đặt Nginx trên Ubuntu 20.04
Các bước thiết lập cơ sở dữ liệu từ xa với MySQL trên Ubuntu 20.04
- Bước 1: Cấu hình MySQL để nghe kết nối remote trên database server
- Bước 2: Thiết lập database WordPress và thông tin đăng nhập remote trên database server
- Bước 3: Kiểm tra kết nối remote và local
- Bước 4: Chuẩn bị web server để cài đặt WordPress
- Bước 5: Cài đặt WordPress trên web server
- Bước 6: Thiết lập file cấu hình WordPress
- Bước 7: Thiết lập WordPress qua giao diện web
Bước 1: Cấu hình MySQL để nghe kết nối remote trên database server
Lưu trữ dữ liệu trên một server riêng biệt là một cách hiệu quả để mở rộng server sau khi bắt đầu vượt quá giới hạn tài nguyên lưu trữ. Bên cạnh đó, việc này cũng giúp cung cấp cấu trúc cơ bản để cân bằng tải và mở rộng cơ sở hạ tầng sau này. Sau khi cài đặt xong MySQL theo hướng dẫn này, bạn cũng sẽ cần thay đổi một số giá trị để cho phép kết nối từ các máy tính khác.
Hầu hết các thay đổi trong cấu hình của MySQL có thể được thực hiện trong file mysqld.cnf
ở thư mục /etc/mysql/mysql.conf.d/
. Mở file này trên database server bằng quyền root:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
File này được chia thành các phần khác nhau, đánh dấu bằng nhãn chứa trong cặp cấu ngoặc vuông ([]
). Tìm phần có nhãn mysqld
như dưới đây:
. . .
[mysqld]
. . .
Trong phần này, tìm tham số bind-address
– cho biết địa chỉ mạng để phần mềm database nghe kết nối. Theo mặc định thì giá trị này là 127.0.0.1
, vì vậy MySQL chỉ được cấu hình để nghe các kết nối cục bộ. Bây giờ bạn cần đổi thành địa chỉ IP bên ngoài mà server có thể kết nối đến.
Nếu cả hai server đều trong một Datacenter với khả năng kết nối mạng riêng thì hãy dùng địa chỉ IP private của database server. Nếu không thì bạn cũng có thể dùng địa chỉ IP public.
[mysqld]
. . .
bind-address = db_server_ip
Bạn sẽ kết nối đến database qua internet, do đó nên sử dụng kết nối được mã hóa để đảm bảo an toàn cho dữ liệu. Nếu không mã hóa kết nối MySQL thì bất kỳ ai trên mạng cũng có thể nghe lén (sniff) thông tin giữa server web và database.
Thêm dòng dưới đây vào sau bind-address
để mã hóa kết nối MySQL:
[mysqld]
. . .
require_secure_transport = on
. . .
Sau đó lưu rồi đóng file lại.
Để kết nối SSL có thể hoạt động, ta sẽ cần tạo một số key và chứng chỉ. MySQL một lệnh cho phép thực hiện các thao tác này hoàn toàn tự động.
Chạy lệnh dưới đây để tạo các file cần thiết:
sudo mysql_ssl_rsa_setup --uid=mysql
Restart lại database để yêu cầu MySQL cập nhật cấu hình và thêm thông tin SSL mới:
sudo systemctl restart mysql
Xác nhận xem server có đang nghe các interface bên ngoài hay không bằng lệnh ss
:
sudo ss -plunt | grep mysqld
Output
tcp LISTEN 0 70 127.0.0.1:33060 0.0.0.0:* users:(("mysqld",pid=4053,fd=22))
tcp LISTEN 0 151 db_server_ip:3306 0.0.0.0:* users:(("mysqld",pid=4053,fd=24))
Trong đó, ss
hiển thị các thống kê về hệ thống mạng của server. Từ đó bạn có thể thấy một tiến trình tên mysqld
được đính kèm với db_server_ip
tại cổng 3306
– cổng tiêu chuẩn của MySQL. Do đó bạn có thể đảm bảo rằng server đang nghe trên đúng interface.
Tiếp đến, mở cổng này trên firewall để cho phép lưu lượng truy cập:
sudo ufw allow mysql
Bước 2: Thiết lập database WordPress và thông tin đăng nhập remote trên database server
Bây giờ MySQL đang nghe trên địa chỉ IP bên ngoài, tuy nhiên vẫn chưa có user hay database từ xa nào được cấu hình. Bây giờ hãy tạo một database cho WordPress và một cặp user có quyền truy cập.
Kết nối đến MySQL bằng quyền root:
sudo mysql
Lưu ý: Nếu sử dụng phương thức xác thực bằng password thì hãy chạy lệnh sau để truy cập MySQL shell:
mysql -u root -p
Sau đó nhập mật khẩu root cho tài khoản MySQL.
Trong MySQL prompt, tạo một database mới cho WordPress sử dụng. Giả sử bạn đặt tên nó là wordpress
:
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Bây giờ bạn cần tạo một cặp user: một user chỉ có ở server cục bộ và một user ở xa tương ứng với địa chỉ IP của web server.
Trước tiên, tạo local user (có tên là local_db_user
), sau đó dùng localhost
trong phần khai báo để biết tài khoản này chỉ tương ứng với các kết nối cục bộ:
CREATE USER 'local_db_user'@'localhost' IDENTIFIED BY 'password';
Sau đó gán đầy đủ quyền truy cập vào database wordpress
cho tài khoản này:
GRANT ALL PRIVILEGES ON wordpress.* TO 'local_db_user'@'localhost';
Bây giờ user này có thể thực hiện bất kỳ thao tác nào trên database cho WordPress. Tuy nhiên user này không thể được sử dụng từ xa vì chỉ khớp với các kết nối từ máy cục bộ. Do đó, bạn cần tạo thêm một tài khoản khớp với các kết nối từ web server.
Lưu ý rằng bạn cần có một địa chỉ IP sử dụng cùng một mạng đã cấu hình trong file mysqld.cnf
. Do đó, nếu trong file này bạn chỉ định một địa chỉ IP mạng private thì bạn cũng sẽ dùng địa chỉ IP private của web server trong hai lệnh dưới đây. Ngược lại, nếu dùng mạng public thì bạn sử dụng địa chỉ IP public của web server:
CREATE USER 'remote_user'@'web_server_ip' IDENTIFIED BY 'password';
Sau đó cung cấp quyền tương tự như user cục bộ:
GRANT ALL PRIVILEGES ON wordpress.* TO 'remote_user'@'web_server_ip';
Flush các đặc quyền để MySQL sử dụng:
FLUSH PRIVILEGES;
Sau đó thoát MySQL prompt:
exit
Bước 3: Kiểm tra kết nối remote và local
Log in vào web server để kiểm tra kết nối remote:
ssh remote_user@web_server_ip
Bạn sẽ cần cài đặt thêm một số công cụ client cho MySQL trên web server để truy cập remote database. Trước tiên, cập nhật cache package cục bộ:
sudo apt update
Cài đặt bộ công cụ client MySQL:
sudo apt install mysql-client
Sau đó kết nối đến database server bằng cú pháp dưới đây:
mysql -u remote_user -h db_server_ip -p
Hãy đảm bào rằng bạn đã sử dụng đúng địa chỉ IP cho database server. Nếu đã cấu hình MySQL để nghe mạng private thì hãy nhập địa chỉ IP private của mạng, ngược lại thì hãy dùng địa chỉ IP public tương ứng.
Bây giờ ta cần nhập password cho tài khoản remote_user
, sau đó ta sẽ vào được prompt của MySQL. Kiểm tra xem có đang dùng SSL bằng lệnh sau:
status
Nếu kết nối đang sử dụng SSL thì sẽ có dòng SSL:
như dưới đây:
Output
--------------
mysql Ver 8.0.29-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
Connection id: 14
Current database:
Current user: remote_user@web_server_ip
SSL: Cipher in use is TLS_AES_256_GCM_SHA384
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.29-0ubuntu0.20.04.2 (Ubuntu)
Protocol version: 10
Connection: db_server_ip via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
TCP port: 3306
Binary data as: Hexadecimal
Uptime: 1 hour 8 min 28 sec
Threads: 2 Questions: 69 Slow queries: 0 Opens: 206 Flush tables: 3 Open tables: 125 Queries per second avg: 0.016
--------------
Bây giờ thoát khỏi prompt bằng lệnh exit
. Như vậy là bạn đã có thể truy cập cục bộ và truy cập từ web server. Tuy nhiên bạn chưa xác nhận xem các kết nối khác có bị từ chối hay không. Để kiểm tra xem, bạn có thể thực hiện tương tự từ một server thứ ba, server này chưa được cấu hình một tài khoản user cụ thể nào để đảm bảo server chưa được gán quyền truy cập.
Trước khi kiểm tra kết nối, ca tần cài đặt công cụ client MySQL như các bước trên:
mysql -u wordpressuser -h db_server_ip -p
Nếu lệnh này sẽ xảy ra lỗi như dưới đây thì database server đã có khả năng từ chối truy cập từ những user chưa được xác thực.
Output
ERROR 1130 (HY000): Host '203.0.113.12' is not allowed to connect to this MySQL server
Bước 4: Chuẩn bị web server để cài đặt WordPress
WordPress cùng với các plugin đều dựa trên những tiện ích mở rộng của PHP, vì vậy bạn cần cài sẵn Nginx và PHP trước khi bắt đầu. Trước tiên, cài đặt một số tiện ích PHP để dùng cho WordPress như sau:
sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip
Sau khi hoàn tất việc cài đặt, restart lại tiến trình PHP-FPM để process PHP đang chạy có thể sử dụng những tính năng vừa cài đặt:
sudo systemctl restart php7.4-fpm
Bây giờ bạn cần thực hiện một số thay đổi cho các file Nginx server block. Bạn cần có sẵn một file config /etc/nginx/sites-available
được cấu hình để phản hồi lại tên miền hoặc địa chỉ IP của server, đồng thời được bảo vệ bằng chứng chỉ TLS/SSL. Ví dụ này sẽ làm việc trên thư mục /etc/nginx/sites-available/your_domain.
Bên cạnh đó, /var/www/your_domain
cũng sẽ được dùng như root directory. Bạn đọc cần lưu ý chỉnh tên thư mục tương ứng với máy của mình.
Mở file server block bằng một text editor bất kỳ:
sudo nano /etc/nginx/sites-available/your_domain
Trong server block này bạn cần thêm một vài block vị trí khác. Trước tiên là block để khớp các request đến /favicon.ico
và /robots.txt
. Cụ thể, bạn sẽ dùng biểu thức chính quy (regex) để khớp bất kỳ request nào cho các file tĩnh, tắt chế độ logging và đánh dấu ưu tiên cache vì các file này thường tốn rất nhiều tài nguyên để phục vụ lại.
Bạn có thể chỉnh sửa danh sách file tĩnh này để chứa bất kỳ phần mở rộng nào khác mà trang có thể sử dụng:
server {
server_name your_domain www.your_domain;
root /var/www/your_domain;
index index.html index.htm index.php;
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
. . .
}
Bên trong block location /
có sẵn, bạn có thể thay đổi danh sách try_files
. Trước tiên, comment thiết lập mặc định bằng cách thêm ký hiệu #
ở phía trước. Sau đó thêm các dòng dưới đây:
server {
. . .
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
. . .
}
Bây giờ thay vì trả về lỗi 404
(mặc định) thì quyền kiểm soát sẽ được truyền sang file index.php
với các đối số được yêu cầu.
Sau khi kết thúc bước này, phần đầu của file sẽ có dạng như dưới đây:
server {
server_name your_domain www.your_domain;
root /var/www/your_domain;
index index.html index.htm index.php;
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
location / {
# try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
...
}
Sau đó lưu và đóng lại file. Bây giờ hãy thử kiểm tra cấu hình cho các lỗi cú pháp:
sudo nginx -t
Nếu không có lỗi trả về thì hãy reload lại Nginx:
sudo systemctl reload nginx
Bước 5: Cài đặt WordPress trên web server
Để minh họa khả năng của server MySQL remote, bạn sẽ cài đặt và cấu hình WordPress – hệ thống quản lý nội dung (CMS) phổ biến nhất hiện nay. Vietnix khuyên bạn nên download WordPress trực tiếp từ website chính thức để đảm bảo an toàn.
Trước tiên, chuyển sang thư mục có thể viết được (nên dùng các thư mục tạm thời như /tmp
):
cd /tmp
Download phiên bản mới nhất của WordPress:
curl -LO https://wordpress.org/latest.tar.gz
Giải nén file vừa download:
tar xzvf latest.tar.gz
Copy file cấu hình mẫu vào tên file mà WordPress đọc:
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
Sau đó copy toàn bộ nội dung của thư mục vào tài liệu gốc. Trong đó flag -a
giúp đảm bảo mọi quyền đều được giữ lại. Lệnh này sẽ copy cả các file ẩn trong thư mục.
sudo cp -a /tmp/wordpress/. /var/www/your_domain
Tiếp theo, gán quyền sở hữu cho user và group www-data
. Đây là user và group mà Nginx chạy, đồng thời Nginx cũng cần có quyền đọc và ghi các file WordPress để phục vụ website hay thực hiện cập nhật tự động:
sudo chown -R www-data:www-data /var/www/your_domain
Bước 6: Thiết lập file cấu hình WordPress
Trước tiên, mở file cấu hình WordPress để chỉnh sửa một số private key nhằm đảo bảo an toàn cho quá trình cài đặt. WordPress cung cấp sẵn một công cụ tạo key an toàn nên bạn có thể dùng lệnh sau để tạo nhanh:
curl -s https://api.wordpress.org/secret-key/1.1/salt/
Bạn sẽ nhận về các giá trị khác nhau ở dạng define('AUTH_KEY', 'L4|ABC....] %G00O....)');
Copy phần output, rồi sau đó mở file cấu hình WordPress:
sudo nano /var/www/your_domain/wp-config.php
Tìm phần có chứa các giá trị mẫu:
. . .
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
. . .
Xóa những dòng này rồi paste giá trị ở trên vào.
Tiếp theo ta cần đổi tên database, user database và mật khẩu được cấu hình trong MySQL.
Nhập thông tin kết nối cho remote database, sử dụng địa chỉ IP và thông tin đăng nhập giống với các bước ở trên:
. .
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'remote_user');
/** MySQL database password */
define('DB_PASSWORD', 'remote_user_password');
/** MySQL hostname */
define('DB_HOST', 'db_server_ip');
. . .
Bây giờ thêm dòng dưới đây vào sau define( 'DB_COLLATE', '' );
để yêu cầu WordPress sử dụng kết nối SSL cho database MySQL:
...
define( 'DB_COLLATE', '' );
define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);
...
Cuối cùng là lưu rồi đóng file lại.
Bước 7: Thiết lập WordPress qua giao diện web
Bạn sẽ thiết lập WordPress qua giao diện web. Việc thiết lập tương đối đơn giản, WordPress sẽ chỉ hỏi các câu hỏi cần thiết và cài đặt những bảng cần trong database.
Chuyển đến tên miền (hoặc địa chỉ IP public) của web server, theo sau là /wp-admin
:
http://your_domain.com/wp-admin
Sau đó hệ thống sẽ yêu cầu chọn ngôn ngữ muốn sử dụng.

Tiếp đến là trang cài đặt chính. Chọn tên cho trang WordPress và username (nên hạn chế chọn tên admin để đảm bảo bảo mật). Sau đó một password mạnh sẽ được tự động tạo.
Tiếp theo là nhập địa chỉ email và chọn xem có muốn hiển thị trang cho các công cụ tìm kiếm hay không.

Sau khi hoàn tất, bạn sẽ đăng nhập được vào giao diện admin WordPress bằng tài khoản vừa tạo. Bây giờ ta có thể truy cập dashboard để bắt đầu việc tùy chỉnh trang WordPress này.
Tăng tốc website vượt trội với dịch vụ VPS tốc độ cao từ Vietnix
Vietnix là nhà cung cấp VPS uy tín tại Việt Nam, được nhiều cá nhân và doanh nghiệp tin tưởng lựa chọn nhờ hiệu suất vượt trội và tính ổn định cao. Với hạ tầng mạnh mẽ, công nghệ ảo hóa tiên tiến cùng hệ thống tối ưu dành riêng cho website, VPS của Vietnix giúp rút ngắn thời gian tải trang, tăng khả năng xử lý đồng thời và nâng cao trải nghiệm người dùng.
Dù bạn vận hành website thương mại điện tử, blog cá nhân hay hệ thống quản lý doanh nghiệp, dịch vụ VPS tốc độ cao của Vietnix đều là giải pháp lý tưởng để đảm bảo website hoạt động nhanh, mượt và an toàn tuyệt đối.
Thông tin liên hệ:
- Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Website:https://vietnix.vn/
Bài viết này đã hướng dẫn chi tiết cách thiết lập cơ sở dữ liệu từ xa với MySQL trên Ubuntu 20.04 được bảo vệ bằng SSL từ một trang remote WordPress. Các bước thực hiện và lệnh trong hướng dẫn này đều có thể áp dụng được cho bất kỳ ứng dụng web nào. Bạn đọc có thể tham khảo tài liệu hướng dẫn của ứng dụng hoặc database để biết rõ hơn chi tiết thực hiện.
Mọi người cũng đọc thêm
Cách cài đặt và cấu hình Laravel với Nginx trên Ubuntu 20.04 (LEMP)
Cách thiết lập Redis làm cache cho MySQL bằng PHP trên Ubuntu 20.04
Cách cấu hình sao chép nhóm MySQL trên Ubuntu 20.04
Hướng dẫn cách cài đặt và bảo mật phpMyAdmin trên Ubuntu 20.04
Hướng dẫn sử dụng và cài đặt MariaDB trên Ubuntu 20.04