phpMyAdmin là một công cụ quản lý cho phép người dùng tương tác với các hệ thống quản lý cơ sở dữ liệu như MySQL thông qua giao diện web thay vì sử dụng prompt. Trong bài viết này, mình sẽ hướng dẫn chi tiết cho bạn cách cài đặt và bảo mật phpMyAdmin trên Ubuntu 20.04.
Những điểm chính
- Yêu cầu cần đáp ứng: Để cài đặt và bảo mật phpMyAdmin trên Ubuntu 20.04, bạn cần có một server Ubuntu 20.04, user non-root có quyền sudo, tường lửa ufw, LAMP stack cài đặt sẵn.
- Các bước thực hiện: Bao gồm cài đặt phpMyAdmin, thay đổi phương thức xác thức và quyền của người dùng cùng bảo mật phpMyAdmin.
- Biết đến dịch vụ VPS Vietnix – giải pháp tối ưu cho website và ứng dụng của bạn.
Yêu cầu để cài đặt và bảo mật phpMyAdmin trên Ubuntu 20.04
Để thực hiện theo các bước trong bài viết này, hãy đảm bảo rằng bạn có quyền truy cập vào server Ubuntu 20.04 bằng một user non-root với quyền sudo, đồng thời thiết lập tường lửa bằng ufw
trên hệ thống. Bên cạnh đó, bạn cũng cần cài sẵn LAMP stack (Linux, Apache, MySQL, PHP) trên server, chi tiết có thể xem tại bài viết: 2 cách cài đặt LAMP và cấu hình PHP trên Ubuntu nhanh chóng.
Ngoài ra bạn cũng cần chú ý đến các yếu tố bảo mật khi sử dụng phpMyAdmin, vì công cụ này:
- Giao tiếp trực tiếp với MySQL.
- Thực hiện xác thực bằng thông tin đăng nhập của MySQL.
- Thực thi và trả về kết quả cho các truy vấn SQL.
Chính vì thế, bạn không nên chạy phpMyAdmin trên các hệ thống từ xa thông qua kết nối HTTP không được bảo mật để tránh rò rỉ dữ liệu trên hệ thống.
Nếu bạn chưa có máy chủ, hãy cân nhắc sử dụng dịch vụ VPS AMD của Vietnix. VPS AMD của Vietnix cung cấp hiệu suất cao, ổn định và bảo mật, là lựa chọn lý tưởng để chạy phpMyAdmin và các ứng dụng web khác. Với VPS AMD của Vietnix, bạn sẽ có toàn quyền kiểm soát máy chủ của mình, dễ dàng cài đặt và cấu hình LAMP stack, phpMyAdmin theo hướng dẫn trong bài viết. Ngoài ra, Vietnix còn cung cấp dịch vụ hỗ trợ khách hàng chuyên nghiệp, giúp bạn giải quyết mọi vấn đề trong quá trình sử dụng.
Các bước cài đặt phpMyAdmin trên Ubuntu 20.04
Bước 1 – Cài đặt phpMyAdmin
phpMyAdmin có thể được cài đặt từ repo của Ubuntu bằng APT. Trước tiên hãy cập nhật chỉ mục gói của server bằng user non-root như sau:
sudo apt update
Bên cạnh việc cài đặt package phpmyadmin
thì trang chủ của công cụ này cũng khuyến khích người dùng cài đặt thêm một số module để bổ sung tính năng và cải thiện hiệu năng cho phpMyAdmin. Nếu đã cài đặt LAMP stack thì bạn sẽ có sẵn một số module.
Các tiện ích được khuyến khích nên cài đặt gồm có:
php-mbstring
: Mo.php-zip
: Hỗ trợ upload file.zip
lên phpMyAdmin.php-gd
: Hỗ trợ thư viện GD Graphics.php-json
: Hỗ trợ tuần tự hóa bằng JSON.-
php-curl
: Cho phép PHP tương tác với nhiều loại server bằng các giao thức khác nhau.
Lưu ý rằng nếu bạn đang sử dụng phiên bản PHP khác bản mặc định có sẵn trong LAMP stack thì cần phải cài đặt phiên bản tương ứng cho những module trên. Ví dụ, nếu bạn đang sử dụng PHP 8.0 thì sẽ cần cài đặt package php8.0-mbstring
thay vì php-mbstring
.
Tiếp đến, chạy lệnh dưới đây để cài đặt các package trên cho hệ thống:
sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
Sau đó bạn sẽ được yêu cầu xác nhận một số cấu hình cài đặt như sau:
- Trong phần chọn server, hãy chọn
apache2
.
Lưu ý
Khi lời nhắc hiển thị trên màn hình thì apache2
sẽ được highlight sẵn, nhưng vẫn chưa được chọn. Do đó nếu bạn chỉ nhấn SPACE
để chọn Apache thì trình cài đặt sẽ không di chuyển các file cần thiết trong quá trình cài. Bạn cần nhấn SPACE
, TAB
sau đó ENTER
để chọn được Apache.
- Chọn
Yes
khi được hỏi có muốn sử dụngdbconfig-common
để thiết lập cơ sở dữ liệu (database) hay không. - Sau đó chọn và xác nhận mật khẩu ứng dụng MySQL cho phpMyAdmin.
Lưu ý rằng trong quá trình cài đặt LAMP stack, nếu bạn enable plugin Validate Password thì sẽ dẫn đến lỗi khi thiết lập password cho user phpmyadmin (cho đến thời điểm viết bài thì lỗi vẫn còn):

