树莓派Raspbian系统下MySQL Shell客户端触发段错误求助
看起来你遇到的是mysql命令行客户端本身的崩溃问题,而非MySQL服务端故障——毕竟Python的pymysql和Perl都能正常连接读写,说明服务端运行完全没问题。段错误(segmentation fault)一般是客户端程序二进制损坏、依赖库出问题,或者配置文件冲突导致的,给你几个一步步排查的方案:
先校验客户端文件完整性
如果你是通过apt安装的mysql客户端,用这个命令检查文件是否被损坏:dpkg -V mysql-client输出里如果有带
!或者?的行,说明对应文件校验失败,大概率是文件损坏了,直接走下一步重新安装即可。彻底重装mysql客户端
有时候文件损坏或者安装残留会导致奇怪的崩溃,彻底卸载再重装是最直接的办法:# 彻底卸载客户端及相关依赖 sudo apt remove --purge mysql-client mysql-client-core-* # 清理残留的配置和无用包 sudo apt autoremove && sudo apt clean # 重新安装客户端 sudo apt install mysql-client装完后直接运行
mysql命令测试,看还会不会触发段错误。排查客户端配置文件
用户目录下的.my.cnf或者系统级的/etc/mysql/my.cnf如果有错误配置(比如格式不对、参数无效),也可能导致客户端启动时崩溃。可以先临时重命名配置文件测试:# 重命名用户配置文件 mv ~/.my.cnf ~/.my.cnf.bak之后再运行
mysql,如果不再崩溃,就说明是旧配置文件的问题,你可以慢慢对比旧文件内容,找出错误的配置项。检查依赖库是否正常
用ldd命令查看mysql客户端依赖的动态库,看看有没有缺失或者版本不兼容的情况:ldd $(which mysql)输出里如果有
not found的条目,就需要安装对应的库包。比如如果缺失libmysqlclient.so.21,可以安装libmysqlclient21包。检查用户目录权限
偶尔用户目录下的.mysql目录权限异常也会导致客户端崩溃,检查一下:ls -ld ~/.mysql如果权限不是
drwx------(只有当前用户可读可写),就修改权限:chmod 700 ~/.mysql sudo chown $USER:$USER ~/.mysql
如果以上方法都没解决,试试更新整个系统的包,可能是系统库和客户端之间存在兼容性问题:
sudo apt update && sudo apt upgrade
内容的提问来源于stack exchange,提问作者Madoc Comadrin

