mysql安装完了,需要进行一下设置,客户端才能连接,这里采用docker方式安装,然后采用shell执行sql脚本来初始化时报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
ERROR 2003 (HY000): Can't connect to MySQL server on '0.0.0.0:3306' (111)
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (101)
调试后 终于不报错了,现在把shell脚本记下来:
# 获取 该容器实例的ip
mysql_docker_ip=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my_mysql)
echo "容器实例ip:$mysql_docker_ip"
exe_sqls="GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '"$MYSQL_ROOT_PASSWORD"';flush privileges;"
docker exec -id $CNT_NAME mysql -h$mysql_docker_ip -P$MYSQL_PORT --protocol=tcp -uroot -p$MYSQL_ROOT_PASSWORD -e "${exe_sqls}"
注意点:
--protocol=tcp
通常进入容器用 docker exec -it 但是这里比较特殊,要改为 docker exec -id,就是后台运行
-h 一定要是容器实例的内网ip,即 mysql_docker_ip,我试了0.0.0.0 127.0.0.1 localhost 都不行
-P 一定是映射出来的端口,不是容器里的端口3306