文章目录
1. MySQL管理
1.1 系统数据库
MySQL数据库安装完成后,自带了一下四个数据库
他们的具体作用如下:
数据库 | 含义 |
---|---|
mysql | 存储MySQL服务器正常运行所需要的各种信息 (时区、主从、用户、权限等) |
information_schema | 提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等 |
performance_schema | 为MySQL服务器运行时状态提供了一个底层监控功能,主要用于收集数据库服务器性能参数 |
sys | 包含了一系列方便 DBA 和开发人员利用 performance_schema性能数据库进行性能调优和诊断的视图 |
1.2 常用工具
1.2.1 mysql
该mysql
不是指MySQL
服务,而是指MySQL
的客户端工具。
语法:
-e
选项可以在MySQL
客户端执行SQL
语句,而不用连接到MySQL
数据库再执行,对于一些批处理脚本,这种方式尤其方便。
mysql -h 192.168.135.130 -P 3306 -u root -p317525 codejiao -e "select * from stu";
1.2.2 mysqladmin
mysqladmin 是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并删除数据库等。
通过帮助文档查看选项: mysqladmin --help
功能 | 功能说明 |
---|---|
create databasename | 创建一个新的数据库 |
debug | 指示服务器将调试信息写入日志 |
drop databasename | 删除数据库及其所有表 |
extended-status | 提供来自服务器的扩展状态消息 |
flush-hosts | 刷新所有缓存的主机 |
flush-logs | 刷新所有日志 |
flush-staus | 清除状态变量 |
flush-tables | 刷新所有表 |
flush-threads | 刷新线程缓存 |
flush-privileges | 重新加载授权表(与重新加载相同) |
kill id,id,… | 杀死mysql线程 |
password [new-password] | 将旧密码更改为新密码 |
ping | 检查mysql是否还活着 |
processlist | 显示服务器中的活动线程列表 |
reload | 重新加载授权表 |
refresh | 刷新所有表并关闭和打开日志文件 |
shutdown | 关闭服务器 |
status | 提供来自服务器的简短状态消息 |
start-replica | 开始复制 |
start-slave | 已弃用:改用 start-replica |
stop-replica | 停止复制 |
stop-slave | 已弃用:改用停止副本 |
variables | 打印可用变量 |
version | 从服务器获取MySQL版本信息 |
语法:
示例:
查看当前数据库的版本
mysqladmin -uroot -p317525 version;
# 创建db01数据库
mysqladmin -uroot -p317525 create db01;
# 删除db01数据库
mysqladmin -uroot -p317525 drop db01;
1.2.3 mysqlbinlog
由于服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文本的文本格式,就会使用到mysqlbinlog 日志管理工具。
语法:
示例:
# 查看 binlog.000008 这个二进制文件中的数据信息
mysqlbinlog /var/lib/mysql/binlog.000008;
上述查看到的二进制日志文件数据信息量太多了,不方便查询。 我们可以加上一个参数 -s 来显示简单格式。
# 查看 binlog.000008 这个二进制文件中的数据信息
mysqlbinlog -s /var/lib/mysql/binlog.000008;
1.2.4 mysqlshow
mysqlshow 客户端对象查找工具,用来很快地查找存在哪些数据库、数据库中的表、表中的列或者索引。
语法:
示例:
查询每个数据库的表的数量及表中记录的数量
mysqlshow -uroot -p317525 --count
查看数据库 codejiao 的统计信息
mysqlshow -uroot -p317525 codejiao --count
查看数据库 codejiao 中的 stu 表的信息
mysqlshow -uroot -p317525 codejiao stu --count
查看数据库 codejiao 中的 stu 表的 id 字段的信息
mysqlshow -uroot -p317525 codejiao stu id --count
1.2.5 mysqldump
mysqldump 客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表,及插入表的SQL语句。
语法:
示例:
备份 codejiao 数据库
# 创建backup目录
mkdir -p /root/backup;
# 备份
mysqldump -uroot -p317525 codejiao > /root/backup/my_codejiao.sql;
可以直接打开 my_codejiao.sql ,来查看备份出来的数据到底什么样。
my_codejiao.sql
备份出来的数据包含:
- 删除表的语句
- 创建表的语句
- 数据插入语句
如果我们在数据备份时,不需要创建表,或者不需要备份数据,只需要备份表结构,都可以通过对应的参数来实现。
备份db01数据库中的表数据,不备份表结构(-t)
mysqldump -uroot -p317525 -t codejiao > /root/backup/my_codejiao2.sql;
my_codejiao2.sql
备份db01数据库中的表数据,不备份数据(-d)
mysqldump -uroot -p317525 -d codejiao > /root/backup/my_codejiao3.sql;
my_codejiao3.sql
将db01数据库的表的表结构与数据分开备份(-T)
# 分开 codejiao数据库的stu表
mysqldump -uroot -p317525 -T /root codejiao stu;
执行上述指令,会出错,数据不能完成备份,原因是因为我们所指定的数据存放目录/root,MySQL认为是不安全的,需要存储在MySQL信任的目录下。那么,哪个目录才是MySQL信任的目录呢,可以查看一下系统变量 secure_file_priv 。执行结果如下:
show variables like 'secure_file_priv';
/var/lib/mysql-files/
目录就是安全的存储数据的目录。
mysqldump -uroot -p317525 -T /var/lib/mysql-files/ codejiao stu;
上述的两个文件 score.sql 中记录的就是表结构文件,而 score.txt 就是表数据文件,但是需要注意表数据文件,并不是记录一条条的insert语句,而是按照一定的格式记录表结构中的数据。如下:
stu.sql
stu.txt
1.2.6 mysqlimport
mysqlimport 是客户端数据导入工具,用来导入mysqldump 加 -T 参数后导出的文本文件(xxx.txt)。
语法:
mysqlimport [options] db_name textfile1 [textfile2...]
示例:
我们先把 stu 表的数据清空:
truncate table stu;
然后往 stu 表导入文本文件数据
mysqlimport -uroot -p317525 codejiao /var/lib/mysql-files/stu.txt
stu.txt
1.2.7 source
如果需要导入 sql 文件,可以使用 MySQL 中的 source 指令
语法:
source xxx.sql
示例:
我们先清空 codejiao 数据库:
drop database codejiao;
create database codejiao;
然后给 codejiao 数据库导入我们备份的文件