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

Tác giả AI+, T.Sáu 03, 2024, 08:41:38 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 4 Khách đang xem chủ đề.

phpMyAdmin là một phần mềm mã nguồn mở miễn phí được viết bằng PHP. Nó được phát triển cho người mới bắt đầu quản lý cơ sở dữ liệu MySQL và MariaDB thông qua giao diện web. Nó có giao diện web đơn giản, thân thiện với người dùng và mạnh mẽ mà bạn có thể quản lý cơ sở dữ liệu MySQL, tài khoản người dùng và ủy quyền, thực thi các câu lệnh SQL cũng như nhập và xuất dữ liệu qua trình duyệt web.

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách cài đặt phpMyAdmin trên Ubuntu 22.04 và đảm bảo an toàn.

1. Yêu cầu

  • Một máy chủ chạy Ubuntu 22.04.
  • Mật khẩu root được thiết lập trên máy chủ.

2. Những bước đầu tiên

Bạn nên cập nhật các gói hệ thống của mình lên phiên bản mới nhất. Bạn có thể cập nhật tất cả các gói bằng lệnh sau:

Mã nguồn [Chọn]
apt-get update -y
apt-get upgrade -y

Khi tất cả các gói được cập nhật, bạn có thể tiến hành bước tiếp theo.

3. Cài đặt Apache, MariaDB và PHP

phpMyAdmin là một ứng dụng dựa trên PHP chạy trên máy chủ web. Do đó, bạn cần cài đặt máy chủ LAMP trên máy chủ của mình. Bạn có thể cài đặt nó bằng lệnh sau:

Mã nguồn [Chọn]
apt-get install apache2 mariadb-server php-fpm libapache2-mod-php php-cli php-mysql php-zip php-curl php-xml php-mbstring php-zip php-gd unzip -y
Sau khi tất cả các gói đã được cài đặt, hãy khởi động dịch vụ Apache và MariaDB và kích hoạt chúng để chúng được khởi động khi hệ thống khởi động lại:

Mã nguồn [Chọn]
systemctl start apache2 mariadb
systemctl enable apache2 mariadb

Khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

4. Cài đặt và cấu hình phpMyAdmin

Đầu tiên, hãy truy cập trang web phpMyAdmin chính thức, chọn URL của phiên bản mới nhất và tải xuống phiên bản phpMyAdmin mới nhất bằng lệnh sau:

Mã nguồn [Chọn]
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
Khi phpMyAdmin được tải xuống, hãy giải nén tệp đã tải xuống bằng lệnh sau:

Mã nguồn [Chọn]
tar -xvzf phpMyAdmin-latest-all-languages.tar.gz
Tiếp theo, di chuyển thư mục đã giải nén sang thư mục /usr/share bằng lệnh sau:

Mã nguồn [Chọn]
mv phpMyAdmin-5.2.0-all-languages /usr/share/phpmyadmin
Tiếp theo, tạo thư mục tạm thời cho phpMyAdmin bằng lệnh sau:

Mã nguồn [Chọn]
mkdir -p /var/lib/phpmyadmin/tmp
Tiếp theo, đặt quyền sở hữu cho thư mục phpMyAdmin:

Mã nguồn [Chọn]
chown -R www-data:www-data /var/lib/phpmyadmin
Tiếp theo, sao chép tệp cấu hình mẫu phpMyAdmin:

Mã nguồn [Chọn]
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Tiếp theo, cài đặt công cụ pwgen và tạo khóa bí mật bằng lệnh sau:

Mã nguồn [Chọn]
apt-get install pwgen -y
pwgen -s 32 1

Đầu ra:

Mã nguồn [Chọn]
cnWfKjqshvQqoxFPcy7W950IM3DPe5C0
Tiếp theo, bạn cần chỉnh sửa tệp config.inc.php và thay đổi cài đặt mặc định:

Mã nguồn [Chọn]
nano /usr/share/phpmyadmin/config.inc.php
Xác định khóa bí mật của bạn và không bình luận những dòng sau:

Mã nguồn [Chọn]
$cfg['blowfish_secret'] = 'cnWfKjqshvQqoxFPcy7W950IM3DPe5C0'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'password';

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Lưu và đóng tệp khi bạn hoàn tất.

5. Tạo người dùng quản trị cho phpMyAdmin

Vì lý do bảo mật, bạn nên tạo một người dùng riêng để quản lý cơ sở dữ liệu thông qua phpMyAdmin.

Trước tiên hãy nhập các bảng phpMyAdmin vào cơ sở dữ liệu MariaDB bằng lệnh sau:

Mã nguồn [Chọn]
mysql < /usr/share/phpmyadmin/sql/create_tables.sql
Tiếp theo, kết nối với shell MariaDB bằng lệnh sau:

Mã nguồn [Chọn]
mysql
Khi bạn đã kết nối, hãy cấp cho cơ sở dữ liệu PHPMyAdmin tất cả các quyền cần thiết bằng lệnh sau:

Mã nguồn [Chọn]
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';
Tiếp theo, tạo quản trị viên người dùng bằng lệnh sau:

Mã nguồn [Chọn]
MariaDB [(none)]> CREATE USER myadmin;
Cấp cho người dùng quản trị tất cả các quyền cần thiết bằng lệnh sau:

Mã nguồn [Chọn]
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Xóa các quyền và thoát khỏi trình bao MariaDB bằng lệnh sau:

Mã nguồn [Chọn]
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

6. Tạo máy chủ ảo Apache cho phpMyAdmin

