MySQL获取版本号的N种方法(全网最全以及避坑大全)

 更新时间:2024年10月29日 09:52:19   作者:TechCraftsman数据库专栏  
相信大家在工作学习中经常有需要查询 MySQL 数据库版本的情况,这里给大家介绍几种在 MySQL 中查询数据库版本的方法以及每种方法适用的场景,相信总有一种可以帮到你,需要的朋友可以参考下

方法1:通过 SQL 查询

如果可以连接上数据库并且可以执行 SQL,那么可以直接用 SQL 查看,下边的两种 SQL 都可以查询出来版本号:

写法1:

SELECT VERSION();

写法2:

SELECT @@VERSION;

执行 SQL 的查询结果示例:

+------------+
| version()  |
+------------+
| 5.7.16-log |
+------------+

方法2:通过命令行

如果可以直接通过命令行连接到数据库。

方法2.1:命令行刚连上数据库时

在命令行使用 mysql 命令连接数据库的时候,刚连上之后,从输出的信息中可以看到数据库的版本,示例:

> mysql -uroot -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.16-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

其中 Server version: 5.7.16-log MySQL Community Server (GPL) 这一行我们就可以看出 MySQL 数据库的版本。

方法2.2:使用 status 命令

如果我们已经通过 mysql 命令连接上了数据库,还可以通过 status 命令或者 \s 查看数据库的版本信息以及数据库的相关状态。

示例1:

mysql> status
--------------
mysql  Ver 8.0.33 for Win64 on x86_64 (MySQL Community Server - GPL)  <--------------- 这里是 mysql 客户端(命令行工具)的版本 

Connection id:          5
Current database:
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.7.16-log MySQL Community Server (GPL) <--------------- 这里才是 MySQL 服务端的版本
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:               3306
Uptime:                 2 hours 40 min 24 sec

Threads: 2  Questions: 213  Slow queries: 0  Opens: 111  Flush tables: 1  Open tables: 104  Queries per second avg: 0.022

示例2:

mysql> \s
--------------
mysql  Ver 8.0.33 for Win64 on x86_64 (MySQL Community Server - GPL)  <--------------- 这里是 mysql 客户端(命令行工具)的版本 

Connection id:          5
Current database:
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.7.16-log MySQL Community Server (GPL) <--------------- 这里才是 MySQL 服务端的版本
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:               3306
Uptime:                 2 hours 40 min 24 sec

Threads: 2  Questions: 213  Slow queries: 0  Opens: 111  Flush tables: 1  Open tables: 104  Queries per second avg: 0.022

扩展:方法3:通过 version_comment 辨别开源版本和魔改版本

SHOW VARIABLES LIKE 'version_comment';

这个方法实际上查看的是 MySQL 的版本备注信息。

示例:

+-----------------+------------------------------+
| Variable_name   | Value                        |
+-----------------+------------------------------+
| version_comment | MySQL Community Server (GPL) |
+-----------------+------------------------------+

version_comment 实际上是数据库的一个全局变量,对于开源社区版本来说,这个变量的值都是一样的。但是有一些基于 MySQL 开发或者和 MySQL 兼容的数据库,当需要和 MySQL 进行区分的时候,就可以根据这个全局变量来区分。

比如 TiDB 数据库执行之后查询出来的结果示例:

TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible

StarRocks 数据库执行之后查询出来的结果示例:

StarRocks version 3.0.3

扩展:方法4:查看所有和版本相关的信息

前边我们介绍了通过全局变量 version_comment 查看 MySQL 具体的编译版本的方法,那么你是否会想?MySQL 中和版本相关的信息还有别的吗?接下来就介绍一种方法,教你把全局变量中和版本相关的信息一网打尽。

执行下边这个 SQL 可以查看所有变量名称中带有 version 的变量。

SHOW GLOBAL VARIABLES LIKE '%version%';

执行后的示例结果:

+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 5.7.16                       |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| tls_version             | TLSv1,TLSv1.1                |
| version                 | 5.7.16-log                   |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86_64                       |
| version_compile_os      | Win64                        |
+-------------------------+------------------------------+

全网纠错

纠错1:mysql --help 或者 mysql -V 方式

有的文章会教你用 mysql --help 或者 mysql -V 或 mysql --version 的方式查看数据库版本。

但是这种方式,实际上查看的是 mysql 客户端(命令行工具)的版本,而不是 MySQL 数据库服务端的版本。

