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

有一个脚本来拉起一些MySQL服务器变种,并testing我的脚本在不同的版本。 我的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) 

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

由于没有服务,docker不使用init.d结构。 如果你在Dockerfile里面检查,你会发现mysql在前台启动。

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

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

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