3

我第一次使用 Laravel 8、Docker 和 WSL2 上的Tenancy For Laravel开发多租户应用程序。当我尝试创建租户时出现问题。我想为每个租户创建一个新数据库,但创建数据库会引发以下错误:

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`) 

我什至不知道我应该从哪里开始,因为我对 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
4

1 回答 1

5

我今天遇到了完全相同的问题。

问题似乎是 .env 文件中设置的 db 用户“sail”。它没有创建数据库所需的权限。

使用命令打开 mysql 控制台sail mysql并尝试创建数据库CREATE DATABASE test;会导致相同的错误。

将 .env 文件中的参数更改为:

DB_USERNAME=root

并重建 docker 容器导致 docker 创建日志中出现错误,因此 mysql 根本没有运行。

以 root 身份登录 docker mysql 并尝试为“sail”用户设置新权限也无济于事。

最终对我有用的是使用标准构建应用程序

DB_USERNAME=sail

启动应用程序,sail up -d然后将 .env 文件更改为

DB_USERNAME=root

之后,我使用 重置配置sail artisan config:clear

于 2021-07-13T10:01:51.077 回答