Skip to content
VDS · Cơ sở dữ liệu

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ứngNguyên nhân
Trình duyệt tải xuống adminer.phpPHP chưa được kết nối với đường dẫn này
#1045 Access deniedNgườ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ạnupload_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ôngPool 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.