docker中的MySQL连接拒绝

时间:2019-05-27 17:06:48

标签: php mysql docker docker-compose symfony4

所以我正在创建一个新的symfony 4项目,但是我无法让mysql连接到我的docker mysql。我做错了什么?

我曾尝试更改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

这是我的.env中的mysql Url     DATABASE_URL = mysql:// sf4:sf4 @ sf4_mysql:3306 / sf4

每次我执行./bin/console原则:数据库:创建时,连接被拒绝。

仅尝试创建数据库。

控制器

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

        ));

}

1 个答案:

答案 0 :(得分:1)

您需要公开mysql端口。默认值为3306。 参见port publishing

以及更多特定于mysql-8 on docker

的示例

对于检查mysql是否正在运行,最好在客户端的客户端内部运行,这样可以将数据库本身的潜在错误源减至最少,而不包括php中的潜在错误。