phpMyAdmin 在 CentOS 8 Stream 官方仓库中不存在,需手动下载部署;正确做法是下载官方包、配置 Apache/Nginx 与 PHP-FPM、设置权限及 SELinux 策略,并修正 config.inc.php 中的数据库连接与认证方式。
phpMyAdmin 在 CentOS 8 Stream 上不能直接用 dnf install phpmyadmin 安装
centos 8 stream 的官方仓库(包括 baseos 和 appstream)**不提供 phpmyadmin 包**。这不是你源没配好,也不是命令敲错了——它压根就没上架。强行 dnf install phpmyadmin 会返回 no match for argument: phpmyadmin。
根本原因是:phpMyAdmin 是纯 PHP 应用,无编译依赖,Red Hat/CentOS 团队认为它更适合以“解压即用”方式部署,而非打包进系统仓库(避免版本滞后、权限模型冲突和 SELinux 策略维护负担)。
所以别折腾 dnf search phpmyadmin 或第三方 repo(如 EPEL 8 也已移除该包),直接走 Web 部署路径更稳。
正确做法:手动下载 + Apache/Nginx + PHP-FPM 组合运行
你需要自己拉取官方发布包,放进 Web 根目录,并确保 PHP 环境满足最低要求(php >= 7.4,含 mbstring、mysqli、openssl 扩展)。
- 先确认 PHP 已就位:
php -v输出应 ≥ 7.4;运行php -m | grep -E "mbstring|mysqli|openssl"确保三者都在列表里 - 下载最新稳定版(比如 5.2.2):
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.2/phpMyAdmin-5.2.2-all-languages.tar.gz - 解压到
/usr/share/phpmyadmin(Apache 默认可读路径):tar -xzf phpMyAdmin-5.2.2-all-languages.tar.gz -C /usr/share/ && mv /usr/share/phpMyAdmin-5.2.2-all-languages /usr/share/phpmyadmin - 复制配置文件:
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php - 生成密钥填入
$cfg['blowfish_secret']—— 不填会导致登录页报The configuration file now needs a secret passphrase (blowfish_secret)
Apache 下必须改的三处配置(否则 403 或白屏)
CentOS 8 Stream 默认用 Apache 2.4 + mod_php 或 php-fpm,但 phpMyAdmin 对 AllowOverride 和 Require 比较敏感。
立即学习“PHP免费学习笔记(深入)”;
- 在
/etc/httpd/conf.d/phpmyadmin.conf中写死别名和权限(别依赖.htaccess):<Directory /usr/share/phpmyadmin> Require all granted php_admin_value open_basedir "/usr/share/phpmyadmin/:/var/lib/phpmyadmin/:/tmp/" </Directory> - 确保
/usr/share/phpmyadmin所有者是apache:apache(或对应 Web 用户),否则 session 写入失败,登录后跳回首页 - 如果启用了 SELinux(默认开启),要加一条策略:
semanage fcontext -a -t httpd_sys_rw_content_t "/var/lib/phpmyadmin(/.*)?" && restorecon -Rv /var/lib/phpmyadmin—— 否则保存设置、导入 SQL 会因权限拒绝失败
访问前务必检查 config.inc.php 的 $cfg['Servers'] 配置
默认 config.sample.inc.php 里的 MySQL 连接是本地 socket 模式,但如果你用的是远程数据库、或 MariaDB 启用了 skip-networking,这里不改就会卡在“Cannot log in to the MySQL server”。
- 若连本机 MariaDB(推荐):
$cfg['Servers'][$i]['host'] = 'localhost';(走 socket)或'127.0.0.1'(走 TCP) - 若用 Unix socket(更快更安全),确认
$cfg['Servers'][$i]['socket'] = '/var/lib/mysql/mysql.sock';路径与mysql --socket输出一致 - 禁止把
$cfg['Servers'][$i]['auth_type'] = 'config';留着上线 —— 它会把账号密码明文写死在配置里,极不安全;生产环境必须设为'cookie'或'http'
phpMyAdmin 的复杂点不在安装,而在权限链:Web 服务用户 → PHP 进程上下文 → MySQL 认证方式 → SELinux 上下文 → 临时目录可写性。漏掉任意一环,页面都可能静默失败或报错模糊。尤其别信“改完配置重启 httpd 就行”——得逐层验证日志:journalctl -u httpd -n 50、tail -f /var/log/php-fpm/www-error.log、mysql -u root -p -e "SHOW VARIABLES LIKE 'socket';"。











