phpMyAdmin 不能创建 Laravel 后台管理员,必须通过 artisan tinker 或 Seeder 插入 bcrypt 加密密码、设置 email_verified_at 等字段,并配合权限包分配角色,否则登录失败或无后台权限。
phpmyadmin 本身不能“创建 laravel 后台管理员”,它只是操作数据库的工具;真正创建管理员账户,必须通过 laravel 的 php artisan tinker 或数据库迁移/填充机制完成,否则用户数据不会被加密、不会触发模型事件、也不会兼容 laravel 的认证逻辑。
直接在 phpMyAdmin 里插入 users 表行 = 高概率登录失败
很多人在 users 表里手动 INSERT 一条记录,填入邮箱和明文密码,结果登录时提示“Invalid credentials”。原因很直接:Laravel 的 password 字段必须是 bcrypt 加密后的哈希值,不是明文或 MD5。phpMyAdmin 不提供 bcrypt 加密功能,硬填进去的密码字段无效。
- 手动填
password字段时,必须用bcrypt('your_password')生成 —— 但 phpMyAdmin 不支持该函数(除非你启用了 MySQL 的ENCRYPT(),但它跟 Laravel 不兼容) -
remember_token字段可以为空(NULL),但不能留空字符串或乱填 -
email_verified_at字段若开启邮箱验证,需设为有效时间戳(如NOW())或 NULL;设成 '0000-00-00 00:00:00' 会触发 Carbon 解析异常
正确做法:用 tinker 在命令行生成管理员
这才是安全、可复现、符合 Laravel 认证流程的方式。前提是你的 Laravel 应用已能正常运行(php artisan serve 可访问),且数据库配置正确。
- 执行
php artisan tinker进入交互环境 - 输入以下代码(注意替换邮箱和密码):
App\Models\User::create([ 'name' => 'Admin', 'email' => 'admin@example.com', 'password' => bcrypt('your_secure_password'), 'email_verified_at' => now(), ]); - 如果模型命名空间不同(比如用了
App\User),请按实际路径调整,不要盲目复制 - 执行后返回一个 User 实例,说明已写入数据库并自动加密密码
补充方案:用 Seeder 快速批量初始化管理员
适合部署新环境或 CI/CD 场景,比每次 tinker 更可控。Seeder 本质是可重复运行的 PHP 脚本,天然支持 bcrypt 和条件判断。
- 运行
php artisan make:seeder AdminUserSeeder - 编辑生成的文件,在
run()方法中写:use Illuminate\Support\Facades\Hash; // … User::firstOrCreate( ['email' => 'admin@example.com'], [ 'name' => 'Admin', 'password' => Hash::make('your_secure_password'), 'email_verified_at' => now(), ] ); - 再执行
php artisan db:seed --class=AdminUserSeeder -
firstOrCreate可避免重复插入导致唯一键冲突
最常被忽略的一点:Laravel 后台权限通常不靠 users 表单字段控制(比如加个 is_admin),而是依赖包如 spatie/laravel-permission 的 roles & permissions 体系。只插一条 user 记录,不代表它有后台访问权 —— 还得 assign role,这部分没法靠 phpMyAdmin 完成。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











