在 CentOS + LAMP 环境下“无法连接库”通常指 PHP 无法连接 MySQL/MariaDB(或连接数据库失败)。常见原因和排查方法如下:
systemctl status mariadb # 或 mysqld
若未启动:
systemctl start mariadb
systemctl enable mariadb
LAMP 中常见:
php-mysqlphp-mysqlndphp-mysqlnd检查:
php -m | grep -i mysql
若无输出:
yum install php-mysqlnd
systemctl restart httpd
localhost → 使用 socket127.0.0.1 → 使用 TCP错误示例:
mysqli_connect("localhost", "user", "pass");
但 MariaDB 只监听 TCP
解决:
mysqli_connect("127.0.0.1", "user", "pass", "db", 3306);
登录数据库:
SELECT user, host FROM mysql.user;
若用户只允许 localhost:
GRANT ALL ON db.* TO 'user'@'%' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
CentOS 默认开启 SELinux,可能拦截 httpd 访问数据库。
临时测试:
setenforce 0
若可行,永久允许:
setsebool -P httpd_can_network_connect_db on
firewall-cmd --list-all
确保 3306 放行(远程连接时)。
开启错误显示:
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 扩展 |
如果你愿意,可以把 具体报错信息 + PHP 连接代码 发出来,我可以直接帮你定位是哪一步的问题。