如何查看mysql版本|终端执行语句和客户端查询均可快速核验

如何查看mysql版本|终端执行语句和客户端查询均可快速核验

半夜临时接到项目预警,数据库连接频繁报错,运维群里催着上报环境信息,迫不得已抓紧琢磨如何查看mysql版本,手边没有项目文档,服务器权限只开了普通登录账号,手边也查不了线上留存的部署台账,只能凭着以前零碎碰过的操作挨个试入口,先是点开服务器远程连接工具,习惯性输了mysql登入命令,结果第一次输完指令直接提示访问被拒绝,才想起这台机器的数据库端口不是默认3306,之前接手的时候前人改了自定义端口,没记在备忘录里,白白浪费十多分钟来回切换参数,鼠标来回点着终端输入框,反复删掉错误的端口数字,整个人困得眼皮发沉,本来想着凑合糊弄过去数据上报,可运营那边等着版本信息排查兼容bug,根本没法敷衍了事,只能沉下心从系统自带的几种查询路子挨个试探,先是区分登入数据库内部和不登入两种操作逻辑,前者需要账号密码验证,后者依托系统命令不用进库,两种路径各有适用场景,服务器没配置数据库登录密码的时候,后者反而省事不少,不少新手分不清两种场景,上来就输登录指令,卡在密码校验环节白白耽搁功夫。

行不通。

在没登入mysql客户端的状态下,敲mysql -V是最先试的法子,这里总容易把大写V打成小写v,之前好几次做配置的时候在符号上栽跟头,输错符号系统直接返回无效参数,屏幕上跳出一大串英文报错,翻来覆去核对拼写,才分清大小写参数带来的区别,而且部分Linux系统精简安装数据库后,环境变量没写入系统配置,哪怕指令拼写全对,系统也识别不到mysql命令,跳出command not found的提示,遇上这类情况,再切换到数据库的安装目录bin文件夹内执行./mysql -V,绕过环境变量缺失带来的阻碍,那次紧急排查就是卡在环境变量缺失这块,折腾大半天才绕开限制调出版本号,其实多数自建云服务器很少优化环境变量,这条路径的出错概率远比预想的要高。

同事那边远程桌面连的Windows服务器,操作路子又不一样,他习惯性打开CMD窗口,直接定位到MySQL安装目录的bin文件夹,再执行同款查询指令,系统立马弹出版本详情,可他嫌找文件夹路径太繁琐,转头点开本地安装的Navicat客户端,连上目标库后在查询编辑器输入select version();,执行语句后结果栏直接带出完整版本信息,随口吐槽桌面工具就是比黑框终端省心,不用记复杂路径,就是本地没装可视化工具的时候完全用不上这套方案,偏偏线上生产机基本不会额外部署客户端软件,大多只能依赖终端指令操作。

进到数据库内部之后,可选的查询语句不止一种,除了version()函数,show variables like 'version';也能调出对应数据,两次实操里发现,前者返回的数据格式简洁,只罗列版本数字,后者附带系统配套的零碎参数,需要在返回结果里筛选核心内容,做报表填报的时候前者更省事,只是偶然碰到老旧5.x系列数据库,个别精简编译的安装包,后一条指令偶尔出现字段匹配异常,查不到有效数据,只能放弃改用函数查询,没法死守单一查询语句。

还有依托系统rpm包查看的方式,只适配Linux rpm格式安装的mysql,敲rpm -qa |grep mysql就能调取安装包附带的版本标注,那次紧急排查到后半段,前面两种命令接连碰壁,最后靠这条系统包查询指令拿到了准确版本,可惜Docker容器部署的数据库没法用rpm命令,容器内没有rpm管理组件,这条法子直接作废,白在终端敲了两行字符,容器化部署已经慢慢成为主流,这条系统命令能用的场景正在慢慢变少。

随手存了几条常用语句在记事本,往后再碰到临时要查版本的场景,不用到处翻零散笔记。

中途摸鱼放空的时候,忽然想起以前偷懒,直接去数据库安装目录找README文档,文档首页大多标注打包版本,只是很多运维部署时会随手删掉多余说明文件,大半服务器里都找不到这份文档,这条路只能当成备选,不能当作主力查询方式,不少刚入行的人总想着靠文档省事,到头来大多落空,白白耗费时间在文件夹检索上,试过三四台机器,也就一台测试环境还留存着原始文档。

忙完凌晨三点,趴在办公椅上眯了片刻,醒过来第一件事就是把本次用到的有效命令分类记在本地文档。

了解更多百科知识请访问 百科