Để giải quyết vấn đề này, hãy chọn option abort để dừng quá trình cài đặt. Sau đó mở prompt MySQL lên:
sudo mysql
Hoặc nếu đã bật phương thức xác thực mật khẩu cho user root của MySQL thì bạn có thể chạy lệnh sau, rồi nhập mật khẩu khi được yêu cầu:
mysql -u root -p
Sau đó chạy lệnh dưới đây trong prompt để disable, ngăn không cho load plugin Validate Password trên server MySQL:
UNINSTALL COMPONENT "file://component_validate_password";
Sau đó bạn có thể đóng client MySQL lại bằng lệnh exit
. Bây giờ hãy thử cài đặt lại package phpmyadmin
để xem còn gặp lỗi không:
sudo apt install phpmyadmin
Sau khi cài đặt xong, bạn có thể mở MySQL lại bằng lệnh sudo mysql
hoặc mysql -u root -p
như ở trên rồi enable lại plugin:
INSTALL COMPONENT "file://component_validate_password";
Quá trình cài đặt sẽ tự động trên file cấu hình của phpMyAdmin vào thư mục /etc/apache2/conf-enabled/
. Để hoàn tất việc cấu hình để Apache và PHP cùng hoạt động với phpMyAdmin, bây giờ bạn chỉ cần enable tiện ích mbstring
:
sudo phpenmod mbstring
Sau đó restart lại Apache để áp dụng các thay đổi:
sudo systemctl restart apache2
Như vậy là ta đã cài đặt và cấu hình xong phpMyAdmin để hoạt động được với Apache. Trước khi bắt đầu tương tác với các database MySQL thì bạn cần đảm bảo rằng những user MySQL có đủ các quyền cần thiết để tương tác với chương trình.
Bước 2 – Thay đổi phương thức xác thức và quyền của người dùng
Sau khi cài đặt phpMyAdmin lên server thì nó sẽ tự động tạo một user database có tên phpmyadmin, dùng để thực hiện một số tiến trình cơ bản cho chương trình. Thay vì đăng nhập vào user này với mật khẩu quản trị mà bạn đã chọn trong quá trình cài đặt, bạn nên đăng nhập bằng user root của MySQL hoặc một user chuyên quản lý database thông qua giao diện phpMyAdmin.
Cấu hình truy cập mật khẩu cho tài khoản root MySQL
Trong hệ thống Ubuntu đang chạy MySQL 5.7 trở lên, user root MySQL được thiết lập để xác thực bằng plugin auth_socket
thay vì mật khẩu. Việc này giúp đảm bảo bảo mật tốt hơn, nhưng mặt khác lại phức tạp hóa một số tác vụ cơ bản, chẳng hạn như khi ta cần cho phép một chương trình ngoài như phpMyAdmin truy cập user này.
Để đăng nhập vào phpMyAdmin bằng user root MySQL, bạn cần đổi phương thức xác thực auth_socket
thành xác thực mật khẩu. Trước tiên hãy mở prompt MySQL bằng lệnh sudo mysql
.
Sau đó kiểm tra phương thức xác thức của từng tài khoản user MySQL:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+-------------------------+----------------------------------------------------------------------------+----------------------------------+-------------+
| user | authentication_string | plugin | host |
+-------------------------+----------------------------------------------------------------------------+----------------------------------+-------------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | caching_sha2_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | caching_sha2_password | localhost |
+-------------------------+----------------------------------------------------------------------------+----------------------------------+-------------+
5 rows in set (0.00 sec)
Ở ví dụ này, có thể thấy user root đang sử dụng plugin auth_socket
để xác thực. Nếu muốn chuyển sang xác thực bằng mật khẩu thì bạn có thể chạy lệnh ALTER USER
, lưu ý hãy đổi phần password
ở lệnh dưới đây thành mật khẩu tương ứng của bạn:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Lưu ý
Lệnh ALTER USER
sẽ thiết lập cho user root MySQL xác thực bằng plugin caching_sha2_password
. Theo tài liệu hướng dẫn của MySQL thì caching_sha2_password
là plugin xác thực chính của MySQL vì có khả năng mã khóa mật khẩu tốt hơn phương thức cũ là mysql_native_password
.
Tuy nhiên, một số phiên bản PHP không hoạt động tốt với caching_sha2_password
, do đó khi gặp lỗi thì bạn có thể cho root xác thực bằng mysql_native_password
như sau:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Sau đó kiểm tra các phương thức xác thực của từng user. Bây giờ user root sẽ không còn sử dụng plugin auth_socket
nữa:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+-------------------------+----------------------------------------------------------------------------+----------------------------------+-------------+
| user | authentication_string | plugin | host |
+-------------------------+----------------------------------------------------------------------------+----------------------------------+-------------+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | caching_sha2_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | caching_sha2_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | caching_sha2_password | localhost |
+-------------------------+----------------------------------------------------------------------------+----------------------------------+-------------+
5 rows in set (0.00 sec)
Đến bước này, bạn đã có thể đăng nhập vào giao diện phpMyAdmin bằng user root với mật khẩu đã chọn trong quá trình cài đặt.
Cấu hình truy cập mật khẩu cho một user MySQL chuyên biệt
Bên cạnh cách trên thì bạn cũng có thể kết nối đến phpMyAdmin bằng một user chuyên biệt. Đầu tiên hãy mở MySQL shell bằng lệnh sudo mysql
. Nếu user root sử dụng phương pháp xác thực mật khẩu thì hãy chạy lệnh dưới đây, sau đó nhập mật khẩu để kết nối:
mysql -u root -p
Bây giờ hãy tạo một user mới rồi đặt mật khẩu:
CREATE USER 'sammy'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Tương tự như ở cách trên, nếu gặp lỗi thì bạn có thể đổi phương thức xác thực từ mysql_native_password
thành caching_sha2_password
như sau:
ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Sau đó gán các quyền phù hợp cho user mới này. Chẳng hạn bạn cần gán đặc quyền user cho mọi bảng trong database, đồng thời cho phép thêm, thay đổi và xóa các đặc quyền thì hãy sử dụng lệnh sau:
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Sau khi hoàn tất, nhập exit
để thoát MySQL shell. Bây giờ bạn có thể truy cập giao diện web bằng cách nhập tên miền hoặc địa chỉ IP public của server như sau:
https://your_domain_or_IP/phpmyadmin

