Laravel部署Plesk主机后登录触发SQLSTATE[HY000][2002]错误的配置咨询
Laravel部署到Plesk后MySQL连接错误解决方案
上传Laravel项目到Plesk主机后,用户登录时出现错误:
SQLSTATE[HY000] [2002] No such file or directory
SELECT * FROMusersWHERE本地环境运行正常,当前配置如下:
database.php中的mysql配置:
'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'med'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],.env配置:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=med DB_USERNAME=root DB_PASSWORD=
需要修改的配置及操作步骤
1. 更新数据库核心连接参数
Plesk环境的MySQL和本地配置差异较大,需从Plesk面板获取真实数据库信息:
登录Plesk,进入对应域名的数据库管理页面,记录:
- 实际数据库名称(通常带用户前缀,比如
plesk_med) - 数据库用户名(同前缀格式,比如
plesk_med) - 数据库密码(Plesk创建数据库时生成的专属密码,不是本地root密码)
- Unix套接字路径(常见为
/var/run/mysqld/mysqld.sock或/tmp/mysql.sock,可在数据库详情页查看)
- 实际数据库名称(通常带用户前缀,比如
修改
.env文件,替换为获取到的真实信息:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 # 替换为Plesk实际数据库名 DB_DATABASE=plesk_med # 替换为Plesk实际数据库用户名 DB_USERNAME=plesk_med # 替换为Plesk生成的数据库密码 DB_PASSWORD=your_plesk_db_password # 添加套接字路径 DB_SOCKET=/var/run/mysqld/mysqld.sock
2. 优化database.php兼容性(可选)
若套接字连接仍异常,可在database.php的mysql配置中默认指定套接字路径:
'unix_socket' => env('DB_SOCKET', '/var/run/mysqld/mysqld.sock'),
3. 清除缓存并生效配置
在Plesk的终端或SSH中执行命令:
# 清除配置缓存 php artisan config:clear # 清除路由缓存 php artisan route:clear # 生产环境可选:生成配置缓存 php artisan config:cache
4. 确认数据库权限
确保Plesk中创建的数据库用户拥有对应数据库的全部操作权限,避免因权限不足导致查询失败。
内容的提问来源于stack exchange,提问作者Kukuh Gumilang
相关产品推荐
相关产品推荐

