如何查看MySQL数据库状态及信息(内存、数据库、编码格式、表、列、索引等)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 如何查看MySQL数据库状态及信息(内存、数据库、编码格式、表、列、索引等)

1、简介

现如今我们操作数据库,都是使用现成的数据库管理工具,比如Navicat、SQLyog等等。这些工具能够提供可视化操作界面,大大的提升了我们的操作效率,但是这样往往让我们忘却了很多数据库语句,比如建表语句、查询数据库信息等。这篇文章我们学习几个非常有用的语句,便于在没有可视化工具的时候给到你帮助。


2、正文

2.1 查看所有数据库

mysql> SHOW DATABASES;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| liziba             |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

5 rows in set (0.00 sec)


2.2 查看正在使用的数据库

此时未选择数据库,显示null

mysql> SELECT DATABASE();

+------------+

| DATABASE() |

+------------+

| NULL       |

+------------+

1 row in set (0.00 sec)

选择数据库liziba

mysql> USE liziba;

Database changed

mysql> SELECT DATABASE();

+------------+

| DATABASE() |

+------------+

| liziba     |

+------------+

1 row in set (0.00 sec)


2.3 查看当前数据库中的表

mysql> SHOW TABLES;

+------------------+

| Tables_in_liziba |

+------------------+

| user             |

+------------------+

1 row in set (0.00 sec)


2.4 查看表的列信息

mysql> SHOW COLUMNS FROM user;

+-------+--------------+------+-----+---------+----------------+

| Field | Type         | Null | Key | Default | Extra          |

+-------+--------------+------+-----+---------+----------------+

| id    | bigint(20)   | NO   | PRI | NULL    | auto_increment |

| name  | varchar(255) | NO   |     | NULL    |                |

| age   | int(11)      | NO   |     | NULL    |                |

| sex   | smallint(6)  | NO   |     | NULL    |                |

+-------+--------------+------+-----+---------+----------------+

4 rows in set (0.00 sec)


2.5 显示授权用户及其权限

查看所有用户的授权信息:

mysql> SHOW GRANTS;


查看具体用户的授权信息:

SHOW GRANTS FOR 'root'@'localhost';



2.6 查看服务器错误或警告信息

查看错误信息,这里我将ERRORS打成ERROES,服务器会产生一条错误日志

mysql> SHOW ERROES;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ERROES' at line 1

mysql>

mysql>

mysql> SHOW ERRORS;

+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------+

| Level | Code | Message                                                                                                                                                  |

+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------+

| Error | 1064 | You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ERROES' at line 1 |

+-------+------+----------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)


mysql> SHOW WARNINGS;

+-------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Level | Code | Message                                                                                                                                                    |

+-------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Error | 1064 | You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WARRINGS' at line 1 |

+-------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 s


2.7 查看建库语句和建表语句

查看liziba数据库的建库语句

mysql> SHOW CREATE DATABASE liziba;

+----------+-----------------------------------------------------------------+

| Database | Create Database                                                 |

+----------+-----------------------------------------------------------------+

| liziba   | CREATE DATABASE `liziba` /*!40100 DEFAULT CHARACTER SET utf8 */ |

+----------+-----------------------------------------------------------------+

1 row in set (0.00 sec)


查看user 表的建表语句,注意提前使用use xxx

