拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

LAMP 环境搭建:从零到登录 phpMyAdmin

LAMP 环境搭建:从零到登录 phpMyAdmin

LAMP 环境搭建:从零到登录 phpMyAdmin

面向零基础学员。本路线用系统仓库直接安装,不编译、不下载源码包,几分钟即可打开 phpMyAdmin。
配套脚本见scripts/(01安装 /02配置 /03验证 /04总控 /05总验证)。


0. 实验目标

在 CentOS 7 上搭建LAMP(Linux + Apache + MariaDB + PHP),并部署 phpMyAdmin 图形化管理工具,
最终用浏览器登录完成建库、建表、执行 SQL 等管理操作。


0.5 实战路径(真实踩坑版)

如果你也拿到了一个「源码编译」压缩包但只想尽快打开 phpMyAdmin,可以参考本次实战的真实路径:

  1. 放弃源码编译:压缩包里的*.tar.gz是第一路线。如果镜像下载失败、libmcrypt解压损坏、或 yum 外源失效,不要硬刚,直接切第二路线(yum 包安装)。
  2. 修 yum 源:CentOS 7 官方源已下线,必须换阿里云 Vault 源(见第 1 节)。
  3. 手动 yum 安装(比脚本更快定位问题):
    yum-yinstallhttpd mariadb-server php php-mysql phpmyadmin systemctlenable--nowhttpd mariadb
  4. 处理 phpMyAdmin 403:不要建99-xxx.conf,直接改/etc/httpd/conf.d/phpMyAdmin.conf里的Require local→Require all granted(见 5.2)。
  5. 处理 root 密码:如果mysql_secure_installation进不去(之前重置过/已有密码),先用Lamp@123试;若都不对,再按 3.2 的 skip-grant 方式重置。
  6. 登录:浏览器开http://<IP>/phpMyAdmin/(注意大写 A),账号root,密码Lamp@123。

本次实战最终环境:CentOS 7.9.2009,Apache 2.4.6,MariaDB 5.5.68,PHP 5.4.16,phpMyAdmin 4.4.15.10,IP115.29.223.28。


1. 系统依赖准备(CentOS 7 源修复)

CentOS 7 官方源已下线,先换成阿里云 Vault 源(一次性操作):

mkdir-p/etc/yum.repos.d/bakmv/etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/2>/dev/nullcat>/etc/yum.repos.d/CentOS-Vault.repo<<'EOF' [base] name=CentOS-7.9.2009 - Base - aliyun baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/ gpgcheck=0 enabled=1 [updates] name=CentOS-7.9.2009 - Updates - aliyun baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/ gpgcheck=0 enabled=1 [extras] name=CentOS-7.9.2009 - Extras - aliyun baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/ gpgcheck=0 enabled=1 [epel] name=EPEL 7 baseurl=https://mirrors.aliyun.com/epel-archive/7/$basearch/ gpgcheck=0 enabled=1 EOFyum clean all&&yum makecache

验证:yum -y install gcc能装上即说明源可用。


2. 安装 LAMP(yum 包安装)

yum-yinstallepel-release yum-yinstallhttpd mariadb-server mariadb php php-cli php-common php-mysql\php-gd php-mbstring php-xml php-mcrypt php-zip php-bcmath php-intl php-ldap\phpmyadmin
包作用
httpdApache Web 服务器
mariadb-server/mariadbMariaDB 数据库(服务端/客户端)
php+php-mysqlPHP 解释器与 MySQL 驱动(mysqli/PDO)
php-gd/mcrypt/mbstring/xml图像处理、加密、多字节、XML(phpMyAdmin 依赖)
phpmyadmin图形化数据库管理工具(来自 EPEL)

3. MariaDB 初始化与安全加固

3.1 初始化数据目录并启动

# 若 /var/lib/mysql 尚未初始化(无 mysql 系统库)ls/var/lib/mysql/mysql&>/dev/null||mysql_install_db--user=mysql--datadir=/var/lib/mysqlchown-Rmysql:mysql /var/lib/mysql systemctlenable--nowmariadb

