create database if not exists bilibili; #创建数据库bilibili use bilibili; #选择bilibili数据库,即可进行下面的代码演示 drop database if exists bilibili; #代码演示结束后删除bilibili数据库。这个小文件全部代码演示完再删 show databases; #查看是否删除完成

 

-- 准备数据

 

 

MySQL管理 系统数据库介绍

 

系统数据库

MySQL数据库安装完成之后,自带了四个数据库分别为information_schema、mysql、performance_schema、sys。下面那行就可查询到 show databases;

 

这四个系统数据库的具体作用如下:

数据库含义
mysql存储MySQL服务器正常运行所需要的各种信息(例如时区、主从、用户、权限)
information_schema提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型以及访问权限
performance_schema为MySQL服务器运行时状态提供了一个底层监控功能,主要用于收集数据库服务器性能参数
sys包含了一系列方便DBA和开发人员利用performance_schema性能数据库进行性能调优和诊断的视图

 

上面的四个系统数据库的其中一部分表及其作用,如下

 

一、mysql

1、db表: 性能指标的系统库

2、slave_xxxx_xxxx表: 主从复制的相关记录,后面学主从复制时会讲

3、slow_log表: 慢日志

4、time_xxxx_xxxx表: 时区操作的相关信息

5、user: 用户表,存储的是当前数据库服务器可以被哪些用户访问,以及这些用户的权限

 

二、information_schema

1、engines表: 当前数据库支持的存储引擎,以及各个存储引擎的特点

2、innodb_xxxx_xxxx表: 当前数据库InnoDB引擎的各项指标

3、innodb_tables表: InnoDB引擎对应的表结构,即有什么表是InnoDB引擎的

4、innodb_tablespace表: InnoDB引擎对应的表空间

5、tablespace表: 表空间

6、schema_privileges表: 数据库的权限

7、routines视图: 当前数据库服务器有的存储过程、存储函数

8、schemata视图: 数据库的说明,数据库的字符集

9、tables视图: 当前数据库服务器有哪些表,以及表是在哪个数据库里面、表的引擎

10、triggers视图: 触发器

11、views视图: 视图

 

三、performance_schema

1、data_locks表: 当我们在查看意向锁和行级锁的时候,就会从data_locks表查看加锁情况

2、metadata_locks表: 当我们在进行元数据锁查看的时候,就会使用metadata_locks表

3、error_log表: 错误日志

4、events_xxxx_xxxx表: 事件信息

 

四、sys 包含一张表和性能相关的视图

 

 

MySQL管理 常用工具1

 

下面所有的内容需要在xshell终端执行,远程的是linux系统

常用工具,下面会介绍好几个

 

一、mysql 该mysql不是指mysql服务,而是指mysql的客户端工具

 

语法 mysql [options] [database]

 

选项作用
-u, --user=name指定用户名
-p, --password[=name]指定密码
-h, --host=name指定服务器ip或域名
-P, --port=port指定连接端口,注意这个P是大写的
-e, --execute=name执行SQL语句并退出

 

注意 -e选项可以在MySQL客户端执行SQL语句,而不用连接到MySQL数据库再执行,对于一些批处理脚本,这种方式尤其方便

 

示例

 

打开linux终端,执行如下

上面那行的优点: 在不登录MySQL的情况下,执行查询语句,注意需要指定远程ip、端口、用户、密码、某个数据库、语句

 

 

二、mysqladmin mysqladmin是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并删除数据库等

 

通过帮助文档查看选项: mysqladmin --help

 

示例 mysqladmin -uroot -p123456 drop 'test01'; mysqladmin -uroot -p123456 version;

 

打开linux终端,执行如下

mysqladmin --help

mysqladmin -h192.168.127.138 -P3306 -u root -p228675 version;#查看当前数据库版本

mysqladmin -h192.168.127.138 -P3306 -u root -p228675 variables;#查看当前数据库的系统变量信息

mysqladmin -h192.168.127.138 -P3306 -u root -p228675 create db02;#创建db02数据库

mysql -h192.168.127.138 -P3306 -u root -p228675 -e 'show databases';#查看当前数据库服务器中有哪些数据库

mysqladmin -h192.168.127.138 -P3306 -u root -p228675 drop db02;#删除db02数据库

 

 

三、mysqlbinlog 由于服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文本的文本格式,就会使用到mysqlbinlog日志管理工具 在MySQL数据库服务器有一份二进制日志binlog,会在后续有讲

 

语法 mysqlbinlog [options] log-files1 log-files2 ...

选项作用
-d, --database=name指定数据库名称,只列出指定的数据库相关操作
-o, --offset=#忽略掉日志文件中的前n行命令
-r, --result-file=name将输出的文本格式日志输出到指定文件
-s, --short-form显示简单格式,省略掉一些信息
--start-datatime=date1 --stop-datetime=data2指定日期间隔内的所有日志
--start position=pos1 --stop-position=pos2指定位置间隔内的所有日志

