数据库重启后,Greatsql shell也必须重启才能连接
我的环境中,greatsql数据库和greatsql shell都是docker安装的,其中greatsql shell是按照这个文档安装的:通过unix socket方式连接GreatSQL使用过程中,我发现每次greatsql容器重启之后,greatsql shell就没法通过socket连接数据库了,会报如下错误:
MySQL Error 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)必须重启容器后才能恢复正常。
想咨询下这个是正常现象吗?有什么方法可以不需要重启容器就能重连数据库吗?
下次先执行 \reconnect 命令重连试试看,例如
MySQL192.168.x.x:3306 sslJS > \reconnect
Attempting to reconnect to 'mysql://GreatSQL@192.168.x.x:3306'..
The global session was successfully reconnected.
yejr 发表于 2025-3-24 15:50
下次先执行 \reconnect 命令重连试试看,例如
# docker exec -it greatsqlsh mysqlsh -S/tmp/mysql.sock -p123456
MySQL Shell 8.0.32
Copyright (c) 2016, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.
Type '\help' or '\?' for help; '\quit' to exit.
WARNING: Using a password on the command line interface can be insecure.
Creating a session to 'root@/tmp%2Fmysql.sock'
MySQL Error 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
现在是已经不在shell里面了,是想重新进入shell进不去了。 zkycaesar 发表于 2025-3-24 17:05
现在是已经不在shell里面了,是想重新进入shell进不去了。
GreatSQL数据库已经运行在容器中,把socket文件映射到宿主,然后再映射到GreatSQL Shell容器中,是这样吗?
有可能是GreatSQL容器重启后,文件句柄发生变化了,导致后者也跟着失效。
可以观察下文件句柄是否发生变化。用 stat 查看,例如
stat README.md
File: README.md
Size: 22566 Blocks: 48 IO Block: 4096 regular file
Device: fd02h/64770d Inode: 541683891 Links: 1
Access: (0644/-rw-r--r--)Uid: ( 1235/ yejr) Gid: (100/ users)
Access: 2025-03-21 21:05:38.877631708 +0800
Modify: 2025-03-11 15:44:19.692146711 +0800
Change: 2025-03-11 15:44:19.692146711 +0800
Birth: -
yejr 发表于 2025-3-24 17:10
GreatSQL数据库已经运行在容器中,把socket文件映射到宿主,然后再映射到GreatSQL Shell容器中,是这样吗 ...
叶老师的分析有道理
页:
[1]