docker exec mysql报ERROR 2002 和ERROR 2003错误的解决办法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值