CentOS 7 源码版 PhpMyAdmin 安装指南(适配 Nginx+PHP-FPM 环境) - 教程

news/2025/9/20 11:05:11/文章来源:https://www.cnblogs.com/yfceshi/p/19102130

一、PhpMyAdmin 简介

PhpMyAdmin 是一款由 PHP 语言制作的开源、免费数据库管理工具,专为 MySQL 和 MariaDB 数据库设计,自 1998 年首次发布以来,已成为全球数百万开发者和运维人员管理数据库的首选工具之一。它通过 Web 浏览器献出可视化操作界面,将复杂的 SQL 命令转化为直观的点击操作,大幅降低了数据库管理的技术门槛,无需本地安装客户端即可远程管理数据库。

1.1 核心功能

  • 数据库基础操作:支持创建、删除、重命名数据库,以及查看数据库容量、字符集、存储引擎等基础信息,无需手动执行 CREATE DATABASE 或 DROP DATABASE 等 SQL 命令。
  • 数据表全流程管理:可可视化创建数据表(自定义字段名、数据类型、长度、主键、外键、索引等),支持插入、修改、删除数据,还能批量导入 / 导出数据(支撑 SQL、CSV、Excel、JSON 等多种格式),满足数据迁移与备份需求。
  • SQL 工具集:内置 SQL 编辑器,支持语法高亮、代码补全、SQL 语句格式化,可直接执行自定义 SQL 脚本;提供 SQL 查询历史记录,方便回溯操作;还能生成数据表的创建 / 删除 SQL 语句,辅助自动化运维。
  • 用户与权限管理:支持管理 MySQL/MariaDB 用户(创建、删除、修改密码),并可精细化分配权限(如仅允许某用户操作指定数据库的查询权限,禁止删除操作),符合企业级权限管控需求。
  • 性能监控与优化:可查看数据库服务器状态(如连接数、CPU 使用率、内存占用)、数据表索引采用情况,还能通过 “慢查询日志” 定位低效 SQL,辅助优化数据库性能。

1.2 优势特点

  • 跨平台兼容性:支持 Windows、Linux、macOS 等主流操作系统,只要服务器部署了 PHP+Web 服务器(如 Nginx、Apache),即可通过浏览器访问,无需依赖特定客户端。
  • 轻量易部署:源码包体积小(通常仅几十 MB),无复杂依赖(核心依赖 PHP 与数据库服务),安装配置步骤简单,适合个人开发者、中小企业敏捷搭建数据库管理环境。
  • 开源可控:基于 GNU 通用公共许可证(GPL)开源,可自由修改源码以适配个性化需求,且社区活跃,定期更新安全补丁与功能迭代,保障使用安全性。
  • 多语言支持:内置中文、英文、日文等数十种语言,可在界面中直接切换,降低非英语用户的使用门槛。

1.3 适用场景

  • 个人开发与测试:本地搭建 LAMP/LNMP 环境时,利用 PhpMyAdmin 快速管理测试数据库,无需记忆复杂 SQL 命令。
  • 中小企业运维:运维人员远程管理服务器上的 MySQL/MariaDB 数据库,执行数据备份、用户权限调整等日常执行。
  • Web 应用配套:作为 CMS 环境(如 WordPress)、电商环境等 Web 应用的数据库管理工具,方便用户在后台间接管理内容。

二、前置环境检查(关键!)

PhpMyAdmin 依赖 PHP 环境与 MySQL/MariaDB 服务,安装前需确认以下条件已满足:

2.1 确认 PHP 与 PHP-FPM 正常运行

# 1. 检查 PHP 版本(需 ≥ 7.1,推荐 7.3+,与前文安装的 PHP 7.3 适配)

php -v

# 输出类似:PHP 7.3.33 (cli) (built: Oct 26 2022 14:14:18) 表示正常

# 2. 检查 PHP-FPM 服务状态(需 active (running))

systemctl status php-fpm # yum 安装方案

# 或 源码安装方案:/etc/init.d/php-fpm status

