温馨提示×

centos lamp为何无法连接库

小樊
41
2026-10-06 04:48:31
栏目: 智能运维

在 CentOS + LAMP 环境下“无法连接库”通常指 PHP 无法连接 MySQL/MariaDB(或连接数据库失败)。常见原因和排查方法如下:


一、最常见的几类原因

1️⃣ 数据库服务未启动

systemctl status mariadb   # 或 mysqld

若未启动:

systemctl start mariadb
systemctl enable mariadb

2️⃣ PHP 缺少数据库扩展

LAMP 中常见:

  • MySQL(老):php-mysql
  • MariaDB:php-mysqlnd
  • PHP 7+:通常是 php-mysqlnd

检查:

php -m | grep -i mysql

若无输出:

yum install php-mysqlnd
systemctl restart httpd

3️⃣ 连接地址错误(localhost vs 127.0.0.1)

  • localhost → 使用 socket
  • 127.0.0.1 → 使用 TCP

错误示例:

mysqli_connect("localhost", "user", "pass");

但 MariaDB 只监听 TCP

解决:

mysqli_connect("127.0.0.1", "user", "pass", "db", 3306);

4️⃣ 数据库用户权限问题

登录数据库:

SELECT user, host FROM mysql.user;

若用户只允许 localhost:

GRANT ALL ON db.* TO 'user'@'%' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;

5️⃣ SELinux 阻止连接

CentOS 默认开启 SELinux,可能拦截 httpd 访问数据库。

临时测试:

setenforce 0

若可行,永久允许:

setsebool -P httpd_can_network_connect_db on

6️⃣ 防火墙阻止(少见但可能)

firewall-cmd --list-all

确保 3306 放行(远程连接时)。


7️⃣ PHP 报错被隐藏

开启错误显示:

ini_set('display_errors', 1);
error_reporting(E_ALL);

或查看:

/var/log/httpd/error_log
/var/log/mariadb/mariadb.log

二、典型错误信息对照

错误信息 原因
No such file or directory socket 路径不对
Connection refused 服务未启动 / 端口错
Access denied 用户名/密码/权限错
Unknown database 库不存在
Call to undefined function 缺 PHP 扩展

三、快速自检清单 ✅

  • [ ] mariadb 已启动
  • [ ] php-mysqlnd 已安装
  • [ ] 用户权限正确
  • [ ] 使用正确 host
  • [ ] SELinux 未拦截
  • [ ] 错误日志已查看

如果你愿意,可以把 具体报错信息 + PHP 连接代码 发出来,我可以直接帮你定位是哪一步的问题。

0 踩