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. Bài viết này sẽ hướng dẫn chi tiết cách cài đặt và bảo mật phpMyAdmin trên Ubuntu 20.04.
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 cài đặt sẵn tường lửa cấu hình 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.
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 đang sử dụng VPS, thì việc bảo mật phpMyAdmin và VPS là một phần quan trọng trong việc đảm bảo an toàn và ổn định cho hệ thống. Để đảm bảo rằng VPS của bạn được vận hành một cách chuyên nghiệp và an toàn, hãy cân nhắc sử dụng dịch vụ VPS của Vietnix.
Hạ tầng máy chủ ở Vietnix được bảo vệ bởi hệ thống chống tấn công DDoS chuyên nghiệp do chính Vietnix nghiên cứu và phát triển độc quyền, giúp nâng cao tính ổn định và bảo mật cho hệ thống của bạn.
Hiện tại Vietnix đang cung cấp nhiều gói dịch vụ VPS cho bạn dễ dàng lựa chọn như: VPS NVMe, VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp và VPS GPU với cấu hình, chi phí đa dạng và tài nguyên linh hoạt.
Đăng ký dịch vụ VPS tốc độ cao của Vietnix ngay hôm nay để nhận được nhiều ưu đãi hấp dẫn!
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.
Với 11 năm hoạt động Vietnix hỗ trợ cho hơn 50.000 khách hàng cá nhân và doanh nghiệp phát triển kinh doanh trên internet. Vietnix luôn chú trọng đầu tư vào hạ tầng và nhân sự chất lượng nhằm mang đến cho khách hàng một dịch vụ ổn định nhất. Tính đến thời điểm hiện tại Vietnix tự hào vì đã đạt được những con số ấn tượng như sau:
- 50.000 khách hàng.
- 97% khách hàng đánh giá 5* và giới thiệu dịch vụ sau khi sử dụng.
- 89% khách hàng duy trì dịch vụ đến thời điểm hiện tại.
- 100.000 dịch vụ được kích hoạt.
- Thương hiệu Việt Nam xuất sắc 2022.
Liên hệ Vietnix ngay hôm nay để được trải nghiệm dịch vụ VPS ổn định, tốc độ cao, hỗ trợ chuyên nghiệp với nhiều ưu đãi đặc biệt.
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Hotline: 1800 1093.
- Email: sales@vietnix.com.vn.
Lời kết
Qua bài viết này, bạn đã tìm hiểu được cách cài đặt và cấu hình phpMyAdmin trên Ubuntu 20.04. Bây giờ bạn có thể bắt đầu tạo và quản lý các database của mình. Nếu có bất kỳ thắc mắc nào khác, hãy để lại ở phần bình luận bên dưới để được Vietnix hỗ trợ nhanh nhất.