2.2 确认 MySQL/MariaDB 服务正常(可选,安装详细步骤可以参考前面的文章)

# 检查 MySQL/MariaDB 服务状态

systemctl status mariadb # CentOS 7 默认自带 MariaDB

# 或 systemctl status mysql(若手动安装 MySQL)

# 若未安装,先执行安装(以 MariaDB 为例)

yum install -y mariadb-server

systemctl start mariadb

systemctl enable mariadb

# 初始化数据库(设置 root 密码、删除匿名用户等)

mysql_secure_installation

2.3 确认 PHP 必需扩展已安装

PhpMyAdmin 依赖 mysqli、gd、mbstring 等 PHP 扩展,需确保已安装:

# 查看已安装的 PHP 扩展

php -m | grep -E "mysqli|gd|mbstring|json"

# 若缺失,通过 yum 安装(yum 安装 PHP 方案)

yum install -y php-mysqli php-gd php-mbstring

# 源码安装 PHP 方案:需在编译时添加 --with-mysqli --with-gd --enable-mbstring 参数(参考前文)

# 安装完成后重启 PHP-FPM 生效

systemctl restart php-fpm # yum 方案

# 或 源码方案:/etc/init.d/php-fpm restart

三、源码安装 PhpMyAdmin 步骤

3.1 下载 PhpMyAdmin 源码包

​访问phpMyAdmin,获取最新稳定版源码包地址(本文以 5.0.1 版本为例,适配 PHP 7.3)或者直接命令下载(外网环境直接 wget;内网需先在外网下载再传输),我放在/usr/share/nginx/html下,可自定义。

wget https://files.phpmyadmin.net/phpMyAdmin/5.0.1/phpMyAdmin-5.0.1-all-languages.tar.gz

解压源码包并改名(简化访问路径):

# 进入 Nginx 网站根目录(默认 /usr/share/nginx/html,可自定义)

cd /usr/share/nginx/html

# 解压

tar -zxvf phpMyAdmin-5.0.1-all-languages.tar.gz

# 重命名为 phpmyadmin(方便后续访问,如 http://IP/phpmyadmin)

mv phpMyAdmin-5.0.1-all-languages phpmyadmin

3.2 配置 PhpMyAdmin 核心档案

PhpMyAdmin 需通过配置文件连接 MySQL 服务,默认提供模板档案,需复制并修改关键参数:

进入配置目录,复制模板资料:

cd /usr/share/nginx/html/phpmyadmin

# 复制默认配置模板为正式配置文件

cp config.sample.inc.php config.inc.php

编辑配置文件,设置 blowfish_secret 和 MySQL 连接方式:

vi config.inc.php

关键调整修改(按以下内容调整):

<?php

$cfg['blowfish_secret'] = 'doris_phpmyadmin_2024!@#'; // 必填!自定义随机字符串(≥32位更佳)

$i = 0;

$i++;

$cfg['Servers'][$i]['verbose'] = 'MySQL'; // 服务器名称(自定义)

$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL 地址(本地填 localhost,远程填 IP)

$cfg['Servers'][$i]['port'] = '3306'; // MySQL 端口(默认 3306)

$cfg['Servers'][$i]['socket'] = ''; // 本地连接用 socket(默认空即可)

$cfg['Servers'][$i]['auth_type'] = 'cookie'; // 认证方式(cookie 推荐,需登录)

$cfg['Servers'][$i]['user'] = ''; // 默认空(登录时手动输入 MySQL 用户名)

$cfg['Servers'][$i]['password'] = ''; // 默认空(登录时手动输入密码)

$cfg['Servers'][$i]['database'] = ''; // 默认空(不指定默认数据库)

$cfg['Servers'][$i]['AllowNoPassword'] = false; // 禁止空密码登录(安全推荐)

$cfg['Servers'][$i]['AllowRoot'] = true; // 允许 root 用户登录(根据需求调整)

?>

  • 注意:blowfish_secret 用于加密会话素材,必须填写(可随机生成,如通过 openssl rand -hex 16 生成 16 位随机字符串)。

