phpMyAdmin 打不开主因是路径未映射、mysqli 未启用、blowfish_secret 缺失或 MySQL 认证插件不兼容;需建软链接、启用模块、配置密钥、调整 MySQL 认证方式。
phpMyAdmin 安装后打不开,提示 404 或 “The requested URL was not found”
默认情况下,轻量应用服务器(如腾讯云 lighthouse、阿里云轻量)的 lamp 镜像不会自动把 phpmyadmin 的 web 路径映射进 apache 的 documentroot。它通常被解压在 /usr/share/phpmyadmin,但没配 alias 或软链接,apache 根本“看不见”这个目录。
- 先确认安装路径:
ls -l /usr/share/phpmyadmin(常见位置,部分系统用/var/www/phpmyadmin) - 建软链接到 Apache 默认站点根目录:
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin - 检查 Apache 是否启用
mod_rewrite和mod_alias:sudo a2enmod alias rewrite,然后重启:sudo systemctl restart apache2 - 如果仍 404,检查
/etc/apache2/conf-enabled/phpmyadmin.conf是否存在且已加载;没有就手动创建并包含Alias /phpmyadmin /usr/share/phpmyadmin
登录 phpMyAdmin 报错 “mysqli extension is missing”
这是 PHP 没装 MySQLi 扩展,LAMP 镜像有时只预装了 mysqlnd 基础驱动,但没启用 mysqli 模块。PHP 7.4+ 默认不带 mysql(已废弃),只认 mysqli 或 pdo_mysql。
- 查已启用模块:
php -m | grep -i mysql—— 若无mysqli输出,说明没开 - 启用扩展(Debian/Ubuntu):
sudo phpenmod mysqli;CentOS/RHEL 用sudo yum install php-mysqlnd或检查/etc/php.d/20-mysqli.ini是否存在且未被注释 - 确认
extension=mysqli在php.ini中未被分号注释:grep -n "^extension=mysqli" $(php --ini | grep "Loaded Configuration File" | cut -d' ' -f4) - 改完务必重启 Apache:
sudo systemctl restart apache2(或httpd)
访问 /phpmyadmin 显示空白页或报 “Configuration file now needs a secret passphrase (blowfish_secret)”
这是 phpMyAdmin 的配置文件 config.inc.php 缺少 $cfg['blowfish_secret'],导致无法初始化加密会话。它不是安全漏洞警告,而是强制要求项 —— 没设就拒绝加载界面。
- 复制模板配置:
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php - 编辑该文件:
sudo nano /usr/share/phpmyadmin/config.inc.php - 找到
$cfg['blowfish_secret'] = '';行,填入至少 32 位随机字符串,例如:$cfg['blowfish_secret'] = 'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6'; - 注意:不要用中文、空格或特殊符号(如
$、@),避免解析错误;保存后权限保持为644,别改成755
能登录但操作数据库时报 “#2002 Cannot log in to the MySQL server”
这说明 phpMyAdmin 连得上自身(PHP 正常),但连不上 MySQL 服务。常见于轻量服务器默认禁用远程访问、MySQL 绑定本地 socket 或 root 密码策略变更。
- 先确认 MySQL 是否运行:
sudo systemctl status mysql(或mariadb) - 检查连接方式:打开
config.inc.php,看$cfg['Servers'][$i]['host']是localhost还是127.0.0.1;前者走 Unix socket,后者走 TCP —— 若 MySQL 配置了skip-networking或bind-address = 127.0.0.1,建议统一用localhost - 验证 root 登录是否可用:
mysql -u root -p;若提示Access denied,说明密码不对或认证插件变了(如caching_sha2_password不被老版 phpMyAdmin 支持),需重置为mysql_native_password - 临时测试可改
$cfg['Servers'][$i]['auth_type'] = 'config';并填入明文账号密码(仅调试,勿上线)
最常被跳过的一步是检查 blowfish_secret 和 MySQL 认证插件兼容性——这两处不处理,前面所有配置都白搭。尤其是新装 MySQL 8.0+,root 默认用 caching_sha2_password,而 phpMyAdmin 5.2 之前版本根本不认识它。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











