Mysql 连接在 docker 中被拒绝
Mysql connection refuse in docker
所以我正在创建一个新的 symfony 4 项目,但我无法让 mysql 连接到我的 docker mysql。我做错了什么?
我试过更改 mysql 版本,将其组合并更新不同的 mysql root 和密码,但无法连接。
这是我的 docker-compose.yml mysql。
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 doctrine:database:create,连接被拒绝。
只是想创建一个数据库。
控制器
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。
见 port publishing
以及更多特定于 mysql-8 on docker
的示例
为了检查 mysql 是否为 运行ning,最好在其客户端终端内 运行,这样可以最大限度地减少数据库本身的潜在错误源,不包括 [=] 中的潜在错误20=].
所以我正在创建一个新的 symfony 4 项目,但我无法让 mysql 连接到我的 docker mysql。我做错了什么?
我试过更改 mysql 版本,将其组合并更新不同的 mysql root 和密码,但无法连接。
这是我的 docker-compose.yml mysql。
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 doctrine:database:create,连接被拒绝。
只是想创建一个数据库。
控制器
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。 见 port publishing
以及更多特定于 mysql-8 on docker
的示例为了检查 mysql 是否为 运行ning,最好在其客户端终端内 运行,这样可以最大限度地减少数据库本身的潜在错误源,不包括 [=] 中的潜在错误20=].