Cài đặt và bảo mật phpMyAdmin trên Ubuntu 20.04

PhpMyAdmin là phần mềm mã nguồn mở được viết bằng ngôn ngữ PHP giúp quản trị cở sở dữ liệu MySQL thông qua giao diện web. Bài viết hôm nay mình sẽ hướng dẫn các bạn cài đặt và sử dụng phpMyAdmin một cách an toàn.

Để cài đặt phpMyAdmin, chúng ta cần phải chuẩn bị:

  • Một máy chủ Ubuntu 20.04
  • Ngăn xếp LAMP (Linux, Apache,MySQL và PHP) đã được cài đặt đầy đủ trên máy chủ Ubuntu
  • Hướng dẫn cài đặt phpMyAdmin

Bước 1: Cài đặt phpMyAdmin

  • Đầu tiên, các bạn nên cập nhật các gói dữ liệu mới trước.

$ sudo apt update

  • Sau khi cập nhật, ta sẽ cài đặt phpMyAdmin và các mô-dun php bổ sung bằng lệnh sau:

$ sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

  • php-mbstring: Dùng để quản lý các chuỗi không phải ASCII và chuyển đổi các chuỗi thành các bảng mã hoá khác nhau.
  • php-zip: Hỗ trợ tải các file có đuôi .zip lên phpMyAdmin
  • php-gd: Hỗ trợ thư viện đồ hoạ GD
  • php-json: Cung cấp php hỗ trợ tuần tự hoá json
  • php-curl: Cho phép php tương tác với các loại máy chủ khác nhau bằng các giao thức khác nhau
  • Tiếp theo là bước cấu hình phpMyAdmin

Đối với tuỳ chọn web server, các bạn hãy chọn apache2

Lưu ý: Các bạn nhớ nhấn phím space vào tuỳ chọn mình muốn sau đó nhấn enter để tiếp tục

Chọn Yes khi được hỏi có sử dụng dbconfig-common để thiết lập cơ sở dữ liệu hay không

Sau đó, các bạn sẽ được yêu cầu chọn và xác nhận mật khẩu ứng dụng MySQL cho phpMyAdmin

  • Trường hợp các bạn đã bật plugin xác thực mật khẩu MySQL từ trước thì có thể xảy ra lỗi như hình bên dưới. Để sửa lỗi, ta sẽ tiến hành tắt plugin xác thực này bằng các lệnh sau:

Chọn abort để dừng tiến trình cài đặt

  • Để tắt plugin xác thực mật khẩu, ta dùng các lệnh sau:

$ mysql -u root -p

mysql> UNINSTALL COMPONENT “file://component_validate_password”;

mysql> exit

  • Tiếp theo, ta chạy lại lệnh cài phpMyAdmin

$ apt install phpmyadmin

  • Sau khi đã hoàn thành việc cài đặt, ta sẽ bật lại plugin này bằng các lệnh bên dưới:

$ mysql -u root -p

mysql> INSTALL COMPONENT “file://component_validate_password”;

mysql> exit

  • Bật tiện ích mbstring

$ sudo phpenmod mbstring

  • Khởi động lại apache

$ sudo systemctl restart apache2

Bước 2: Thiết lập quyền user

  • Để kiểm tra phương thức xác thực mà mỗi user MySQL, ta sử dụng bằng lệnh sau:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

caching_sha2_password là phương thức xác thực mặc định của MySQL 8.0, vì nó cung cấp mã hóa mật khẩu an toàn hơn so với phiên bản cũ. Tuy nhiên, vẫn có một số phiên bản PHP gặp lỗi khi sử dụng phương thức này. PHP đã thông báo rằng kể từ phiên bản PHP 7.4 sự cố này sẽ được khắc phục, nhưng nếu các bạn vẫn gặp lỗi khi cố đăng nhập vào phpMyAdmin thì bạn nên chuyển sang phương thức xác thực mysql_native_password

  • Tạo user mới

