首页 教程 服务器/数据库 MySQL 获取版本号的 N 种方法(全网最全以及避坑大全)

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

相信大家在工作学习中经常有需要查询 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 -Vmysql --version 的方式查看数据库版本。

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

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

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

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

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

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

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

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

后记

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

本文是作者在参考了全网多篇文章之后,亲自进行了多种测试之后亲笔编写的,如果对您有帮助,欢迎点赞、收藏、转发、在看,您的支持将会给作者带来不断更新的动力!感谢您的关注,再见~

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.18k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.24k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.16k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.09k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  491

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  316

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。