Tiếp theo, bạn cần tạo tệp cấu hình cho máy chủ ảo Apache cho phpMyAdmin. Bạn có thể tạo nó bằng lệnh sau:

Mã nguồn [Chọn]
nano /etc/apache2/conf-available/phpmyadmin.conf
Dán các dòng sau:

Mã nguồn [Chọn]
Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php.php
        </IfModule>
        <FilesMatch ".+.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path.
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
    <IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php.php
        </IfModule>
        <FilesMatch ".+.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path.
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        <IfModule mod_authn_file.c>
            AuthType Basic
            AuthName "phpMyAdmin Setup"
            AuthUserFile /etc/phpmyadmin/htpasswd.setup
        </IfModule>
        Require valid-user
    </IfModule>
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

Lưu và đóng tệp khi bạn hoàn tất, sau đó kích hoạt tệp cấu hình phpMyAdmin bằng lệnh sau:

Mã nguồn [Chọn]
a2enconf phpmyadmin.conf
Tiếp theo, bạn sẽ cần tải lại dịch vụ Apache để các thay đổi có hiệu lực:

Mã nguồn [Chọn]
systemctl reload apache2
Bạn có thể kiểm tra trạng thái của dịch vụ Apache bằng lệnh sau:

Mã nguồn [Chọn]
systemctl status apache2
Bạn sẽ thấy đầu ra sau:

Mã nguồn [Chọn]
? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-08-06 09:58:37 UTC; 11min ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 91902 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
   Main PID: 90122 (apache2)
      Tasks: 7 (limit: 2242)
     Memory: 14.3M
        CPU: 423ms
     CGroup: /system.slice/apache2.service
             ??90122 /usr/sbin/apache2 -k start
             ??91906 /usr/sbin/apache2 -k start
             ??91907 /usr/sbin/apache2 -k start
             ??91908 /usr/sbin/apache2 -k start
             ??91909 /usr/sbin/apache2 -k start
             ??91910 /usr/sbin/apache2 -k start
             ??91911 /usr/sbin/apache2 -k start

Aug 06 09:58:37 ubuntu2204 systemd[1]: Starting The Apache HTTP Server...
Aug 06 09:58:37 ubuntu2204 apachectl[90121]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 2>
Aug 06 09:58:37 ubuntu2204 systemd[1]: Started The Apache HTTP Server.
Aug 06 10:09:41 ubuntu2204 systemd[1]: Reloading The Apache HTTP Server...
Aug 06 10:09:41 ubuntu2204 apachectl[91905]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 2>
Aug 06 10:09:41 ubuntu2204 systemd[1]: Reloaded The Apache HTTP Server.

7. Truy cập phpMyAdmin

Bây giờ phpMyAdmin đã được cài đặt và cấu hình. Bây giờ bạn có thể mở trình duyệt web của mình và truy cập phpMyAdmin qua URL http://your-server-ip/phpmyadmin. Bạn sẽ thấy màn hình đăng nhập phpMyAdmin:


Nhập tên người dùng và mật khẩu quản trị viên của bạn và nhấp vào nút "Đăng nhập ". Trên trang tiếp theo, bạn sẽ thấy bảng điều khiển phpMyAdmin:


8. Kích hoạt xác thực hai yếu tố

Bạn nên bảo mật phpMyAdmin bằng xác thực hai yếu tố. Bạn có thể sử dụng chức năng xác thực và ủy quyền trong.htaccess để thực hiện việc này.

Đầu tiên hãy chỉnh sửa tệp cấu hình phpMyAdmin:

Mã nguồn [Chọn]
nano /etc/apache2/conf-available/phpmyadmin.conf
Thêm dòng "AllowOverride All" vào khối máy chủ sau:

Mã nguồn [Chọn]
<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    AllowOverride All

    <IfModule mod_php5.c>

Lưu và đóng tệp khi bạn hoàn tất, sau đó khởi động lại dịch vụ Apache:

Mã nguồn [Chọn]
systemctl restart apache2
Tiếp theo, tạo tệp.htaccess và xác định loại xác thực Apache:

Mã nguồn [Chọn]
nano /usr/share/phpmyadmin/.htaccess
Thêm các dòng sau:

Mã nguồn [Chọn]
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/share/phpmyadmin/.htpasswd
Require valid-user

Lưu và đóng tệp, sau đó tạo người dùng bằng lệnh sau:

Mã nguồn [Chọn]
htpasswd -c /usr/share/phpmyadmin/.htpasswd phpuser
Bạn sẽ được nhắc đặt mật khẩu (xem bên dưới):

Mã nguồn [Chọn]
New password:
Re-type new password:
Adding password for user secureuser

9. Kiểm tra xác thực hai yếu tố phpMyAdmin

Tại thời điểm này, phpMyAdmin được bảo mật bằng xác thực hai yếu tố. Để kiểm tra, hãy mở trình duyệt web của bạn và truy cập phpMyAdmin qua URL http://your-server-ip/phpmyadmin. Bạn sẽ được yêu cầu nhập tên người dùng và mật khẩu bổ sung (xem bên dưới):


Sau khi nhập tên người dùng và mật khẩu, bạn sẽ được chuyển hướng đến trang đăng nhập phpMyAdmin bình thường.

Chúc mừng! Bạn đã cài đặt và bảo mật thành công phpMyAdmin trên Ubuntu 22.04. Bây giờ bạn có thể cài đặt phpMyAdmin trong môi trường phát triển của mình và quản lý cơ sở dữ liệu của mình thông qua trình duyệt web.