如何查看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
目录
相关文章
|
1天前
|
数据库 索引
深入探索数据库索引技术:回表与索引下推解析
【10月更文挑战第15天】在数据库查询优化的领域中,回表和索引下推是两个核心概念,它们对于提高查询性能至关重要。本文将详细解释这两个术语,并探讨它们在数据库操作中的作用和影响。
12 3
|
1天前
|
数据库 索引
深入理解数据库索引技术:回表与索引下推详解
【10月更文挑战第23天】 在数据库查询性能优化中,索引的使用是提升查询效率的关键。然而,并非所有的索引都能直接加速查询。本文将深入探讨两个重要的数据库索引技术:回表和索引下推,解释它们的概念、工作原理以及对性能的影响。
10 3
|
2天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
14 4
|
8天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?
|
12天前
|
SQL Oracle 关系型数据库
安装最新 MySQL 8.0 数据库(教学用)
安装最新 MySQL 8.0 数据库(教学用)
65 4
|
10天前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
26 0
【入门级教程】MySQL:从零开始的数据库之旅
|
7天前
|
存储 监控 关系型数据库
MySQL并发控制与管理:优化数据库性能的关键
【10月更文挑战第17天】MySQL并发控制与管理:优化数据库性能的关键
19 0
|
7天前
|
存储 SQL 关系型数据库
MySQL Workbench支持哪些数据库引擎
【10月更文挑战第17天】MySQL Workbench支持哪些数据库引擎
8 0
|
16天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
70 6
|
14天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
49 3
Mysql(4)—数据库索引