![Ubuntu 22.04 上的 docker mysql 5.7](https://linux22.com/image/1192287/Ubuntu%2022.04%20%E4%B8%8A%E7%9A%84%20docker%20mysql%205.7.png)
我习惯使用 Ubuntu 20.04 和像这样创建的 docker mysql:
sudo docker run --name mysql-57-container -p 127.0.0.1:3310:3306 -e MYSQL_ROOT_PASSWORD=. -d --volume=/usr/share/docker/mysql57/conf.d:/etc/mysql/conf.d --volume=/usr/share/docker/mysql57/data:/var/lib/mysql mysql:5.7
之后,mysql -u root -p --host=127.0.0.1 --port=3310
即使我在同一台机器上安装了 mysql 8.0,我也可以访问它
我尝试使用相同的设置,因此我在 Ubuntu 22.04 机器上执行了相同的 docker 命令,但是当我尝试访问它时出现此错误,ERROR 1130 (HY000): Host '172.17.0.1' is not allowed to connect to this MySQL server
我希望有人能帮助我,为什么会这样?谢谢
答案1
也许你可以使用这个命令来连接 mysql:
docker run --name mysql-57-container -p 3310:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_ROOT_HOST=% -d --volume=/usr/share/docker/mysql57/conf.d:/etc/mysql/conf.d --volume=/usr/share/docker/mysql57/data:/var/lib/mysql mysql:5.7
答案2
看起来 docker 版本有点不同。我Docker version 20.10.22, build 3a2c30b
在 20.04 机器和Docker version 20.10.23, build 7155243
22.04 机器上都安装了。
在 22.04 上,它不能直接将路径放到卷上,它需要先创建卷
sudo docker volume create --driver local --opt type=none --opt device=/usr/share/docker/mysql57 --opt o=bind mysql57_conf
然后在音量部分使用它
sudo docker run --name mysql-57-container -p 127.0.0.1:3310:3306 -e MYSQL_ROOT_PASSWORD=. -v mysql57_conf:/etc/mysql -d mysql:5.7
这样问题就解决了