首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

phpMyAdmin 安裝配置完整圖文教程(含常見錯誤修復)

     編輯:PHP 相關知識

phpMyAdmin 是最流行的 MySQL/MariaDB Web 管理工具。本文涵蓋:下載驗證、配置文件詳解、認證模式選擇、blowfish_secret 設置、Nginx/Apache 虛擬主機配置、HTTPS 強制、常見報錯(mysqli 擴展缺失、權限、登錄失敗)修復。

1. 下載與驗證

# 官網:https://www.phpmyadmin.net/downloads/
# 建議下載 "english" 版(含所有語言)或 "all-languages"
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz

# 驗證簽名(可選但推薦)
gpg --verify phpMyAdmin-5.2.1-all-languages.tar.gz.asc

# 解壓到 Web 可訪問目錄
tar -xzf phpMyAdmin-5.2.1-all-languages.tar.gz -C /var/www/html/
mv /var/www/html/phpMyAdmin-5.2.1-all-languages /var/www/html/phpmyadmin
chown -R www-data:www-data /var/www/html/phpmyadmin

2. 核心配置文件 config.inc.php

復制 config.sample.inc.php 為 config.inc.php,修改以下關鍵項:

<?php
// 基礎連接
$cfg['Servers'][$i]['host'] = 'localhost';      // 或 127.0.0.1、Socket 路徑
$cfg['Servers'][$i]['port'] = '';               // 空=默認 3306
$cfg['Servers'][$i]['socket'] = '';             // 如 /var/run/mysqld/mysqld.sock
$cfg['Servers'][$i]['user'] = 'root';           // 管理用戶
$cfg['Servers'][$i]['password'] = '';           // 密碼(留空提示輸入)
$cfg['Servers'][$i]['auth_type'] = 'cookie';    // 認證模式:cookie/http/config/signon
$cfg['Servers'][$i]['compress'] = false;        // 壓縮傳輸

// 必須設置:Cookie 認證加密密鑰(32 字符隨機字串)
$cfg['blowfish_secret'] = 'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6'; // openssl_random_pseudo_bytes(32) 生成

// 介面語言
$cfg['DefaultLang'] = 'zh_CN'; // 簡體中文
$cfg['DefaultConnectionCollation'] = 'utf8mb4_general_ci';

// 安全建議
$cfg['ForceSSL'] = true;                    // 強制 HTTPS(需服務器配置 SSL)
$cfg['LoginCookieValidity'] = 1440;         // Cookie 有效期 24 分鐘
$cfg['LoginCookieStore'] = 0;               // 瀏覽器關閉即失效
$cfg['MaxRows'] = 50;                       // 預設顯示行數
$cfg['ShowAll'] = false;                    // 不顯示「顯示全部」

// 隱藏資訊結構數據庫
$cfg['Servers'][$i]['hide_db'] = '^(information_schema|performance_schema|mysql|sys)$';

// 允許無密碼登錄(極不推薦生產)
// $cfg['Servers'][$i]['AllowNoPassword'] = false;
?>

3. 認證模式詳細對比

模式原理優點缺點適用
cookiePHP Session + Cookie 存儲加密憑證支援多用戶、登出、HTTPS 安全需 blowfish_secret、Session 存儲正常**生產首選**
httpHTTP Basic Auth無需 PHP Session、簡單無法登出、瀏覽器彈窗體驗差、憑證明文傳輸(需 HTTPS)內網、臨時
config配置文件寫死用戶/密免登錄、極簡極不安全、任何人訪問即有權限僅本地開發、受信網絡
signon單點登錄 (SSO) 整合統一身份認證需實現 signon_url 接口企業級整合

4. Web 服務器配置片段

Nginx

server {
    listen 443 ssl http2;
    server_name pma.example.com;
    root /var/www/html/phpmyadmin;
    index index.php;

    ssl_certificate /etc/ssl/certs/pma.example.com.crt;
    ssl_certificate_key /etc/ssl/private/pma.example.com.key;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_read_timeout 300;
    }

    # 隱藏敏感目錄
    location ~ ^/(libraries|setup|templates|sql|js/vendor) {
        deny all;
    }
}

Apache

<VirtualHost *:443>
    ServerName pma.example.com
    DocumentRoot /var/www/html/phpmyadmin
    
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/pma.example.com.crt
    SSLCertificateKeyFile /etc/ssl/private/pma.example.com.key
    
    <Directory /var/www/html/phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php
        Require all granted
    </Directory>
    
    # 拒絕敏感目錄
    <Directory /var/www/html/phpmyadmin/libraries>
        Require all denied
    </Directory>
</VirtualHost>

5. 常見錯誤與修復

錯誤訊息原因修復
缺少 mysqli 擴展PHP 未安裝/啟用 php-mysqliapt install php8.1-mysqli && systemctl restart php8.1-fpm
blowfish_secret 不能為空config.inc.php 未設置生成 32 字符隨機串填入
無法登錄 / Access denied用戶密碼錯、主機不匹配、Plugin 為 auth_socket檢查 MySQL 用戶:SELECT user,host,plugin FROM mysql.user;,改用 mysql_native_password
Token mismatch / 頁面過期Session 丟失、Cookie 域名不匹配、blowfish_secret 變更檢查 session.save_path 權限、同域名訪問、固定 blowfish_secret
上傳文件大小超過限制php.ini upload_max_filesize/post_max_size、Nginx client_max_body_size調大上述三處,重載服務
導出/導入超時執行時間限制$cfg['ExecTimeLimit'] = 0; (config.inc.php) 或 php.ini max_execution_time

6. 進階安全加固

  • 修改訪問路徑:目錄改名為隨機字串(如 pma_x7k9),或 Nginx location /secret_pma/ { alias ...; }。
  • IP 白名單:Nginx allow 1.2.3.4; deny all; 或 Apache Require ip 1.2.3.4。
  • 雙因子認證 (2FA):phpMyAdmin 內建 TOTP,配置 $cfg['TwoFactorAuthentication'] = true;。
  • 定期更新:關注 官方安全公告,及時升級。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved