Mysql 用户的SQLSTATE[HY000][1045]访问被拒绝';symfony'@';本地主机';(使用密码:是)--docker

Mysql 用户的SQLSTATE[HY000][1045]访问被拒绝';symfony'@';本地主机';(使用密码:是)--docker,mysql,docker,symfony,connect,Mysql,Docker,Symfony,Connect,错误: 在AbstractMySQLDriver.php第112行中: 驱动程序中发生异常:用户'symfony'@'localhost'(usin的SQLSTATE[HY000][1045]访问被拒绝 g密码:是) 在Exception.php第18行中: 用户'symfony'@'localhost'的SQLSTATE[HY000][1045]访问被拒绝(使用密码:是) 在PDOConnection.php第38行中: 用户'symfony'@'localhost'的SQLSTATE[HY0

错误:

在AbstractMySQLDriver.php第112行中:

驱动程序中发生异常:用户'symfony'@'localhost'(usin
的SQLSTATE[HY000][1045]访问被拒绝 g密码:是)

在Exception.php第18行中:

用户'symfony'@'localhost'的SQLSTATE[HY000][1045]访问被拒绝(使用密码:是)

在PDOConnection.php第38行中:

用户'symfony'@'localhost'的SQLSTATE[HY000][1045]访问被拒绝(使用密码:是)

.env:数据库URL=mysql://symfony:symfony@127.0.0.1:3306/symfony?服务器版本=5.7

docker设置:docker-compose.yml

 db:
        container_name: db
        image: 'mysql:8.0'
        command: ["--default-authentication-plugin=mysql_native_password"]
        ports:
            - "3306:3306"
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: symfony
            MYSQL_USER: symfony
            MYSQL_PASSWORD: symfony
            DATABASE_URL: symfony.localhost
        networks:
            - db

您的连接字符串应为:

DATABASE_URL=mysql://symfony:symfony@db/symfony?serverVersion=5.7
Tl;dr对主机部件使用
db
而不是
localhost
/
127.0.0.1
db
是MySQL容器的名称。Docker容器的行为类似于主机本身


如果您不打算从主机连接到MySQL(例如使用MySQL workbench/Sequel Pro),您可以在
docker compose
文件中删除
端口:3306:3306
发布部分。端口不需要它来工作。允许容器在其网络中自由地与自己交谈,并与任何端口进行通信。

您好,这可能是您感兴趣的地方