3.3 配置 Nginx 支持 PhpMyAdmin

需确保 Nginx 已正确配备 PHP 解析(参考前文),若未配置或需单独优化 PhpMyAdmin 访问,可添加专项配置:

编辑 Nginx 虚拟主机配置文件:

在 server 块中添加 PhpMyAdmin 访问规则(若已配置 PHP 解析,可跳过此步,直接使用默认规则):

server {

listen 80;

server_name localhost; # 可改为服务器 IP 或域名

root /usr/share/nginx/html; # 网站根目录

index index.html index.php; # 默认首页(添加 index.php)

# PhpMyAdmin 路径匹配(若已配置全局 PHP 解析,此段可省略)

location /phpmyadmin/ {

alias /usr/share/nginx/html/phpmyadmin/; # 指向 PhpMyAdmin 目录

try_files $uri $uri/ /phpmyadmin/index.php?$args; # 重定向到 index.php

}

# PHP 解析规则(关键!确保已配置)

location ~ \.php$ {

root /usr/share/nginx/html;

fastcgi_pass 127.0.0.1:9000; # 对接 PHP-FPM 端口(与前文配置一致)

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 路径必须正确

include fastcgi_params;

}

}

检查 Nginx 配置语法并重启服务:

# 检查配置语法(无报错则正常)

nginx -t

# 重启 Nginx 生效

systemctl restart nginx

3.4 调整目录权限(避免权限报错)

PhpMyAdmin 需写入临时文件(如会话数据、缓存),需确保 Nginx 运行用户有目录权限:

# 1. 查看 Nginx 运行用户(默认 nginx,若自定义需替换)

grep "user" /etc/nginx/nginx.conf # 输出类似:user nginx;

# 2. 赋予 PhpMyAdmin 目录权限(所有者为 nginx)

chown -R nginx:nginx /usr/share/nginx/html/phpmyadmin/

# 3. 调整目录权限(读写执行权限)

chmod -R 755 /usr/share/nginx/html/phpmyadmin/

# 4. (可选)创建临时目录并授权(若报错“缺少 tmp 目录”)

mkdir -p /usr/share/nginx/html/phpmyadmin/tmp

chown -R nginx:nginx /usr/share/nginx/html/phpmyadmin/tmp

chmod 770 /usr/share/nginx/html/phpmyadmin/tmp

# 并在 config.inc.php 中添加:$cfg['TempDir'] = '/usr/share/nginx/html/phpmyadmin/tmp';

四、访问与验证 PhpMyAdmin

4.1 浏览器访问

在本地浏览器输入 http://服务器IP/phpmyadmin(如http://192.168.1.100/phpmyadmin),将显示 PhpMyAdmin 登录页面:

  • 输入 MySQL/MariaDB 材料账户的用户名(如 root)和密码
  • 点击 “执行” 登录,若成功进入管理界面(显示数据库列表、表结构),说明安装配置完成。

4.2 基础操作验证

否正常:就是登录后可进行简单操作验证功能

  • 新建数据库:点击左侧 “新建”,输入数据库名(如 test_db),选择字符集(如 utf8mb4),点击 “创建”。
  • 新建表:进入 test_db,输入表名(如 user)和字段数(如 2),点击 “执行”,添加 id(INT 类型)和 name(VARCHAR 类型)字段,保存。
  • 否成功插入。就是插入数据:点击 “插入”,填写 id=1、name=test,点击 “执行”,查看材料

五、常见问题与解决办法

5.1 访问登录页显示空白 / 报错 “500 Internal Server Error”

  • 原因 1:PHP 扩展缺失(如 mysqli 未安装)

解决:安装缺失扩展(yum install -y php-mysqli),重启 PHP-FPM(systemctl restart php-fpm)。

  • 原因 2:blowfish_secret 未配置或长度不足

解决:编辑 config.inc.php,填写 ≥32 位的随机字符串(如 $cfg['blowfish_secret'] = 'abcdef1234567890abcdef1234567890';)。

  • 原因 3:目录权限不足

