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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