phpmyadmin 访问 404 是因 apache 未启用 alias 模块或未执行 a2enconf phpmyadmin;“mysqli 扩展缺失”需安装 php-mysqlnd 并重启 apache;登录失败多因 mysql 认证插件不兼容,应创建指定 mysql_native_password 的专用用户。
phpmyadmin 安装后访问 404:apache 没加载 alias 模块
ubuntu 的 apache 默认不启用 alias 模块,而 phpmyadmin 依赖它做符号链接映射(比如把 /phpmyadmin 指向实际安装路径)。没开这个模块,a2enmod alias 漏了,就必然 404。
- 先确认模块状态:
a2query -m alias,输出alias (enabled)才算对 - 如果没启用,运行
a2enmod alias,再systemctl restart apache2 - 别跳过
a2enconf phpmyadmin—— 这步会自动创建/etc/apache2/conf-enabled/phpmyadmin.conf,里面包含关键的Alias /phpmyadmin配置 - 检查该 conf 文件是否真被加载:
apache2ctl -t -D DUMP_INCLUDES里得看到它
登录页报错 “The mysqli extension is missing”
这是 PHP 没装 MySQLi 扩展,不是 phpMyAdmin 配置问题。LAMP 环境里,php-mysql 包在 Ubuntu 22.04+ 已废弃,必须用 php-mysqlnd(MySQL Native Driver)。
- 查当前 PHP 版本:
php -v,再查已装扩展:php -m | grep -i mysql - 如果没输出
mysqli或mysqlnd,装扩展:apt install php-mysqlnd - 注意:装完必须重启 Apache(
systemctl restart apache2),PHP-FPM 不影响 Apache 模块加载 - 验证扩展是否生效:
php -r "new mysqli(); echo 'OK';",无报错即成功
登录失败:MySQL 用户没权限或认证插件不兼容
Ubuntu 20.04+ 默认 MySQL 使用 caching_sha2_password 插件,但 phpMyAdmin(尤其旧版)只支持 mysql_native_password。直接用 root 登录常失败。
- 别用 MySQL root 直连 phpMyAdmin —— 默认禁用远程 root 登录,且插件不匹配
- 建专用用户并强制指定认证方式:
CREATE USER 'pmauser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'strongpass';<br>GRANT ALL PRIVILEGES ON *.* TO 'pmauser'@'localhost';<br>FLUSH PRIVILEGES;
- 改 phpMyAdmin 配置:
/etc/phpmyadmin/config.inc.php里确保有:$cfg['Servers'][$i]['auth_type'] = 'cookie';<br>$cfg['Servers'][$i]['host'] = 'localhost';$cfg['Servers'][$i]['user'] = 'pmauser';<br>$cfg['Servers'][$i]['password'] = 'strongpass';
- 密码别存明文?那就保持
auth_type = 'cookie',登录时手动输,更安全
HTTPS 下资源被拦截:混用 HTTP/HTTPS 或缺少 Referer 头
如果你用 Nginx 反代 Apache 或开了 Let's Encrypt,phpMyAdmin 的 JS/CSS 常被浏览器标记为“不安全内容”,页面空白或功能异常。
- 检查浏览器控制台(F12 → Console),看是否报
Mixed Content错误 —— 说明页面是 HTTPS,但某处写了http://的链接 - 强制 phpMyAdmin 走 HTTPS:
/etc/phpmyadmin/config.inc.php加一行:$cfg['PmaAbsoluteUri'] = 'https://your-domain.com/phpmyadmin/';
- Apache 后端也要配好 HTTPS 头,否则 phpMyAdmin 无法识别协议:
ProxyPreserveHost On<br>RequestHeader set X-Forwarded-Proto "https"
- 别漏掉
phpmyadmin.conf里的Require local—— 如果你从公网访问,要改成Require all granted并加 IP 限制
配置文件路径、模块名、命令、错误信息全用 包住,一个都不能漏。最常卡住的地方其实是 a2enconf phpmyadmin 没执行,或者 php-mysqlnd 忘装 —— 这俩不解决,其他都白调。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











