必须启用EPEL源才能安装phpMyAdmin,否则yum报“No package phpmyadmin available”;需修改Apache配置允许远程访问、创建777权限tmp目录、设置32位以上blowfish_secret,并处理SELinux和防火墙。

直接装 phpmyadmin 包是最稳妥的路径,但 CentOS 7 默认仓库不提供它——必须先启用 EPEL,否则 yum install phpmyadmin 会报 “No package phpmyadmin available”。4.9 系列(如 phpMyAdmin-4.9.3-all-languages)虽已停止官方支持,但在 CentOS 7 + PHP 7.2/7.3 环境下仍可稳定运行,关键是要避开 SELinux 和权限配置的坑。
为什么不能跳过 EPEL 直接 yum 安装
EPEL 是 CentOS 社区维护的高质量附加软件源,phpmyadmin 不在 base 或 updates 仓库里。跳过这步会导致:
-
yum install phpmyadmin返回No package phpmyadmin available - 手动下载 tar.gz 解压后,常因缺少
php-mbstring、php-gd等依赖导致白屏或报错The mbstring extension is missing - 系统级服务管理(如 Apache 配置自动加载)无法生效
正确做法是:
sudo yum install epel-release -y sudo yum makecache
确认 EPEL 已启用:yum repolist | grep epel 应输出类似 epel/x86_64 的行。
立即学习“PHP免费学习笔记(深入)”;
/etc/httpd/conf.d/phpMyAdmin.conf 权限限制必须改
默认配置只允许 127.0.0.1 和 ::1 访问,远程浏览器打不开 http://your_ip/phpmyadmin 就是这个原因。不要删文件,直接编辑:
sudo vi /etc/httpd/conf.d/phpMyAdmin.conf
找到四段类似这样的块(Apache 2.4 语法):
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>全部注释掉这两行,并添加 Require all granted:
- 把
Require ip 127.0.0.1改成# Require ip 127.0.0.1 - 把
Require ip ::1改成# Require ip ::1 - 在
</RequireAny>上方插入一行:Require all granted
改完执行 sudo httpd -t && sudo systemctl restart httpd,否则配置不生效。
tmp 目录和 blowfish_secret 是启动必填项
即使 Apache 能访问页面,首次登录大概率卡在“错误:变量 $cfg['TempDir'] (./tmp/) 无法访问”,或提示“blowfish_secret 未设置”。这不是警告,是硬性拦截:
- 进入
/usr/share/phpMyAdmin(yum 安装的默认路径),运行:sudo mkdir tmp && sudo chmod 777 tmp - 编辑
/usr/share/phpMyAdmin/config.inc.php,找到$cfg['blowfish_secret'] = '';,填入至少 32 位随机字符串,例如:$cfg['blowfish_secret'] = 'xQ2#vK9!pLm@nR7$zT5&fB8*wN4^yU1'; - 别漏掉末尾分号;字符串里避免单引号嵌套问题,用双引号包裹更安全
这两个值缺失时,phpMyAdmin 不会报错退出,而是反复重定向回登录页,看起来像密码错误。
SELinux 拦截和防火墙放行是最后两道关卡
如果前面都对了,但浏览器显示 Forbidden 或空白页,优先检查这两处:
- SELinux 默认阻止 Apache 访问非标准路径下的 PHP 文件。临时验证是否是它导致的:
sudo setenforce 0。若立刻能访问,说明需要打标:sudo semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpMyAdmin/tmp(/.*)?",再sudo restorecon -Rv /usr/share/phpMyAdmin/tmp - 防火墙必须放行 80 端口(或你实际用的端口)。CentOS 7 默认用
firewalld:sudo firewall-cmd --permanent --add-service=http,然后sudo firewall-cmd --reload
注意:不要盲目 systemctl disable firewalld,生产环境应精确放行,而非关闭整个防火墙。
真正容易被忽略的是 blowfish_secret 长度和 tmp 目录权限的组合效应——哪怕只少一位字符,或 chmod 写成 755,phpMyAdmin 都不会明确告诉你哪里错了,只会静默失败。建议把这两项作为安装后第一验证点。



















