Laravel 不自动创建数据库,phpMyAdmin 仅显示 MySQL 中真实存在的库;需手动执行 CREATE DATABASE,确认库名拼写、大小写、用户权限及是否运行过 migrate,且 Laravel 与 phpMyAdmin 必须连接同一 MySQL 实例。

不是 Laravel 配置错了,而是你默认看不到——Laravel 本身不往 phpMyAdmin 里“放”数据库,它只用配置去连某个已存在的 MySQL 数据库;phpMyAdmin 只是那个数据库的图形界面,它不会自动同步或显示 Laravel 的配置内容。
为什么在 phpMyAdmin 里找不到 Laravel 配置的数据库
phpMyAdmin 显示的是 MySQL 实例下真实存在的数据库列表,它不读取 Laravel 的 .env 或 config/database.php。如果你在 .env 里写了 DB_DATABASE=myapp,但 MySQL 里根本没执行过 CREATE DATABASE myapp;,那 phpMyAdmin 就不可能列出它。
- 检查 MySQL 是否真有这个库:
SHOW DATABASES LIKE 'myapp';(把myapp换成你实际配的库名) - Laravel 从不自动创建数据库,只会在已有库上建表(比如运行
php artisan migrate) - 如果库名拼错、大小写不一致(Linux 系统下库名区分大小写),phpMyAdmin 也不会显示
- 确认当前登录 phpMyAdmin 的 MySQL 用户,是否有权限查看该数据库(例如用户只被授权给
laravel_%,但库叫myapp)
为什么连上了 phpMyAdmin 却看不到 Laravel 的数据表
常见原因是迁移没跑、表名前缀不匹配,或连接到了错误的数据库实例。
- 先确认 Laravel 正在用哪个库:进
php artisan tinker,运行config('database.connections.mysql.database'),看输出是否和 phpMyAdmin 左侧数据库列表里的名字完全一致 - 执行过
php artisan migrate吗?没跑迁移 = 没建表 = phpMyAdmin 里空荡荡 - 检查是否启用了表前缀:
config('database.connections.mysql.prefix')返回laravel_,那表实际叫laravel_users,不是users - Docker 或远程环境容易连错实例:phpMyAdmin 登录的是宿主机 MySQL,而 Laravel 连的是容器内 MySQL,两者数据库完全隔离
phpMyAdmin 能看到但 Laravel 死活连不上,可能卡在哪
表面能登录 phpMyAdmin,不代表 Laravel 就能用同一套参数连上——网络路径、用户权限、认证方式三者常不一致。
-
DB_HOST填localhost在 Docker 或某些 PHP 环境下会走 Unix socket,而 phpMyAdmin 通常走 TCP;换成127.0.0.1更可靠 - MySQL 用户授权必须匹配
DB_HOST:如果DB_HOST=127.0.0.1,用户就得是'myuser'@'127.0.0.1',不是'myuser'@'localhost' - MySQL 8 默认用
caching_sha2_password插件,老版 PHP 无法认证,现象就是 phpMyAdmin 能登(它可能用了兼容模式),但 Laravel 报SQLSTATE[HY000] [2054] - 改完
.env后没清缓存:php artisan config:clear必须执行,否则 Laravel 仍读旧配置
最易被忽略的一点:phpMyAdmin 和 Laravel 很可能根本连的是两个不同的 MySQL 实例——尤其在 Docker、MAMP、宝塔共存时,端口、socket、用户授权全都不互通,别假设“能登 phpMyAdmin 就等于 Laravel 能连”。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











