ThinkPHP在Linux上连接数据库时,可按以下步骤排查解决:
检查配置文件
确保application/database.php
或.env
中配置正确,包括数据库类型、主机地址、端口、用户名、密码等。
localhost
连接失败,可尝试更换为127.0.0.1
。确认数据库服务状态
使用命令检查数据库是否运行:
# MySQL
sudo systemctl status mysql
# MariaDB
sudo systemctl status mariadb
若未启动,用sudo systemctl start mysql
启动服务。
验证用户权限
登录数据库,确保用户有访问权限:
mysql -u root -p
GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
若需远程访问,将localhost
改为%
。
检查防火墙与网络
开放数据库端口(默认3306):
sudo ufw allow 3306 # Ubuntu
sudo firewall-cmd --add-port=3306/tcp --permanent # CentOS
sudo firewall-cmd --reload
使用ping
或telnet
测试网络连通性。
安装PHP数据库扩展
安装对应数据库的PHP扩展(如MySQL需php-mysql
):
sudo apt-get install php-mysql # Ubuntu
sudo yum install php-mysqlnd # CentOS
安装后重启Web服务器(如sudo systemctl restart apache2
或php-fpm
)。
查看日志定位问题
检查ThinkPHP的runtime/log
目录下的错误日志,或通过Db::connect()
方法捕获异常信息,根据具体错误调整配置。
示例:Ubuntu下完整配置流程
sudo apt-get install mysql-server
mysql -u root -p
CREATE DATABASE test;
CREATE USER 'test_user'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON test.* TO 'test_user'@'localhost';
FLUSH PRIVILEGES;
.env
文件:DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_NAME=test
DB_USER=test_user
DB_PWD=123456
DB_PORT=3306
若问题仍未解决,可提供具体错误信息进一步分析。