mySQL Docker“ERROR 2002(HY000):无法通过套接字连接到本地MySQL服务器”

时间:2017-11-02 14:06:51

标签: mysql sockets docker

得到一个小脚本来提取一些mySQL服务器变种并在不同版本上测试我的脚本。我的shellcript是:

docker pull mysql:$version
docker run -d -v $(pwd)/mysql.sh:/mysql.sh --name=mysql."$version" -e MYSQL_ROOT_PASSWORD='root' mysql:"$version"
docker exec -it mysql."$version" bash -c 'bash ./mysql.sh'

mysql.sh文件是:

/etc/init.d/mysql restart || service mysql restart || service mysqld restart
mysql -proot -e "SELECT @@version"

我收到以下错误:

./mysql.sh: line 1: /etc/init.d/mysql: No such file or directory
mysql: unrecognized service
mysqld: unrecognized service
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

任何人都知道什么是错的?

2 个答案:

答案 0 :(得分:0)

docker不为服务使用init.d结构,因为它没有服务。如果你在Dockerfile中检查,你会看到mysql是在前台启动的。

在第一个脚本中,不需要命令docker exec -it mysql."$version" bash -c 'bash ./mysql.sh'。您应该将其替换为:

docker exec -it mysql."$version" mysql -proot -e "SELECT @@version"

答案 1 :(得分:0)

错误表示找不到/etc/init.d/mysql。您需要将其更改为/usr/bin/mysql,它应该可以正常工作。