select version()必须带括号且大写,否则报错function version does not exist;它返回服务端真实版本如8.0.33,结果为单行单列,权限要求低,适用于脚本解析。

SELECT VERSION() 必须带括号,否则报 FUNCTION version does not exist
这是最常用也最容易出错的方式。直接执行 SELECT VERSION(); 就能拿到服务端真实版本,比如 8.0.33 或 5.7.42-log。但很多人写成 SELECT VERSION(漏括号)或 SELECT version()(小写),MySQL 会报错 FUNCTION version does not exist——因为它是函数,不是字段名,且大小写敏感(标准写法是大写 VERSION())。
-
SELECT VERSION();返回单行单列,结果干净,适合脚本解析 - 如果连的是 MariaDB,它也认这个函数,但返回值带
-MariaDB后缀,如10.6.12-MariaDB - 权限要求极低:只要能执行查询就行,不需要
SHOW VARIABLES那样的额外权限
mysql -V 和 mysqld --version 查的是客户端/服务端二进制版本,不是运行中的服务版本
在没连库时,用命令行快速确认本地安装的程序版本:mysql -V(注意大写 V)查客户端,mysqld --version 查服务端可执行文件版本。但这俩和实际运行的服务可能不一致——比如你装了 8.0.36 的 mysqld,但启动的是旧配置指向的 5.7.41 实例。
-
mysql -V输出类似mysql Ver 8.0.36-0ubuntu0.22.04.1 for Linux on x86_64,第一段数字才是版本号 -
mysqld --version只输出一行,如mysqld Ver 8.0.36 for Linux on x86_64 - 若提示
command not found,说明没加到$PATH,得进 MySQL 安装目录的bin/下再执行
STATUS; 或 \s 命令里 Server version: 才是真实服务版本
登录 MySQL 后直接输 STATUS;(或简写 \s),输出里有两处版本信息:开头的 mysql Ver ... 是客户端版本,真正关键的是 Server version: 这一行。它反映当前连接所指向的服务实例的实际版本,不受客户端影响。
- 输出中还会附带协议版本、连接方式(socket/TCP)、SSL 状态等上下文,方便排查兼容性问题
- 如果用的是代理(如 ProxySQL)或容器化部署,这里显示的才是后端真实 MySQL 的版本
- 注意别把
Connection id:或Current user:当成版本线索——它们和版本无关
SELECT @@version 和 SHOW VARIABLES LIKE 'version' 的差异在哪
SELECT @@version; 和 SELECT VERSION(); 功能完全等价,都是读取同一个内部变量,只是语法风格不同;而 SHOW VARIABLES LIKE 'version'; 会返回三列(Variable_name、Value、Type),其中 version 行的 Value 就是版本号,但同时还会列出 version_comment、version_compile_os 等辅助信息。
-
SELECT @@version;更紧凑,适合嵌入其他 SQL 逻辑中 -
SHOW VARIABLES LIKE 'version';适合运维场景,比如批量检查多个变量是否符合规范 - 所有这些方式查到的都是服务端版本,不是客户端、不是驱动、不是连接池封装层的版本
mysql -V 或欢迎页里的 Server version(刚连接时显示的)都可能滞后。最稳妥的做法,永远以 SELECT VERSION(); 在目标库上执行为准。











