laravel数据库配置只需修改.env文件,确保db_connection、db_host、db_port、db_database、db_username、db_password正确,并执行php artisan config:clear;常见连接错误需检查mysql用户授权、docker容器名、密码插件兼容性;sqlite仅限开发使用,需删其他db_配置并确保database.sqlite存在且可写;迁移需运行php artisan migrate而非seed,表不存在时应确认迁移文件正确且已执行。

数据库配置文件在哪、改哪里
Laravel 的数据库配置全在 .env 文件里,不是 config/database.php ——后者只是读取 .env 的桥梁,直接改它没用,还会被下次部署覆盖。
你只需要确保 .env 中这几行存在且正确:
-
DB_CONNECTION=mysql(或pgsql、sqlite) -
DB_HOST=127.0.0.1(别写localhost,MySQL 8+ 默认跳转到 socket,连不上) -
DB_PORT=3306(Docker 或远程库常改端口) -
DB_DATABASE=your_db_name(库必须提前建好,Laravel 不自动创建) -
DB_USERNAME=your_user和DB_PASSWORD=your_pass
改完记得清缓存:php artisan config:clear,否则 Laravel 还用旧配置。
“SQLSTATE[HY000] [1045] Access denied” 怎么快速定位
这个错不是密码错了那么简单,常见真实原因有三个:
- MySQL 用户没授权给对应 host:比如用户
homestead@localhost无法从127.0.0.1连,得加homestead@127.0.0.1 - Docker 环境下
DB_HOST写成localhost,实际要填容器名(如mysql) - MySQL 8+ 默认用
caching_sha2_password插件,老驱动不认,临时方案是执行:ALTER USER 'your_user'@'%' IDENTIFIED WITH mysql_native_password BY 'your_pass';
验证是否通:终端运行 mysql -h $DB_HOST -P $DB_PORT -u $DB_USERNAME -p,手动输密码试试——绕过 Laravel,直连看报什么错。
SQLite 开发时怎么省掉 MySQL 安装
适合本地快速启动、CI 测试或小项目,但要注意它和 MySQL 行为差异大,别等上线才发现不兼容。
- 把
.env的DB_CONNECTION改成sqlite,其他 DB_XXX 行全删或注释掉 - 确保
database/database.sqlite文件存在且 web 服务器有写权限(chmod 664 database/database.sqlite) -
config/database.php里sqlite的'database'路径默认是database_path('database.sqlite'),别手误写成绝对路径
注意:SQLite 不支持迁移回滚(migrate:rollback)、外键约束默认关闭、没有用户权限体系——仅限开发阶段用。
配置生效了但 migration 报 “Table doesn’t exist”
不是配置问题,是 schema 没同步。Laravel 不会自动建表,必须跑迁移:
- 先确认迁移文件存在:
database/migrations/xxxx_create_users_table.php - 执行
php artisan migrate,不是db:seed(那是插数据) - 如果提示 “No migrations found”,检查文件名是否含非法字符,或是否漏了
use Illuminate\Database\Migrations\Migration; - 已跑过又改了迁移?别直接改原文件,应新建迁移加字段:
php artisan make:migration add_email_to_users_table --table=users
真正容易被忽略的是:php artisan migrate:fresh 会删库重来,但只对当前连接生效——如果你配了多个 DB 连接,它默认只动 DB_CONNECTION 指定的那个。











