Bul*_*ent 5 multi-tenant laravel docker wsl-2 laravel-sail
我第一次使用 Laravel 8、 Docker 上的Tenancy For Laravel和 WSL2 开发多租户应用程序。当我尝试创建租户时出现问题。我想为每个租户创建一个新数据库,但创建数据库会出现以下错误:
SQLSTATE[42000]:
Syntax error or access violation:
1044 Access denied for user 'sail'@'%' to database 'tenant-a6d0813b-a546-428d-859a-15095724fb73'
(SQL: CREATE DATABASE `tenant-a6d0813b-a546-428d-859a-15095724fb73` CHARACTER SET `utf8mb4` COLLATE `utf8mb4_unicode_ci`)
Run Code Online (Sandbox Code Playgroud)
我什至不知道应该从哪里开始,因为我对 Docker、WLS 和 Laravel Sail 还很陌生。在将此项目移至 Docker 之前,我能够在 Xammp 上创建数据库,但现在不行了。
docker-compose.yml 文件与 Laravel 提供的一样,除了包含 phpmyadmin 的部分:
phpmyadmin:
image: phpmyadmin
restart: always
ports:
- 8080:80
environment:
- PMA_HOST=mysql
depends_on:
- mysql
networks:
- sail
Run Code Online (Sandbox Code Playgroud)
我今天遇到了完全相同的问题。
问题似乎是 .env 文件中设置的 db 用户“sail”。它没有创建数据库所需的权限。
使用命令打开 mysql 控制台sail mysql并尝试创建数据库会CREATE DATABASE test;导致相同的错误。
将 .env 文件中的参数更改为:
DB_USERNAME=root
Run Code Online (Sandbox Code Playgroud)
重建 docker 容器会导致 docker 创建日志中出现错误,因此 mysql 根本无法运行。
以 root 身份登录 docker mysql 并尝试为“sail”用户设置新权限也没有帮助。
最终对我有用的是使用标准构建应用程序
DB_USERNAME=sail
Run Code Online (Sandbox Code Playgroud)
启动应用程序sail up -d,然后将 .env 文件更改为
DB_USERNAME=root
Run Code Online (Sandbox Code Playgroud)
之后我用 重置了配置sail artisan config:clear。
我很久以前就问过这个问题了。我已经停止了那个项目的工作。现在,我开始了一个新的工作,面临着同样的问题。我在寻找解决方案时遇到了自己的问题。我找到了,在这儿:
您应该在终端上执行以下命令:
docker-compose exec mysql bash
mysql -u root -p
password: password
GRANT ALL PRIVILEGES ON *.* TO 'sail'@'%';
FLUSH PRIVILEGES;
EXIT;
exit
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2786 次 |
| 最近记录: |