注意:这些工具如同mysql客户工具一样,默认的选项会从/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf文件中读取对于节的配置(如有)。(通过这些工具--help可以看到:Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf )
mysqladmin工具
mysqladmin是用于执行管理服务端的客户端(工具)。您可以使用它来检查服务器的配置和当前状态,创建和删除数据库等等。使用该工具的命令格式为:
mysqladmin [options] command [command-arg] [command [command-arg]]
command内容很多,可以通过该命令的联机帮助查看。常用的列如下:
create
db_name
创建一个名为的新数据库 db_name (schema)
。
[zyplanke@tester ~]$ mysqladmin -h 192.168.43.201 -u root -p create abcde
Enter password:
[zyplanke@tester ~]$
- drop
db_name
删除命名数据库db_name(schema)
及其所有表。
- debug
告诉服务器将debug信息写入error日志。连接的用户必须具有 SUPER
特权。
status
显示简短的服务器状态消息。
- extended-status
显示服务器状态变量及其值。
- flush-logs [
log_type
...]
刷新所有日志。
- flush-privileges 或 reload
重新加载授权表(与reload
相同)
- flush-tables
刷新所有表。
- processlist
显示在服务器上连接线程的列表。这就像该SHOW PROCESSLIST
语句的输出。
- shutdown
停止MySQL服务端。
- variables
显示服务器系统变量及其值。
- version
显示来自服务器的版本信息。
mysqldump工具
将MySQL数据库以SQL,文本或XML格式转储到文件中 的客户端工具。该工具进行 逻辑备份,产生可以被重新执行以恢复原数据库对象定义及表数据的SQL语句。它经常被用于从一台MySQL数据库服务器,转移/备份到另一台SQL服务器。该工具也可以输出CSV,其他分隔符的文本或XML格式的文件。
有三种使用 mysqldump命令形式:分别用于dump一个或多个表,一个或多个database(schema)或整个MySQL服务器上的所有database(schema),如下所示:
shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases
其中选项有很多,建议通过--help查看具体使用。
提升:如果使用版本8.0以上的mysqldump去导出低版本的数据库库,会报:mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'test' AND TABLE_NAME = 'TB';': Unknown table 'COLUMN_STATISTICS' in information_schema (1109) 之类的错误。是因为早期版本的MySQL数据库的information_schema数据库中没有名为COLUMN_STATISTICS的数据表。 可以对mysqldump指定选项:“--column-statistics=false” 就可以解决此问题。 |
[zyplanke@tester ~]$ mysqldump -h 192.168.43.201 -u root -p --databases test > backup_of_test.sql
Enter password:
#可以看到backup_of_test.sql文件中有DDL语句,还有DML数据语句。
导入的sql语句,可以直接使用mysql执行。
[zyplanke@tester ~]$ mysqldump -h 192.168.43.201 -u root -p -xml test articles > backup_of_articles.sql
Enter password:
#可以看到backup_of_articles.sql文件是XML,包含表结构和数据。
mysqlpump工具
将MySQL数据库作为SQL转储到文件中 的客户端工具。它的功能和选项与mysqldump类似,它时并行处理数据库以及数据库中的对象,以加快备份过程。可以视为mysqldump的加强版。
mysqlimport工具
使用将文本文件的数据导入到表,文件名(不含前缀)必须等于表名。其大多数选项直接与LOAD DATA语句
对应。是“load data infile”命令的一个包装实现。
本命令的格式为:
shell> mysqlimport [options] db_name textfile1 [textfile2 ...]
为了演示mysqlimport工具的使用,我们先导出一个表的数据(不是SQL语句,而是纯数据的文本文件)
#将select结果集数据放存放到文本文件中(指定了字段分割符,字符串加双引号)
#注意:结果文件是在存放MySQL服务器上,不是运行mysql客户端的机器。文件路径应符合:secure_file_priv的配置。
mysql> select * from test.articles into outfile '/var/lib/mysql-files/articles.data' fields terminated by ',' optionally enclosed by '"' ;
Query OK, 7 rows affected (0.00 sec)
#导出后,清空表中的数据
mysql> delete from test.articles;
Query OK, 7 rows affected (0.00 sec)
导出后的articles.data文件内容(存放在MySQL服务端机器上)为:
1,"MySQL Tutorial","DBMS stands for DataBase ..." 2,"How To Use MySQL Well","After you went through a ..." 3,"Optimizing MySQL","In this tutorial we will show ..." 4,"1001 MySQL Tricks","1. Never run mysqld as root. 2. ..." 5,"MySQL vs. YourSQL","In the following database comparison ..." 6,"MySQL Security","When configured properly, MySQL ..." 7,"中文标题","中文内容:MySQL教程学习等等" |
将存放在MySQL服务器机器上的文件中的数据,导入到表中:
[zyplanke@centosa ~]$ mysqlimport -h 192.168.43.201 -u root -p test /var/lib/mysql-files/articles.data --fields-terminated-by=',' --fields-optionally-enclosed-by='"'
Enter password:
test.articles: Records: 7 Deleted: 0 Skipped: 0 Warnings: 0
然后,再select该表,可以发现已经有数据了。
如果不是从MySQL服务器机器上的文件导入,而是从执行mysql客户端机器上导入(比如将该文件传输至客户端机器上),则需要使用--local选项。如下:
[zyplanke@otherhost ~]$ mysqlimport -h 192.168.43.201 -u root -p test --local /home/zyplanke/articles.data --fields-terminated-by=',' --fields-optionally-enclosed-by='"'
Enter password:
test.articles: Records: 7 Deleted: 0 Skipped: 7 Warnings: 7
#因为主键冲突,所以提示:Skipped: 7 Warnings: 7
mysqlcheck工具
该工具是对表维护,用于检查,修复,分析和优化表 的客户端工具。选项较多,建议直接参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/mysqlcheck.html