Bây giờ, đăng nhập vào giao diện bằng user root hoặc user vừa cấu hình. Sau khi đăng nhập thì bạn sẽ thấy giao diện như dưới đây:

Như vậy là ta đã kết nối đến phpMyAdmin thành công. Ở bước cuối cùng, bạn sẽ thực hiện một số phương pháp để bảo đảm an toàn cho phpMyAdmin.
Bước 3 – Bảo mật phpMyAdmin
phpMyAdmin là một giải pháp vô cùng phổ biến hiện nay, vì vậy cũng đồng thời là một mục tiêu phổ biến của những kẻ tấn công. Để bảo đảm bảo mật, bạn có thể đặt một gateway ở phía trước ứng dụng bằng phương thức xác thực .htaccess
và các công cụ ủy quyền có sẵn của Apache.
Đầu tiên bạn cần enable các bản ghi đè của file .htaccess
bằng cách chỉnh sửa phpMyAdmin trong file config của Apache. Mở file bằng text editor bất kỳ:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Thêm directive AllowOverrideAll
trong phần <Directory /usr/share/phpmyadmin>
của file:
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
AllowOverride All
. . .
Sau đó lưu và đóng lại file. Cuối cùng là restart Apache để áp dụng các thay đổi:
sudo systemctl restart apache2
Tiếp theo, bạn cần tạo một ứng dụng để triển khai một số phương pháp bảo mật. Trước hết file cần phải được tạo bên trong thư mục ứng dụng. Bạn có thể tạo các file cần thiết rồi mở trong text editor:
sudo nano /usr/share/phpmyadmin/.htaccess
Nhập các thông tin sau vào file:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Trong đó:
AuthType Basic
: Dòng này chỉ định loại xác thực mà bạn đang triển khai. Loại này sẽ thực hiện xác thực mật khẩu bằng file mật khẩu.AuthName
: Đặt thông báo cho hộp thoại xác thực. Bạn chỉ nên cho hiển thị thông tin chung chung, để người dùng trái phép biết được nội dung đang được bảo vệ trên server.AuthUserFile
: Đặt vị trí của file mật khẩu sẽ được sử dụng để xác thực. File này phải nằm ngoài các thư mục đang được phục vụ.Require valid-user
: Cho biết rằng chỉ những user được xác thực mới được cấp quyền truy cập vào tài nguyên này.
Sau khi hoàn tất, hãy lưu rồi đóng lại file. Vị trí bạn đã chọn để lưu file mật khẩu là /etc/phpmyadmin/.htpasswd
. Bây giờ bạn có thể tạo file rồi truyền một user ban đầu vào bằng công cụ htpasswd
:
sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
Sau đó nhập và xác nhận mật khẩu. Bây giờ file sẽ được tạo với mật khẩu đã được hash. Nếu bạn muốn thêm user, cũng có thể sử dụng lệnh tương tự, nhưng không có option -c
:
sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Cuối cùng là restart Apache để áp dụng các thay đổi:
sudo systemctl restart apache2
Bây giờ bạn đã có thể truy cập vào thư mục con của phpMyAdmin. Nhập tài khoản và mật khẩu vừa tạo trước đó:
https://domain_name_or_IP/phpmyadmin
Sau đó bạn sẽ được điều hướng đến trang xác thực của phpMyAdmin để nhập thông tin đăng nhập cho MySQL. Với việc bổ sung thêm thông tin không phải MySQL, bạn đã tạo thêm một lớp bảo mật cho database của mình.
VPS Vietnix – Giải pháp tối ưu cho website và ứng dụng của bạn
Trong thị trường dịch vụ VPS Việt Nam, Vietnix nổi bật như một lựa chọn hàng đầu cho những ai đang tìm kiếm sự ổn định, tốc độ và hiệu suất vượt trội. Với hạ tầng hiện đại, sử dụng 100% ổ cứng SSD NVMe và công nghệ ảo hóa tiên tiến, VPS Vietnix mang đến trải nghiệm mượt mà, không gián đoạn cho website và ứng dụng của bạn.
Không chỉ vậy, Vietnix còn ghi điểm với dịch vụ hỗ trợ khách hàng chuyên nghiệp, tận tâm 24/7, sẵn sàng giải đáp mọi thắc mắc và xử lý sự cố một cách nhanh chóng. Đặc biệt, với hệ thống bảo mật đa lớp, VPS Vietnix đảm bảo an toàn tuyệt đối cho dữ liệu của bạn trước mọi nguy cơ tấn công mạng.
Thông tin liên hệ:
- Hotline: 18001093.
- Email: sales@vietnix.com.vn.
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/.
Trên đây là toàn bộ hướng dẫn cách cài đặt và cấu hình phpMyAdmin trên Ubuntu 20.04 mà mình muốn chia sẻ tới bạn. Với phpMyAdmin, việc quản lý cơ sở dữ liệu MySQL/MariaDB trở nên dễ dàng và trực quan hơn bao giờ hết. Để tìm hiểu thêm các thao tác khác với cơ sở dữ liệu trên Linux, bạn có thể xem những bài viết dưới đây của mình: