在Debian 10 Buster上使用Apache(LAMP)安裝phpMyAdmin

本教程將向您展示如何在Debian 10 Buster上使用Apache,MariaDB,PHP7.3(LAMP堆棧)安裝phpMyAdmin。 phpMyAdmin是一個免費的開放源代碼的基於Web的數據庫管理工具,用PHP編寫。 它為用戶提供了圖形Web界面來管理MySQL或MariaDB數據庫。 我們還將學習如何在phpMyAdmin上啟用兩因素身份驗證。

phpMyAdmin允許管理員執行以下操作:

  • 瀏覽數據庫和表;
  • 創建,複製,重命名,更改和刪除數據庫;
  • 創建,複製,重命名,更改和刪除表;
  • 進行桌子維護;
  • 添加,編輯和刪除字段;
  • 執行任何SQL語句,甚至多個查詢;
  • 創建,更改和刪除索引;
  • 將文本文件加載到表中;
  • 創建和讀取表或數據庫的轉儲;
  • 將數據導出為SQL,CSV,XML,Word,Excel,PDF和LaTeX格式;
  • 管理多個服務器;
  • 管理MySQL用戶和特權;
  • 使用配置提示檢查服務器設置和運行時信息;
  • 檢查MyISAM表中的參照完整性;
  • 使用示例查詢(QBE)自動創建複雜的查詢
  • 連接所需的表;
  • 創建數據庫布局的PDF圖形;
  • 在數據庫或其子集中進行全局搜索;
  • 使用一組預定義的功能將存儲的數據轉換為任何格式,例如將BLOB數據顯示為圖像或下載鏈接;
  • 管理InnoDB表和外鍵;

先決條件

要遵循本教程,您需要在本地計算機或遠程服務器上運行的Debian 10 OS。

如果您正在尋找VPS(虛擬專用服務器),則可以通過我的推薦鏈接在Vultr創建一個帳戶,以獲取50美元的免費信用(僅限新用戶)。 並且,如果您需要使用域名設置phpMyAdmin,我建議您從NameCheap購買域名,因為價格低廉,而且它們免費提供whois隱私保護。

假設您已經在Debian 10上安裝了LAMP堆棧。如果沒有,請查看以下教程。

  • 如何在Debian 10 Buster上安裝LAMP堆棧(Apache,MariaDB,PHP7.3)

請注意,在Debian上安裝軟件時,您需要具有root特權。 你可以加 須藤 在命令開頭或使用 su - 命令切換到root用戶。

有了這一點,讓我們開始安裝phpMyAdmin。

步驟1:在Debian 10 Server上下載phpMyAdmin

phpMyAdmin未包含在Debian 10軟件存儲庫中,因此我們必須手動下載該軟件。 轉到phpMyAdmin下載頁面以檢查最新的穩定版本。 然後運行以下命令進行下載。

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip

提示:您始終可以使用上述URL格式來下載phpMyAdmin的最新穩定版本。 只需用最新版本號替換4.9.0.1。

然後將其提取。

sudo apt install unzip

unzip phpMyAdmin-4.9.0.1-all-languages.zip

將phpMyadmin 4.9移至 /usr/share/ 目錄。

sudo mv phpMyAdmin-4.9.0.1-all-languages /usr/share/phpmyadmin

然後使Web服務器用戶(www-data)作為此目錄的所有者。

sudo chown -R www-data:www-data /usr/share/phpmyadmin

步驟2:為phpMyAdmin創建MariaDB數據庫和用戶

現在,我們需要登錄到MariaDB控制台,並為phpMyAdmin創建數據庫和用戶。 默認情況下,Debian上的MaraiDB軟件包使用unix_socket來認證用戶登錄,這基本上意味着您可以使用操作系統的用戶名和密碼登錄MariaDB控制台。 因此,您可以運行以下命令來登錄,而無需提供MariaDB根密碼。

sudo mysql -u root

接下來,使用以下SQL命令為phpMyAdmin創建一個新數據庫。 本教程將其命名 phpmyadmin,您可以為數據庫使用任意名稱。

CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

以下SQL命令將創建 phpmyadmin 數據庫用戶並設置密碼,並同時向新用戶授予新數據庫的所有權限,以便以後在phpMyAdmin上可以寫入數據庫。 用您的密碼替換紅色文本。

GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'your_preferred_password';

刷新特權表並退出MariaDB控制台。

FLUSH PRIVILEGES;

EXIT;

步驟3:安裝必需和推薦的PHP模塊。

