You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Laravel Sail、Docker及WSL2环境下使用Tenancy For Laravel创建租户独立数据库时遭遇1044权限错误求助

解决Laravel Sail + Tenancy For Laravel创建租户数据库权限问题

嘿,我刚踩过这个坑,帮你搞定!这个错误的核心原因很明确:Laravel Sail默认的sail数据库用户没有创建新数据库的权限——你在XAMPP里用的大概率是root或者权限更高的账号,所以能正常创建,但Sail出于安全考虑,默认只给sail用户开放了对默认laravel数据库的操作权限,没有CREATE DATABASE这个关键权限。

下面给你两种靠谱的解决方案:

方案一:给sail用户添加创建数据库的权限

  • 先进入MySQL容器:
    sail exec mysql bash
    
  • 用root账号登录MySQL(默认密码是password):
    mysql -u root -p
    
  • 执行权限赋予命令:
    GRANT CREATE ON *.* TO 'sail'@'%';
    FLUSH PRIVILEGES;
    
  • 退出MySQL和容器,再尝试创建租户,应该就能顺利执行了。

方案二:让Tenancy使用root用户创建数据库

如果不想给sail用户太高权限,可以让Tenancy在创建数据库阶段临时用root账号,创建完成后再切换回sail操作租户数据:

  • 打开config/tenancy.php配置文件,找到database配置段,修改system部分的数据库账号:
    'database' => [
        'system' => [
            'connection' => env('DB_CONNECTION', 'mysql'),
            // 临时改用root账号创建数据库
            'username' => 'root',
            'password' => 'password',
        ],
        'tenant' => [
            'connection' => 'tenant',
            // 租户日常操作仍用sail账号
            'username' => env('DB_USERNAME', 'sail'),
            'password' => env('DB_PASSWORD', 'password'),
            // ... 其他原有配置
        ],
    ]
    
  • 保存配置后,清除Laravel的配置缓存:
    sail artisan config:clear
    
  • 再尝试创建租户,此时Tenancy会用root账号执行建库操作,权限完全足够。

额外提醒

  • 先确认Docker容器里的MySQL服务正常运行,可通过docker-compose ps查看状态
  • WSL2环境下只要Docker Desktop的WSL集成配置正确,网络层面一般不会出问题,重点还是聚焦在数据库权限配置上

内容的提问来源于stack exchange,提问作者Bulent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 21:27:43