只需修改 .env 文件即可,Laravel 启动时自动读取其中变量覆盖 config/database.php 的默认值,且官方推荐此方式最安全;修改后须运行 php artisan config:clear 清除配置缓存。

直接改 .env 文件就行,不用碰 config/database.php —— 这是 Laravel 官方推荐且最安全的配置方式。硬改 PHP 配置文件不仅容易被 Git 误提交,还会在多环境部署时引发连接错乱。
为什么只改 .env 就够了
Laravel 启动时会自动读取 .env 中的变量,并用它们覆盖 config/database.php 里的默认值(比如 'host' => env('DB_HOST', '127.0.0.1'))。只要 .env 存在且格式正确,PHP 配置文件就只是“兜底模板”。
-
DB_CONNECTION=mysql:决定用哪种驱动(mysql/pgsql/sqlite/sqlsrv) -
DB_HOST=127.0.0.1:数据库服务器地址,本地开发填127.0.0.1,Docker 环境可能要填容器名如mysql -
DB_PORT=3306:MySQL 默认端口,PostgreSQL 是5432,别写错 -
DB_DATABASE=laravel:数据库名,确保该库已手动创建(Laravel 不自动建库) -
DB_USERNAME=root和DB_PASSWORD=:账号密码,空密码记得留空,不要写''或null
改完后必须清缓存
环境变量修改不会实时生效,因为 Laravel 会把配置缓存到 bootstrap/cache/config.php。不清理会导致新配置完全不被加载。
php artisan config:clear
如果还连不上,顺手再清下路由和视图缓存:
php artisan cache:clear
注意:config:clear 不等于 cache:clear,前者只清配置缓存,后者清全部;生产环境慎用 cache:clear,避免短暂性能抖动。
常见连不上数据库的三个坑
不是配置写错,而是环境或权限问题更常导致失败:
- MySQL 服务根本没启动(
sudo service mysql status查一下) - 用户没有远程访问权限(本地开发用
127.0.0.1但 MySQL 账号只允许localhost登录,需执行GRANT ALL ON *.* TO 'root'@'127.0.0.1'; FLUSH PRIVILEGES;) -
.env文件末尾有多余空格或 BOM 头(尤其 Windows 编辑器保存时易产生),会导致env()解析失败,表现为DB_HOST变成null
真正需要动 config/database.php 的情况极少,比如要用不同前缀区分多租户、或给某个连接加特殊 PDO 属性(如 'options' => [PDO::MYSQL_ATTR_SSL_CA => '/path/to/ca.pem'])。日常开发,盯紧 .env 就行。