運行以下命令以安裝phpMyAdmin所需或推薦的PHP模塊。

sudo apt install php-imagick php-phpseclib php-php-gettext php7.3-common php7.3-mysql php7.3-gd php7.3-imap php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp

然後重新啟動Apache。

sudo systemctl restart apache2

步驟4:為phpMyAdmin創建Apache配置

如果要從子目錄訪問phpMyAdmin Web界面,請使用以下命令創建配置代碼段。

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

將以下文本粘貼到文件中。

# phpMyAdmin default Apache configuration

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>

# 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>

保存並關閉文件。 然後啟用此配置代碼段。

sudo a2enconf phpmyadmin.conf

我們還需要創建phpMyAdmin臨時文件夾。

sudo mkdir -p /var/lib/phpmyadmin/tmp
sudo chown www-data:www-data /var/lib/phpmyadmin/tmp

重新加載Apache以使更改生效。

sudo systemctl reload apache2

現在您可以訪問phpMyAdmin Web界面,網址為

your-server-ip/phpmyadmin

如果在本地Debian計算機上安裝了phpMyAdmin,則可以通過在瀏覽器地址欄中鍵入以下文本來訪問phpMyAdmin Web界面。

localhost/phpmyadmin

如果連接被拒絕或無法完成,則可能是防火牆阻止了HTTP請求。 如果使用的是iptables防火牆,則需要運行以下命令來打開TCP端口80和443。

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

如果使用的是UFW防火牆,請運行此命令以打開TCP端口80和443。

sudo ufw allow http
sudo ufw allow https

步驟5:從子域訪問phpMyAdmin

有時,您可能想使用子域來訪問phpMyAdmin Web界面。 這樣,您可以啟用HTTPS加密通信。

首先,我們需要為phpMyAdmin創建一個Apache虛擬主機。 現有的phpMyAdmin配置代碼段可以用作模板。 讓我們將其複製到新文件中。

sudo cp /etc/apache2/conf-enabled/phpmyadmin.conf /etc/apache2/sites-available/phpmyadmin.conf

然後使用命令行文本編輯器(例如Nano)編輯新文件。

sudo nano /etc/apache2/sites-available/phpmyadmin.conf

在此文件的開頭添加以下行。 將pma.example.com替換為phpMyAdmin的首選子域。 不要忘記為此子域創建DNS A記錄。

<VirtualHost *:80>
    ServerName pma.example.com
    DocumentRoot /usr/share/phpmyadmin

    ErrorLog ${APACHE_LOG_DIR}/pma.error.log
    CustomLog ${APACHE_LOG_DIR}/pma.access.log combined

在此文件的末尾添加以下行。

</VirtualHost>

保存並關閉文件。 (要在Nano文本編輯器中保存文件,請按 Ctrl+O,然後按Enter確認。 要退出,請按 Ctrl+X。)然後啟用此虛擬主機。

sudo a2ensite phpmyadmin.conf

重新加載Apache Web服務器以使此更改生效。

sudo systemctl reload apache2

現在您應該能夠通過以下方式訪問phpMyAdmin Web界面

pma.example.com

Debian 10 phpmyadmin Apache

在登錄表單中輸入用戶憑據之前,讓我們啟用HTTPS。

步驟6:使用Apache在phpMyAdmin上啟用HTTPS

為了保護phpMyadmin Web界面的安全,我們可以安裝免費的Let’s Encrypt TLS證書。 運行以下命令以從Debian 10軟件存儲庫安裝Let’s Encrypt客戶端(certbot)。

sudo apt install certbot python3-certbot-apache

Python3-certbot-apache 是Certbot的Apache插件。 現在運行以下命令以獲取並安裝TLS證書。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email [email protected]

說明:

  • –apache: 使用Apache身份驗證器和安裝程序
  • –同意:同意讓我們加密服務條款
  • –重定向:添加301重定向。
  • –hsts:將Strict-Transport-Security標頭添加到每個HTTP響應。
  • –staple-ocsp:啟用OCSP裝訂。
  • –必須裝訂:將OCSP必須裝訂擴展名添加到證書中。
  • -d 標誌後面是域名列表,以逗號分隔。 您最多可以添加100個域名。
  • -電子郵件:用於註冊和恢復聯繫的電子郵件。

系統將詢問您是否要接收來自EFF(電子前沿基金會)的電子郵件。 選擇Y或N後,將自動為您獲取並配置您的TLS證書,如以下消息所示。

安裝phpmyadmin debian 10 buster apache