打开linux终端,执行如下

#执行了上面那行的命令之后,linux的终端会全部乱码,只需要退出,然后重新登录进mysql即可解决

 

 

四、mysqlshow mysqlshow客户端对象查找工具,用来很快地查找存在哪些数据库、数据库中的表、表中的列或者索引

 

语法 mysqlshow [options] [db_name [table_name [col_name]]]

 

选项作用
--count显示数据库及表的统计信息(数据库、表均可以不指定)
-i显示指定数据库或者指定表的状态信息

 

示例。打开linux终端,执行如下

#查询每个数据库的表的数量及表中记录的数量

#查询bilibili库中每个表中的字段数、行数

#查询bilibili库中stu表的详细情况

#查询bilibili库中stu表的id字段的详细情况

 

#把上面的 --count换成-i,表示展示的是状态信息。如果显示的状态信息太多,也就是一行太长了,可以把结果 #复制到Notepad++软件里面,就显得美观啦

 

上面的详细情况包括type类型、collation字符集、null是否可为空、key是什么键、privileges权限、comment注释、...

 

 

五、mysqldum mysqldump客户端工具是用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表,以及插入表的SQL语句 简单说这个mysqldum工具只负责导出,是用来数据备份的,其中-T参数的用法一定要掌握,因为跟下一个要学习的工具有关

 

语法 mysqldump [options] db_name [tables] mysqldump [options] --database/-B db1 [db2 db3 ...] mysqldump [options] --all-databases/-A

 

选项作用
-u, --user=name指定用户名
-p, --password[=name]指定密码
-h, --host=name指定服务器ip或域名
-P, --port=#指定连接端口,注意是大写的P
输出选项作用
--add-drop-database在每个数据库创建语句前加上drop database语句
--add-drop-table在每个表创建语句前加上drop table语句,默认开启; 不开启(--skip-add-drop-table)
-n, --no-create-db不包含数据库的创建语句
-t, --no-create-info不包含数据表的创建语句
-d, --no-data不包含表数据
-T,--tab=name自动生成两个文件:一个.sql文件(创建表结构的语句),另一个.txt文件(数据文件)

 

在文件备份时,要么备份到当前目录,要么备份到指定路径(当带参数的时候才能,不带参数的话是不可以指定路径的)

例如如何才能备份到指定路径 进行文件备份时,如何指定MySQL认为安全的目录路径,即我们指定路径的时候如何指定才不会报错

 

打开linux终端,执行如下

 

上面生成的dumpbeifen.sql和dumpstu.sql文件是在没有参数的情况下备份生成的,里面的数据有注释信息、建表语句、删表语句、插入语句

 

下面演示一下输出参数,看生成的备份文件的数据会有什么变化

 

上面那个在/root目录只出现stu.sql文件,没有stu.txt文件。原因是'当前目录'不安全,txt文件只能指定一个安全的路径才能让你备份。如下

 

 

六、mysqlimport/source mysqlimport是客户端数据导入工具,用来导入'mysqldump加-T参数后导出的文本文件', (1)简单说这个mysqldum工具只负责导入,并且只能导入特定的txt文件 (2)简单说这个source工具只负责导入,并且只能导入特定的sql文件 上一个mysqldump工具使用T参数之后生成的文本文件(自动备份成.sql和.txt文件,对于这两种文件,我们这节课会有mysqldum工具和source工具来导入)

 

语法 mysqlimport [options] db_name textfile1 [textfile2 ...]

如果需要导入sql文件,可以使用source工具,语法如下 source /root/xxxx.sql;

 

示例如下

 

mysqlimport工具-导入txt文件-表数据

 

source工具-导入sql文件-表结构+表数据

 

 

tip: 不要慌,那些命令都是我试过一次的,没有问题。a_113_0和a_114_0在没有说明需要登录进mysql的情况下,都是直接在xshell终端(远程的是linux系统)进行的。 需要登录进mysql的话,我都有把命令写出来的,只需要换成你的ip和密码即可。介绍的数据库管理工具主要就六种,这节课的两种是数据的导出备份+导入恢复,是 一起的,所以这两种放在同一课,也就是同一个a_114_0文件。首先恭喜学到这里的你,以及苦逼写笔记的我,因为目前已经学了mysql的半壁江山啦,后续的知识 将是运维篇的,会更难哦,如果你只是学脚本或者前端,那么就可以退了,目的是把接下来的时间去学你想学的其他东西,但是,如果你是全栈,那么请跟我继续 MySQL运维篇的学习,时间宝贵,下节课的运维篇见