mysql> CREATE USER ‘test’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘TQXoC6glcLzv’;

hoặc

mysql> CREATE USER ‘test’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘TQXoC6glcLzv’;

  • Để đổi password hoặc đổi phương thức xác thực, các bạn có thể dùng lệnh sau:

ALTER USER ‘test’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘TQXoC6glcLzv’;

  • Gán quyền cho user

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘test’@’localhost’ WITH GRANT OPTION;

Sau đó, các bạn thử login vào trang phpMyAdmin bằng trình duyệt

http://146.196.64.148/phpmyadmin
  • Trường hợp bạn không biết địa chỉ IP Public của mình, ta có thể dùng lệnh sau:

$ curl icanhazip.com

  • Cách bảo mật phpMyAdmin

Cách 1: Xác thực

  • Trước tiên, các bạn phải cho phép tệp .htaccesss ghi đè bằng cách thêm chỉ thị AllowOverride All vào phần <Directory /usr/share/phpmyadmin> của tệp cấu hình phpMyAdmin

$ vi /etc/apache2/conf-available/phpmyadmin.conf

<Directory /usr/share/phpmyadmin>

    Options SymLinksIfOwnerMatch

    DirectoryIndex index.php

    AllowOverride All

    . . .

  • Khởi động lại apache

$ systemctl restart apache2

  • Thêm nội dung sau vào tệp .htaccess

$ vi /usr/share/phpmyadmin/.htaccess

AuthType Basic

AuthName “Restricted Files”

AuthUserFile /etc/phpmyadmin/.htpasswd

Require valid-user

Ý nghĩa của từng dòng:

  • AuthType Basic: Chỉ định kiểu xác thực mà bạn đang triển khai. Loại Basic sẽ triển khai xác thực mật khẩu bằng tệp mật khẩu.
  • AuthName: Đặt thông báo cho hộp thoại xác thực.
  • AuthUserFile: Xác định vị trí của tệp mật khẩu được sử dụng để xác thực.
  • Require valid-user: Chỉ những người dùng đã xác thực mới được quyền truy cập vào tài nguyên này.
  • Vị trí bạn tạo tệp mật khẩu là /etc/phpmyadmin/.htpasswd. Bây giờ bạn có thể tạo tệp nàyvà chuyển nó cho người dùng bằng tiện ích htpasswd

$ htpasswd -c /etc/phpmyadmin/.htpasswd auth

Sau đó, các bạn sẽ được nhắc chọn và xác nhận mật khẩu cho người dùng bạn đang tạo. Sau đó, tệp được tạo bằng mật khẩu băm mà bạn đã nhập.

  • Để thêm người dùng thì các bạn chỉ cần bỏ -c đi

$ htpasswd /etc/phpmyadmin/.htpasswd auth2

  • Khởi động lại apache

$ systemctl restart apache2

  • Sau đó các bạn truy cập lại trang phpMyAdmin để kiểm tra

Cách 2: Hạn chế IP đăng nhập

  • Thêm các nội dung sau vào tệp cấu hình phpMyAdmin

$ vi /etc/apache2/conf-available/phpmyadmin.conf

<Directory /usr/share/phpmyadmin>

    Options SymLinksIfOwnerMatch

    DirectoryIndex index.php

    AllowOverride All

    Order Deny,Allow

# Từ chối tất cả các IP Address truy cập vào trang phpMyAdmin

    Deny from all

# Cho phép một hoặc một số IP Address nhất định truy cập vào trang phpMyAdmin

    Allow from 118.69.233.92

    . . .

  • Khởi động lại apache

$ systemctl restart apache2

  • Sau đó các bạn truy cập lại trang phpMyAdmin bằng một địa chỉ IP bất kỳ mà không phải là 118.69.233.92
  • Truy cập bằng địa chỉ IP 118.69.233.92
Was this article helpful?