步驟7:運行phpMyAdmin安裝腳本

在瀏覽器地址欄中輸入以下內容。

your-server-ip/phpmyadmin/setup

要麼

pma.example.com/setup

點擊 New Server 按鈕來配置服務器。

Debian 10 Buster phpmyadmin安裝腳本

然後只需點擊 Apply 按鈕。

在phpmyadmin中添加新服務器

接下來,單擊顯示按鈕以顯示配置文件。

debian 10 phpmyadmin config.inc.php

在裡面 /usr/share/phpmyadmin/ 目錄,創建config.inc.php文件。

sudo nano /usr/share/phpmyadmin/config.inc.php

複製內容 config.inc.php 從phpMyAdmin設置頁面並將其粘貼到 /usr/share/phpmyadmin/config.inc.php 文件。

Debian Buster phpmyadmin配置存儲

步驟8:排除phpMyAdmin登錄錯誤

現在,如果您嘗試使用MariaDB根帳戶登錄phpMyAdmin,您可能會看到以下錯誤。

#1698 - Access denied for user 'root '@'localhost'

mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'

如果您使用用戶登錄 phpmyadmin,您不會看到上述錯誤。 但是,用戶 phpmyadmin 只能用於管理 phpmyadmin 數據庫。 錯誤的原因是,默認情況下,通過unix_socket插件對MariDB超級用戶進行身份驗證,而不是使用 mysql_native_password 插入。 為了解決這個問題,我們可以創建另一個管理員用戶,並將所有特權授予新的管理員用戶。

從命令行登錄到MariaDB服務器。

sudo mysql -u root

創建一個具有密碼身份驗證的管理員用戶。

create user [email protected] identified by 'your-preferred-password';

在所有數據庫上授予所有特權。

grant all privileges on *.* to [email protected] with grant option;

刷新特權並退出;

flush privileges;

exit;

現在,您可以使用來登錄phpMyAmin admin 帳戶並管理所有數據庫。

mysqli_real_connect HY0001698用戶'root'@'localhost'的訪問被拒絕

步驟9:設置phpMyAdmin配置存儲

現在,在phpMyAdmin控制面板中,您可以看到一條警告消息。

The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. Find out why. 
Or alternately go to 'Operations' tab of any database to set it up there.

單擊查找原因鏈接。 然後點擊創建鏈接以在 phpmyadmin 數據庫。

設置phpMyAdmin配置存儲

步驟10:限制對/ setup目錄的訪問

為了限制對/ setup目錄的訪問,我們可以使用Apache Web服務器啟用基本密碼驗證。 執行以下命令,設置用戶密碼。 admin/etc/apache2/htpasswd 文件用於存儲用戶名和密碼。

sudo htpasswd -c /etc/apache2/htpasswd admin

然後編輯phpMyAdmin的Apache配置文件

sudo nano /etc/apache2/sites-available/phpmyadmin-le-ssl.conf

要麼

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

添加以下行。

# 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/apache2/htpasswd
        </IfModule>
        Require valid-user
    </IfModule>
</Directory>

保存並關閉文件。 然後重新加載Apache以使更改生效。

sudo systemctl reload apache2

如果再次訪問phpMyAdmin設置腳本,將要求您輸入用戶名和密碼。

限制對phpmyadmin安裝腳本的訪問

啟用兩因素身份驗證

您還可以通過啟用雙重身份驗證來加強phpMyAdmin,這是4.8版中新增的功能。 要啟用它,請登錄phpMyAdmin。 然後去 Settings -> Two-factor authentication 然後選擇 身份驗證應用程序(2FA)

安全的phpmyadmin

單擊後 配置兩因素身份驗證 按鈕,系統會顯示一個QR碼,您需要使用手機上的兩因素身份驗證應用程序對其進行掃描。

配置兩因素認證phpmyadmin

Google Authenticator是一個受歡迎的2FA應用程序,但我推薦FreeOTP,它是由Red Hat開發的開源2FA應用程序。 輸入2FA應用程序生成的身份驗證代碼後,就會啟用兩因素身份驗證。 如果現在註銷並重新登錄,則除了用戶名和密碼外,還需要輸入驗證碼。

安全的phpmyadmin

包起來

我希望本教程可以幫助您在Debian 10 Buster上使用LAMP安裝phpMyAdmin。 您可能還需要遵循phpMyAdmin安全公告RSS feed。 與往常一樣,如果您發現這篇文章很有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。 保重🙂

Sidebar