解决:重新执行权限调整命令(chown -R nginx:nginx /usr/share/nginx/html/phpmyadmin/)。

5.2 登录后报错 “#2002 无法登录 MySQL 服务器”

  • 原因 1:MySQL 服务未启动

应对:启动 MySQL(systemctl start mariadb),设置开机自启(systemctl enable mariadb)。

  • 原因 2:config.inc.php 中 host 配置错误(如远程 MySQL 地址填错)

解决:确认 MySQL 地址,本地填localhost,远程填实际 IP,且确保 MySQL 允许外部访问(需设置 bind-address =0.0.0.0并授权远程用户)。

5.3 上传大文档 / 导入大 SQL 报错 “上传的文件超出了 PHP 的限制”

  • 原因:PHP 部署中 upload_max_filesize、post_max_size 限制过小(默认 2M)

处理:编辑 PHP 配置文件(/etc/php.ini 或 /usr/local/php/etc/php.ini,根据安装方式选择):

upload_max_filesize = 50M # 上传文件最大限制

post_max_size = 50M # POST 数据最大限制

max_execution_time = 300 # 脚本执行时间(秒,避免导入超时)

重启 PHP-FPM(systemctl restart php-fpm)生效。

六、安全优化建议(可选)

为提升 PhpMyAdmin 安全性,推荐进行以下优化:

  • 修改访问路径:将 phpmyadmin 目录改名为复杂名称(如 phpmyadmin_2024),避免暴力破解(需同步修改 Nginx 配置中的 location 路径)。
  • 限制 IP 访问:在 Nginx 配置中添加 IP 白名单,仅允许指定 IP 访问 PhpMyAdmin:

location /phpmyadmin/ {

allow 192.168.1.0/24; # 允许内网 IP 段访问

deny all; # 拒绝其他所有 IP

alias /usr/share/nginx/html/phpmyadmin/;

try_files $uri $uri/ /phpmyadmin/index.php?$args;

}

  • 禁用 root 登录:编辑 config.inc.php,设置 $cfg['Servers'][$i]['AllowRoot'] = false;,创建普通 MySQL 用户并授权管理数据库。
  • 定期更新:关注 PhpMyAdmin 官网,及时下载更新补丁,修复安全漏洞(源码更新需覆盖旧文件,保留 config.inc.php 配置)。

通过本文步骤,可在 CentOS 7 系统中基于源码完成 PhpMyAdmin 安装,完美适配前文部署的 Nginx+PHP-FPM 环境。若需迁移或升级,只需备份 config.inc.php 配置文件和数据,即可快速完成操作,确保数据库管理的便捷性与安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/908277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解Django Admin只读字段与保存模型的自定义操作 - 详解

深入理解Django Admin只读字段与保存模型的自定义操作 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

深度学习(视觉注意力SeNet/CbmaNet/SkNet/EcaNet)