3.2 设置 root 密码

新装环境(root 空密码):

mysql-uroot<<SQL UPDATE mysql.user SET Password=PASSWORD('你的强密码') WHERE User='root'; FLUSH PRIVILEGES; SQL

若mysql_secure_installation报 1045(root 已有密码但你忘了):

按下面 skip-grant 流程重置为Lamp@123:

systemctl stop mariadbpkill-9-fmysqld_safe;pkill-9-fmysqld;sleep3psaux|grepmysqld|grep-vgrep# 应无输出mysqld_safe --skip-grant-tables --skip-networking&sleep5mysql-uroot

进去后执行:

UPDATEmysql.userSETPassword=PASSWORD('Lamp@123')WHEREUser='root';FLUSHPRIVILEGES;exit

再回 shell:

# 先杀 mysqld_safe(watchdog),再杀 mysqld,防止它自动重启pkill-9-fmysqld_safe;pkill-9-fmysqld;sleep3rm-f/var/run/mariadb/mariadb.pid /var/lib/mysql/mysql.sock systemctl start mariadb mysql-uroot-p# 输 Lamp@123 验证

注意:改完密码后不要单独用killall mysqld关库,mysqld_safe会把它自动重启,导致实例状态混乱。正确顺序是:退出 mysql 客户端 →pkill -9 mysqld_safe→pkill -9 mysqld→ 正常 systemctl 起库。

3.3 安全加固(删匿名用户 / 禁 root 远程 / 删 test 库)

mysql-uroot-p你的强密码<<SQL DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1'); DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES; SQL

3.4 创建管理账号与演示数据

