phpMyAdmin 是最流行的 MySQL/MariaDB Web 管理介面。本文提供從下載、安裝、核心配置到常見錯誤(如 #1045 存取被拒)的完整解決方案,適用於 Windows/Linux/macOS 環境。
phpMyAdmin-x.x.x-all-languages.zip(含所有語言)或 english 版。/var/www/html/phpmyadmin/ 或 C:\xampp\htdocs\phpmyadmin\。config.sample.inc.php 複製並重命名為 config.inc.php。config.inc.php,設定 $cfg['blowfish_secret'](32 字元隨機字串,用於 Cookie 加密)。https://localhost/phpmyadmin/,輸入 MySQL 帳密登入。<?php
// 基本設定
$cfg['PmaAbsoluteUri'] = ''; // 通常留空自動偵測
$cfg['ExecTimeLimit'] = 300; // 執行時間限制(秒),0=不限制
$cfg['blowfish_secret'] = 'your_32_chars_random_string_here'; // 必填!
$cfg['DefaultLang'] = 'zh_TW'; // 預設語言
$cfg['ServerDefault'] = 1; // 預設伺服器索引
$cfg['VersionCheck'] = true; // 檢查更新
// 伺服器連線設定 (索引 1)
$i = 0;
$i++;
$cfg['Servers'][$i]['host'] = 'localhost'; // 主機名或 IP
$cfg['Servers'][$i]['port'] = ''; // 埠號,留空用預設 3306
$cfg['Servers'][$i]['socket'] = ''; // Unix socket 路徑
$cfg['Servers'][$i]['auth_type'] = 'cookie'; // 認證方式:cookie|config|http|signon
$cfg['Servers'][$i]['user'] = 'root'; // config 模式時的預設使用者
$cfg['Servers'][$i]['password'] = ''; // config 模式時的密碼
$cfg['Servers'][$i]['nopassword'] = false; // 允許無密碼登入
$cfg['Servers'][$i]['connect_type'] = 'tcp'; // tcp|socket
$cfg['Servers'][$i]['compress'] = false; // 壓縮協定
$cfg['Servers'][$i]['controlhost'] = ''; // 控制連線主機
$cfg['Servers'][$i]['controluser'] = 'pma'; // 控制使用者 (進階功能需求)
$cfg['Servers'][$i]['controlpass'] = 'pmapass'; // 控制密碼
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; // 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['ShowServerInfo'] = true;
$cfg['ShowPhpInfo'] = false;
$cfg['ShowChgPassword'] = true;
$cfg['ShowCreateDb'] = true;
$cfg['MaxRows'] = 50; // 每頁顯示行數
$cfg['Order'] = 'SMART'; // 排序方式
$cfg['DefaultDisplay'] = 'horizontal'; // 顯示模式
| 模式 | 適用場景 | 優點 | 缺點 |
|---|---|---|---|
cookie (推薦) | 生產環境、共享主機、多人使用 | 密碼不寫在設定檔、支援多使用者、登出方便 | 需 PHP session/cookie 支援 |
http | 內網、簡單部署 | 瀏覽器原生對話框、無需 PHP session | 無法登出(需關閉瀏覽器)、密碼以 Base64 傳輸需 HTTPS |
config | 本機開發、單一使用者、自動化腳本 | 免登入、適合腳本自動化 | 密碼明文寫在設定檔、極不安全、不支援多使用者 |
signon | 整合現有登入系統 (SSO) | 無縫整合應用程式登入 | 實作複雜 |
原因:phpMyAdmin 設定的帳密與 MySQL 實際帳密不符。
解決步驟:
mysql -u root -p 能否登入?# 停止 MySQL
systemctl stop mysql
# 啟動跳過權限表
mysqld_safe --skip-grant-tables &
# 登入無密碼
mysql -u root
# 修改密碼
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
# 重啟 MySQL
systemctl restart mysql
config.inc.php:$cfg['Servers'][$i]['auth_type'] = 'cookie'; // 推薦
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = ''; // cookie 模式留空,登入時輸入
$cfg['Servers'][$i]['host']:localhost 走 Unix socket,127.0.0.1 走 TCP。嘗試切換。port / socket 設定是否與 MySQL 實際一致 (SHOW VARIABLES LIKE 'port'; / socket)。systemctl status mysql。# Ubuntu/Debian
apt install php-mysqli
# CentOS/RHEL
yum install php-mysqli
# Windows php.ini
extension=mysqli
# 重啟 Apache/php-fpm
執行附帶 SQL 建立 phpmyadmin 資料庫與表:
# 位置:phpMyAdmin/sql/create_tables.sql
mysql -u root -p < create_tables.sql
# 並確保 config.inc.php 設定 controluser/controlpass/pmadb 正確
pma_x7k9)。# .htaccess (Apache)
Order Deny,Allow
Deny from all
Allow from 192.168.1.0/24 # 僅允許內網
Allow from 203.0.113.5 # 特定公網 IP
# Nginx
location /pma_x7k9/ {
allow 192.168.1.0/24;
allow 203.0.113.5;
deny all;
# ... php-fpm 設定
}
docker run -d \
--name phpmyadmin \
-e PMA_HOST=mysql_host \
-e PMA_PORT=3306 \
-e PMA_USER=root \
-e PMA_PASSWORD=secret \
-p 8080:80 \
phpmyadmin/phpmyadmin:latest
# 存取:https://localhost:8080
遵循「Cookie 認證 + 強制 HTTPS + IP 白名單 + 定期更新」四大原則,即可安全、高效地使用 phpMyAdmin 管理資料庫。