这些网络提供了一种即插即用的注意力模块,可以嵌入到现有的主流架构(如ResNet, VGG, MobileNet等)中,带来几乎无成本的性能提升。 四种网络核心思想: 1. SENet (Squeeze-and-Excitation Network): 通道注意力(C…

起床

(排名不分先后)奔流Dive back int timeyesterday once more等你下课晴天新宝岛power(Luna LePage)moon halo龙拳this is me裂缝中的阳光孤勇者明天会更好七里香爱的飞行日记稻香natural霍元甲凄美地没有理想的人不伤…

qoj6277 Linear Congruential Generator

SOLUTION FROM WUMIN4 题意 给出无穷序列 \(X_0\) 的值和 \(a,c\),令 \(X_{i+1}=(aX_i+c)\bmod m\)。 给出 \(l_1,r_1,l_2,r_2\),求: \[\sum_{i=l_1}^{r_1} \sum_{j=l_2}^{r_2}( X_i \bmod (X_j+1)) \]\(1\le T\le …

AI智能体服务优秀的平台架构设计

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Node.js、npm 和 npx:前端开发的三剑客 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

docker+k8s

docker和k8s一些共同点 1、k8s的最小单位是pod,pod里面就是docker中的容器(容器上面又加了一层),所以可以将pod理解为一个虚拟服务器(Pod 是容器的 “逻辑主机”,它内部的容器共享网络、存储等资源),当然现实的…

多模型适配突围:JBoltAI如何重构企业数智化转型新范式?

多模型适配突围:JBoltAI如何重构企业数智化转型新范式?2025年7月,麦肯锡发布的《技术趋势展望报告》指出,人工智能正由其他技术的“基础增强器”转变为具备自主决策能力的“虚拟同事”,其影响力已广泛渗透至技术融…

JBoltAI赋能制造业数智化转型:AI从概念到落地的Java实践

JBoltAI赋能制造业数智化转型:AI从概念到落地的Java实践01. 人工智能正在重塑制造业格局2025年,人工智能不再是遥远的概念,而是成为了推动产业变革的核心动力。工信部近期表示,正在研究出台 “人工智能+制造”专项…

JBoltAI赋能医疗数智化转型:AI大模型如何重塑医疗健康新范式

JBoltAI赋能医疗数智化转型:AI大模型如何重塑医疗健康新范式医疗健康领域的数智化挑战当前,全球医疗系统正面临巨大压力:医疗资源分布不均、诊疗效率待提升、专业医生培养周期长、海量医学知识难以即时更新与应用。…

JBoltAI多模态赋能:制造业数智化升级的新引擎

JBoltAI多模态赋能:制造业数智化升级的新引擎2025年,人工智能已成为推动产业数智化转型的核心驱动力。据麦肯锡研究显示,全球超过900万家Java企业正面临技术重构压力,传统Java开发体系在AI化转型过程中遭遇多模型适…

深入解析:YARN架构解析:深入理解Hadoop资源管理核心

深入解析:YARN架构解析:深入理解Hadoop资源管理核心pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

JBoltAI:破解Java企业级AI应用落地难题的利器

JBoltAI:破解Java企业级AI应用落地难题的利器随着国务院印发《关于深入实施“人工智能+”行动的意见》,“AI+”已成为各行业企业实现生产力革命性跃迁、提升生产经营能力的重要举措。在这场数智化转型浪潮中,Java作…

直播软件开发,单例设计模式很简单吗? - 云豹科技

直播软件开发,单例设计模式很简单吗?写在前面单例设计模式,相信是大家接触设计模式时的入门设计模式,它理解起来比较简单,当然实现起来也很简单,但是别看不上这简单的东西,简单的事情重复做将不再简单,再复杂的…

Java开发者的AI革命:如何用JBoltAI应对数智化转型挑战

Java开发者的AI革命:如何用JBoltAI应对数智化转型挑战01 AI时代的浪潮与Java开发者的困境2025年,人工智能技术正以前所未有的速度重塑整个软件产业。根据麦肯锡《2025年技术趋势展望报告》,AI正在从"基础增强器…

JBoltAI:赋能Java老项目快速接入AI能力的创新之道

JBoltAI:赋能Java老项目快速接入AI能力的创新之道近年来,随着人工智能技术的迅猛发展,我们正处在一个从数字化到数智化转型的关键时期。根据2025全球人工智能展望报告,2025年被视为“智能体元年”,AI Agent已成为…

Day04 C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\David\operator Demo01-08+Doc

快捷键 查看源代码:ctrl+B或ctrl+左键 自动对齐:ctrl+alt+I 查看源码:ctrl+alt+Q 运行代码:ctrl+shift+F10 类型转换 byte, short, char->int->long->float->double 变量 //数据类型 变量名 = 值; typ…

实用指南:养老专业实训室建设方案的分级设计与人才培养适配

实用指南:养老专业实训室建设方案的分级设计与人才培养适配pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

物业企业绩效考核制度与考核体系 - 指南

物业企业绩效考核制度与考核体系 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

springboot创建请求处理 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …