Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php docker中的Mysql连接拒绝_Php_Mysql_Docker_Docker Compose_Symfony4 - Fatal编程技术网

Php docker中的Mysql连接拒绝

Php docker中的Mysql连接拒绝,php,mysql,docker,docker-compose,symfony4,Php,Mysql,Docker,Docker Compose,Symfony4,因此,我正在创建一个新的symfony4项目,但我无法让mysql连接到我的DockerMySQL。我做错了什么 我尝试更改mysql版本,将其组合并更新不同的mysql根目录和密码,但没有连接 这是我的用于mysql的docker-compose.yml mysql: image: mysql:8 container_name: sf4_mysql volumes: - .docker/data/db:/var/lib/m

因此,我正在创建一个新的symfony4项目,但我无法让mysql连接到我的DockerMySQL。我做错了什么

我尝试更改mysql版本,将其组合并更新不同的mysql根目录和密码,但没有连接

这是我的用于mysql的docker-compose.yml

mysql:
        image: mysql:8
        container_name: sf4_mysql
        volumes:
            - .docker/data/db:/var/lib/mysql
        command:
            - "--default-authentication-plugin=mysql_native_password"
            - "--lower_case_table_names=1"        
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: sf4
            MYSQL_USER: sf4
            MYSQL_PASSWORD: sf4
这里是mys.env中的mysql Url 数据库地址=mysql://sf4:sf4@sf4_mysql:3306/sf4

每次我这样做。/bin/控制台原则:数据库:创建,连接被拒绝

只是尝试创建一个数据库

控制器

class HospitalAdminController extends AbstractController
{
    /**
     * @Route("/admin/hospital/new")
     */
    public function new(EntityManagerInterface $em)
    {
        $hospital = new Hospital();
        $hospital->setName('Example Hospital')
            ->setPhone(8175831483)
            ->setAddress('123 Avenue');

        $em->persist($hospital);
        $em->flush();


        return new Response(sprintf(
            'Hiya! New Hospital id: #%d phone:%s address%s',
            $hospital->getId(),
            $hospital->getPhone(),
            $hospital->getAddress()

        ));

}

您需要公开mysql端口。默认值为3306。 看

以及更多特定于


为了检查mysql是否正在运行,最好在终端及其客户端内部运行,这样可以最大限度地减少数据库本身的潜在错误源,而不包括php中的潜在错误。

您知道我刷新连接时为什么会拒绝吗@Jimmix@Chris2kus你说的flush到底是什么意思?我正在尝试调用它(我更新了我的原始帖子以显示我的控制器。我收到一个错误,驱动程序中发生了一个异常:SQLSTATE[HY000][2002]连接被拒绝@Jimmixcheck如果你真的使用admin/root用户,或者你使用的其他用户被允许在MySQL上创建db。另一件事是使用MySQL客户端创建第二个容器,并尝试使用控制台创建任何db。如果在MySQL控制台运行良好,你知道问题出在php中。如果没有,MySQL就有问题。I在我运行/bin/console-doctor:database:create之后,它能够使用root用户创建数据库。但是,当我尝试写入时,它拒绝使用相同设置@Jimmix连接