mysql-uroot-p你的强密码<<SQL CREATE USER IF NOT EXISTS 'lampadmin'@'localhost' IDENTIFIED BY 'Lamp@admin123'; GRANT ALL PRIVILEGES ON *.* TO 'lampadmin'@'localhost' WITH GRANT OPTION; CREATE DATABASE IF NOT EXISTS lampdemo DEFAULT CHARSET utf8; USE lampdemo; CREATE TABLE IF NOT EXISTS students( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT, class VARCHAR(30) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO students(name,age,class) VALUES ('张三',18,'计算机1班'),('李四',19,'软件2班'); FLUSH PRIVILEGES; SQL

4. Apache 与 PHP 配置

4.1 设置 PHP 时区

编辑/etc/php.ini:

date.timezone = Asia/Shanghai memory_limit = 256M upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300

4.2 Apache ServerName(避免启动告警)

新建/etc/httpd/conf.d/00-lamp-lab.conf:

ServerName lamp.lab.local:80 DirectoryIndex index.php index.html

5. phpMyAdmin 配置

5.1 设置 blowfish_secret(Cookie 认证必需,32 字符)

编辑/etc/phpmyadmin/config.inc.php,加入(或确认存在):

$cfg['blowfish_secret']='这里填32位随机字符串abcdefghijklmnopqrstuvwxyz12';

5.2 允许从浏览器访问(解决 403)

yum 装的 phpMyAdmin 默认只允许本机访问,浏览器从其他 IP 访问会报403 Forbidden,Apache error_log 里可见:

AH01630: client denied by server configuration: /usr/share/phpMyAdmin/

错误做法:自己建/etc/httpd/conf.d/99-phpmyadmin-open.conf写Require all granted。
原因:Apache 按文件名字典序加载,99-排在phpMyAdmin.conf前面,你的配置会被后者覆盖;且两个 Alias 会冲突(日志里出现AH00671: overlaps an earlier Alias)。

正确做法:直接改原文件,把所有Require local/Require ip 127.0.0.1/Require ip ::1全替换:

cp/etc/httpd/conf.d/phpMyAdmin.conf /etc/httpd/conf.d/phpMyAdmin.conf.bakrm-f/etc/httpd/conf.d/99-phpmyadmin-open.conf# 删除之前可能冲突的sed-i\-e's|Require local|Require all granted|'\-e's|Require ip 127.0.0.1|Require all granted|'\-e's|Require ip ::1|Require all granted|'\/etc/httpd/conf.d/phpMyAdmin.conf systemctl restart httpd

验证:

curl-sIhttp://127.0.0.1/phpMyAdmin/|head-3# 应返回 HTTP/1.1 200 OK

yum 版默认 Alias 是/phpMyAdmin(大写 A),不是/phpmyadmin。浏览器访问:http://<IP>/phpMyAdmin/。
生产环境应改为具体网段(如Require ip 192.168.42.0/24)。

5.3 高级功能(可选)

mysql-uroot-p你的强密码-e"CREATE DATABASE IF NOT EXISTS phpmyadmin DEFAULT CHARSET utf8;"mysql-uroot-p你的强密码 phpmyadmin</usr/share/phpmyadmin/sql/create_tables.sql

6. 防火墙与 SELinux

# 防火墙systemctlenable--nowfirewalld firewall-cmd--permanent--add-service=http firewall-cmd--reload# SELinux(仅 Enforcing 时需要)setsebool-Phttpd_can_network_connect_db on restorecon-R/var/www/html

启动服务

systemctlenable--nowhttpd mariadb

7. 打开页面并登录

  1. 查本机 IP:hostname -I(如192.168.42.136,或你的公网 IP)
  2. 浏览器打开http://<本机IP>/phpMyAdmin/(注意大写 A)
  3. 登录账号:
    • 若执行了 3.4 的lampadmin创建:账号lampadmin/ 密码Lamp@admin123
    • 若手动安装只改了 root 密码:账号root/ 密码Lamp@123
  4. 左侧选lampdemo→students→ 浏览,看到演示数据即成功
  5. 用「SQL」标签页执行:INSERT INTO students(name,age,class) VALUES('赵六',21,'网络3班');

8. 关键配置文件说明

文件说明
/etc/httpd/conf/httpd.confApache 主配置(监听端口、模块加载)
/etc/httpd/conf.d/00-lamp-lab.conf本实验追加(ServerName / DirectoryIndex)
/etc/httpd/conf.d/phpmyadmin.confphpMyAdmin 别名与访问控制在/phpmyadmin
/etc/php.iniPHP 全局配置(时区、内存、上传)
/etc/phpmyadmin/config.inc.phpphpMyAdmin 配置(blowfish_secret / 控制账号)
/etc/my.cnf//etc/my.cnf.d/*MariaDB 配置
/var/www/html/Web 根目录(index.php / info.php / dbtest.php)
/etc/lamp-lab/credentials.conf脚本生成的账号密码(权限 600)

9. 常见故障排查

现象原因处理
yum报Cannot find a valid baseurlCentOS 7 官方源下线按第 1 节换阿里云 Vault 源
浏览器打不开页面防火墙/服务未起systemctl status httpd;firewall-cmd --add-service=http --permanent
phpMyAdmin 显示 403 Forbidden默认仅本机访问改phpmyadmin.conf的Require local→Require all granted
phpMyAdmin 报blowfish_secret错误未设置或不足 32 字符在config.inc.php设 32 字符
登录后高级功能提示表不存在未建 phpmyadmin 库执行第 5.3 节导入create_tables.sql
PHP 页面变成下载而非解析PHP 模块未加载确认php与php-mysql已装,`httpd -M
mysqli连接失败root 密码/权限问题用mysql -uroot -p验证;检查lampweb账号存在
mysql_secure_installation报 1045root 已有密码(可能之前重置过)用 3.2 节的 skip-grant 流程重置;或直接用已知密码Lamp@123登录
重置密码后仍 1045mysqld_safe自动重启导致实例状态混乱先pkill -9 mysqld_safe,再pkill -9 mysqld,清理 pid/socket 后systemctl start mariadb
/phpmyadmin/404大小写错误 / Alias 未加载yum 版默认 Alias 是/phpMyAdmin(大写 A),浏览器访问http://<IP>/phpMyAdmin/
/phpmyadmin/403 且已改过 Require自建99-xxx.conf与原phpMyAdmin.conf冲突删除99-xxx.conf,直接 sed 修改phpMyAdmin.conf(见 5.2)

返回列表