纠错2:通过 rpm 等包管理工具查看版本

有的文章会教你使用 rpm -qa | grep mysql 这种方式查看服务器安装的版本。

这种方法的限制条件在于:

(1)这种方法只能在安装 MySQL 数据库的服务器上执行。

(2)仅适用于使用 rpm 包管理工具的部分 Linux 操作系统

这种方法可能的坑点在于:

服务器上实际运行的 MySQL 和包管理工具查询出来的可能并不是同一个 SQL。因为这种方法查询出来的仅仅是通过包管理工具安装的 SQL 的版本。但是实际运行的 MySQL 有可能是通过压缩包离线安装的并不是通过包管理工具安装的,这种情况下服务器上可能同时有多种版本的 MySQL。甚至有可能是通过 docker 等虚拟化软件运行的,所以要避免被这种情况给误导了。

后记

为什么要写这篇文章?大家在工作生活中遇到的场景总是纷繁复杂的,即使是简单的问题也往往会有一些坑点,也往往是这种坑点,让人稍不注意就会绕了弯路,比如上边使用 status 命令的时候,同时输出了客户端和服务端版本,不注意的话就容易看错。本文正是希望把一个简单场景梳理清楚,同时把坑点给说清楚,让大家在工作学习中遇到类似场景的时候少走弯路,希望对大家有帮助。

以上就是MySQL获取版本号的N种方法(全网最全以及避坑大全)的详细内容,更多关于MySQL获取版本号的资料请关注脚本之家其它相关文章!

相关文章

  • mysql执行计划介绍

    mysql执行计划介绍

    下面我简单讲讲mysql的执行计划,只列出了一些常见的情况,希望对大家有所帮助
    2013-11-11
  • Mysql数据库绿色版安装教程 解决系统错误1067的方法

    Mysql数据库绿色版安装教程 解决系统错误1067的方法

    这篇文章主要为大家详细介绍了MySql数据库绿色版安装教程,以及系统错误1067的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • SQL去重的3种实用方法总结

    SQL去重的3种实用方法总结

    SQL去重是数据分析工作中比较常见的一个场景,下面这篇文章主要给大家介绍了关于SQL去重的3种实用方法的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • mysql随机抽取一定数量的记录实例讲解

    mysql随机抽取一定数量的记录实例讲解

    在本篇文章里小编给大家整理的是关于mysql随机抽取一定数量的记录实例相关知识点,有需要的朋友们可以学习下。
    2019-09-09
  • Windows下Mysql启动报1067的解决方法

    Windows下Mysql启动报1067的解决方法

    这篇文章主要为大家详细介绍了Windows下Mysql启动报1067的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 浅谈MySQL数据同步到 Redis 缓存的几种方法

    浅谈MySQL数据同步到 Redis 缓存的几种方法

    本文主要介绍了浅谈MySQL数据同步到 Redis 缓存的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 深入理解Mysql事务隔离级别与锁机制问题

    深入理解Mysql事务隔离级别与锁机制问题

    MySQL默认的事务隔离级别是可重复读,用Spring开发程序时,如果不设置隔离级别默认用MySQL设置的隔离级别,如果Spring设置了就用已设置的隔离级别,本文重点给大家介绍Mysql事务隔离级别与锁机制的相关知识,一起看看吧
    2021-09-09
  • 解读SQL中GROUP BY和HAVING子句中使用NULL条件问题

    解读SQL中GROUP BY和HAVING子句中使用NULL条件问题

    在使用SQL进行数据查询时,可能会遇到查询结果为空的情况,这通常与GROUP BY和HAVING子句的使用有关,尤其是在处理包含NULL值的字段时,当使用GROUP BY进行数据分组,并在HAVING子句中直接判断字段是否为NULL时
    2024-10-10
  • MySql安装及登录详解

    MySql安装及登录详解

    这篇文章主要介绍了MySql安装及登录详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • 解决Windows安装mysql时提示MSVCR120.DLL动态库缺失问题

    解决Windows安装mysql时提示MSVCR120.DLL动态库缺失问题

    在Windows Server 2012系统上安装MySQL 5.7时遇到“由于找不到MSVCR120.dll,无法继续执行代码”的错误,原因是系统缺少部分配置文件,解决方法是下载并安装vcredist文件
    2025-02-02

最新评论