phpMyAdmin và Adminer: bảng điều khiển cơ sở dữ liệu
Cách cài đặt bảng điều khiển web cho cơ sở dữ liệu trên VDS và khóa chặt để nó không thành cửa vào: truy cập bằng mật khẩu, hạn chế địa chỉ, các lựa chọn thay thế.
Cập nhật 23 tháng 8, 2026
Bảng điều khiển web rất tiện cho những lần chỉnh sửa đột xuất và xem bảng biểu. Đây cũng là nguyên nhân phổ biến nhất khiến máy chủ bị xâm nhập: các URL /phpmyadmin bị dò quét tự động, và biểu mẫu đăng nhập cho phép truy cập trực tiếp vào dữ liệu.
Adminer: một tệp duy nhất
Adminer là một tệp PHP duy nhất, hỗ trợ MySQL, PostgreSQL và SQLite. Không cần cài đặt gì cả:
mkdir -p /var/www/tools
curl -L -o /var/www/tools/adminer.php \
https://github.com/vrana/adminer/releases/latest/download/adminer.php
chown www-data:www-data /var/www/tools/adminer.php
Bạn cần một PHP-FPM đang hoạt động. Tốt nhất nên đổi tên tệp thành một cái gì đó khó đoán — đây không phải là biện pháp bảo vệ, nhưng nó loại bỏ việc quét hàng loạt.
phpMyAdmin
apt install -y phpmyadmin
Gói này tự động kết nối với Apache; với Nginx, hãy chỉ định đường dẫn thủ công:
location /db-panel {
alias /usr/share/phpmyadmin;
index index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}
Bảo vệ bắt buộc
Đừng bao giờ cài bảng điều khiển mà thiếu ba mục sau.
Chỉ cho phép truy cập từ địa chỉ của bạn:
location /db-panel {
allow 203.0.113.10;
deny all;
}
Thêm một mật khẩu ở cấp máy chủ web:
apt install -y apache2-utils
htpasswd -c /etc/nginx/.htpasswd admin
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
Và thứ ba là chỉ dùng HTTPS: chứng chỉ Let's Encrypt. Nếu không có nó, mật khẩu cơ sở dữ liệu sẽ được gửi dưới dạng văn bản thuần.
Lựa chọn tốt nhất: không để bảng điều khiển lộ ra ngoài
Nếu địa chỉ của bạn là động, đừng để bảng điều khiển lộ ra ngoài. Hãy thiết lập một SSH tunnel và làm việc với ứng dụng khách trên máy tính — DBeaver, TablePlus, HeidiSQL:
ssh -L 3307:127.0.0.1:3306 root@YOUR_ADDRESS -N
Chi tiết — truy cập từ xa. Theo cách này, không có gì ngoài SSH lộ ra ngoài, và bạn đơn giản là không cần đến bảng điều khiển.
Những lỗi thường gặp
| Triệu chứng | Nguyên nhân |
|---|---|
Trình duyệt tải xuống adminer.php | PHP chưa được kết nối với đường dẫn này |
#1045 Access denied | Người dùng cơ sở dữ liệu bị ràng buộc với một máy chủ khác |
| Nhập một dump lớn bị gián đoạn | upload_max_filesize và max_execution_time quá nhỏ; tốt hơn nên nhập từ console |
Hàng nghìn yêu cầu tới /phpmyadmin trong nhật ký | Quét thông thường — cần đóng bảng điều khiển lại |
| Bảng điều khiển hoạt động, nhưng trang web thì không | Pool PHP-FPM dùng chung bị vắt kiệt bởi các yêu cầu nặng của bảng điều khiển |
Dump qua bảng điều khiển web trên cơ sở dữ liệu lớn sẽ bị hết thời gian chờ. Một bản sao lưu thực sự được thực hiện từ console theo lịch — sao lưu cơ sở dữ liệu.