mysql> SHOW CREATE TABLE user;

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                                                                                                                                                                                     |

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| user  | CREATE TABLE `user` (

 `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',

 `name` varchar(255) NOT NULL COMMENT '用户名',

 `age` int(11) NOT NULL COMMENT '年龄',

 `sex` smallint(6) NOT NULL COMMENT '性别',

 PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.01 sec)


2.8 查看数据库端口

如果你忘记了端口,可以查看端口信息(前提是你能的登录上来,哈哈哈!)

mysql> SHOW VARIABLES LIKE 'port';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| port          | 3306  |

+---------------+-------+

1 row in set, 1 warning (0.00 sec)


2.9 查看数据库索引大小

首先我们使用数据库information_schema,这个数据库中记录了表的相关信息

mysql> use information_schema;

Database changed

查看tables表列,可以看到记录的表相关信息属性,其中index_length列,记录了表的索引大小单位是B,table_schema列记录了当前表所属的数据库。

我们可以根据table_schema = 'liziba',查看当前数据库下索引的大小

mysql> SELECT CONCAT(ROUND(SUM(INDEX_LENGTH)/(1024*1024), 4), 'mb') AS 'Database Index Size'

   -> FROM tables

   -> WHERE table_schema = 'liziba';

+---------------------+

| Database Index Size |

+---------------------+

| 0.0000mb            |

+---------------------+

1 row in set (0.00 sec)


2.10 查看数据库大小

除了计算索引大小,我们也可以统计数据库的大小,只需要将表数据内存和索引数据内存加起来即可。

mysql> SELECT CONCAT(((ROUND(SUM(data_length), 4) + ROUND(SUM(index_length), 4)) / (1024 * 1024)), ' mb') AS 'Database Size'

   -> FROM tables

   -> WHERE table_schema = 'liziba';

+---------------+

| Database Size |

+---------------+

| 0.01562500 mb |

+---------------+

1 row in set (0.00 sec)



2.11 查看最大连接数

151 是默认的最大连接数

mysql> SHOW VARIABLES LIKE '%max_connections%';

+------------------------+-------+

| Variable_name          | Value |

+------------------------+-------+

| max_connections        | 151   |

| mysqlx_max_connections | 100   |

+------------------------+-------+

2 rows in set, 1 warning (0.00 sec)



2.12 查看当前线程相关信息

注意这里使用STATUS,可以查看线程相关状态,VARIABLES查看的是配置参数。如下查询可以看到连接数、创建了多少线程、正在运行的线程等信息

mysql> SHOW STATUS LIKE 'Threads%';

+-------------------+-------+

| Variable_name     | Value |

+-------------------+-------+

| Threads_cached    | 1     |

| Threads_connected | 3     |

| Threads_created   | 4     |

| Threads_running   | 2     |

+-------------------+-------+

4 rows in set (0.00 sec)



2.13 查看文件存储路径

mysql> SHOW VARIABLES LIKE '%datadir%';

+---------------+------------------------------+

| Variable_name | Value                        |

+---------------+------------------------------+

| datadir       | E:\mysql-8.0.15-winx64\data\ |

+---------------+------------------------------+

1 row in set, 1 warning (0.00 sec)



2.14 查看数据库编码

查看数据库编码很有作用,我们有时候在同步数据的时候会因为编码不同导致数据出现异常,我们可以通过如下方式查看数据库的编码格式。

mysql> SHOW VARIABLES LIKE 'collation%';

+----------------------+--------------------+

| Variable_name        | Value              |

+----------------------+--------------------+

| collation_connection | gbk_chinese_ci     |

| collation_database   | utf8_general_ci    |

| collation_server     | utf8mb4_0900_ai_ci |

+----------------------+--------------------+

3 rows in set, 1 warning (0.00 sec)

2.15 帮助指令

可以使用HELP指令查看指令。

比如HELP SHOW;

mysql> HELP SHOW;

Name: 'SHOW'

Description:

SHOW has many forms that provide information about databases, tables,

columns, or status information about the server. This section describes

those following:


SHOW {BINARY | MASTER} LOGS

SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]

SHOW CHARACTER SET [like_or_where]

SHOW COLLATION [like_or_where]

SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]

SHOW CREATE DATABASE db_name

SHOW CREATE EVENT event_name

SHOW CREATE FUNCTION func_name

SHOW CREATE PROCEDURE proc_name

SHOW CREATE TABLE tbl_name

SHOW CREATE TRIGGER trigger_name

SHOW CREATE VIEW view_name

SHOW DATABASES [like_or_where]

SHOW ENGINE engine_name {STATUS | MUTEX}

SHOW [STORAGE] ENGINES

SHOW ERRORS [LIMIT [offset,] row_count]

SHOW EVENTS

SHOW FUNCTION CODE func_name

SHOW FUNCTION STATUS [like_or_where]

SHOW GRANTS FOR user

SHOW INDEX FROM tbl_name [FROM db_name]

SHOW MASTER STATUS

SHOW OPEN TABLES [FROM db_name] [like_or_where]

SHOW PLUGINS

SHOW PROCEDURE CODE proc_name

SHOW PROCEDURE STATUS [like_or_where]

SHOW PRIVILEGES

SHOW [FULL] PROCESSLIST

SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]

SHOW PROFILES

SHOW RELAYLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]

SHOW SLAVE HOSTS

SHOW SLAVE STATUS [FOR CHANNEL channel]

SHOW [GLOBAL | SESSION] STATUS [like_or_where]

SHOW TABLE STATUS [FROM db_name] [like_or_where]

SHOW [FULL] TABLES [FROM db_name] [like_or_where]

SHOW TRIGGERS [FROM db_name] [like_or_where]

SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]

SHOW WARNINGS [LIMIT [offset,] row_count]

HELP STATUS;

mysql> HELP STATUS;

Many help items for your request exist.

To make a more specific request, please type 'help <item>',

where <item> is one of the following

topics:

  FLUSH

  SHOW

  SHOW ENGINE

  SHOW FUNCTION STATUS

  SHOW MASTER STATUS

  SHOW PROCEDURE STATUS

  SHOW SLAVE STATUS

  SHOW STATUS

  SHOW TABLE STATUS

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
19天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
21天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
35 4
|
28天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
155 1
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
87 2
|
29天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
253 2
|
15天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
125 0
|
29天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
65 0
|
2月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
133 6
|
2月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
65 3
Mysql(4)—数据库索引
|
1月前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
118 4