25.mysql中的常用工具
25.1 mysql客户端连接工具
跳转至mysql安装目录下的bin
cd C:\Program Files\MySQL\MySQL Server 5.7\bin
mac下
cd /usr/local/Cellar/mysql@5.7/5.7.22/bin
cd /usr/local/mysql/bin

mysql [选项] [database]; --连接数据库
use [dbname]; --进入要操作的数据库
选项表达方式语法:
“-”+选项单词的缩写字符+选项值 例子:mysql -uroot
“--”+选项完整单词+“=”+选项值 例子:mysql --user=root
多个选项时用逗号分隔,否则只有一个选项有效。
25.1.1 连接选项
指定服务器IP或域名 -h,--host=IP或host_name
指定服务器端口号 -P,--port=3306
指定连接用户名 -u,--user=user_name
指定用户密码 -p,--password=user_password
语法:
mysql -h IP地址 -P 端口号 -u 用户名 -p密码
说明:
-h空格后为本地数据库IP地址(localhost),
-P空格后端口号
-u空格后为用户名,
-p后(不能有空格)为用户密码,
退出登录:exit
例子:
mysql -h 192.168.7.245 -P 25006 -u root -puniGroup-321
mysql -h 192.168.7.246 -P 3306 -u root -puniGroup-321
mysql -h stage-mysql.c5immry9azen.rds.cn-north-1.amazonaws.com.cn -P 3306 -u stageprisvq7zv5l -paeP5high70fd3lgc
特例:
没有选项时,默认'空用户'@'localhost'和空密码连接本机的3306端口,
如果没有空用户时,使用my.cnf文件找[client]组内的用户名和密码,
如果my.cnf文件内没有用户名和密码时,系统使用'root'@'localhost'登录。
测试:
ERROR 1045 (28000):Access denied for user 'ODBC'@'localhost'(using password:NO)
查看当前登录的用户:
select current_user();

25.1.2 客户端字符集选项
服务器字符集配置在my.cnf文件的[mysqld]组内;
客户端字符集配置在my.cnf文件的[mysql]组内。
每次用客户端工具连接数据库时会自动使用my.cnf文件中配置的客户端字符集。
也可以在连接中手动指定本次连接使用的客户端字符集,
例子:
mysql -uroot -proot --default-character-set=gbk
该命令等价于
mysql -uroot -proot
set gbk charset;
查看字符集命令:
show variables like 'char%';
character_set_client 客户端字符集
character_set_connection 连接字符集
character_set_results 结果字符集
default-character-set选项会控制客户端字符集、连接字符集、结果字符集参数
mysql -uroot -proot --default-character-set=utf8
show variables like 'char%';
客户端字符集、连接字符集、结果字符集变更为utf8

25.1.3 执行选项
执行选项:直接在mysql客户端执行SQL语句,而不用等到连接上mysql数据库后再执行,
用于执行批处理脚本。
语法:-e, --execute=sql脚本
例子:
mysql -uroot -proot --execute="use scott;select count(1) from dept;"
语法:执行文件
mysql -u账号 -p密码 -D数据库名 < sql文件绝对路径
mysql -uroot -proot --default-character-set=utf8 scott < C:\工作内容\mysql\mysql_scott_data.sql

mysql>use scott;
mysql>set names utf8;
mysql>source C:\工作内容\mysql\mysql_scott_data.sql;

25.1.4 格式化选项
-E,--vertical 将输出方式按照字段顺序竖着显示
-s, --silent 去掉mysql中的线条框显示
例子:
mysql -uroot -proot -e "select deptno,dname,loc from dept;" -E
mysql -s -uroot -proot
mysql>select deptno,dname,loc from dept;

25.1.5 错误处理选项
-f,--force 强制执行SQL
-v,--verbose 显示更多信息
--show-warnings 显示警告信息
对于执行批量DML操作时,-f选项可以使报错不阻断进程;
-v选项可以显示执行日志,并输出报错信息;
--show-warnings可以输出警告信息。
例子:
mysql -uroot -proot -f -v --show-warnings db_name < a.sql > b.log

25.2 myisampack(MyISAM表压缩工具)
myisampack工具可以对MyISAM表进行压缩,但压缩后的表将变成只读表,不能进行DML操作。
语法:
myisampack [options] tab_name
例子:
myisampack emp

25.3 mysqladmin(Mysql管理工具)
mysqladmin [options] command [command-options] [command [command-options]]...
command包括:
create databasename
drop databasename
debug
extended-status
flush-hosts
flush-logs
flush-status
flush-tables
flush-threads
flush-privileges
kill id
ping
processlist
reload
refresh
shutdown
status
start-slave
stop-slave
variables
version
例子:
mysqladmin -uroot -p shutdown

25.4 mysqlbinlog(日志管理工具)
mysqlbinlog工具可以检查打开二进制binlog日志。
语法:
mysqlbinlog [options] log_files1,log_files2...
options选项包括:
-d,--database=db_name 指定数据库名
-o,--offset=n 指定偏移量,即忽略前n条数据
-r,--result-file=name 将binlog转化为文本输出到指定文件
-s,--short-form 显示为简单格式,即忽略部分信息
--set-charset=char-name 设置输出文本日志的字符集
--start-datetime= 指定开始时间
--stop-datetime= 指定结束时间
--start-position= 指定起始位置
--stop-position= 指定结束位置
例子:
mysqlbinlog binlog.000003
mysqlbinlog binlog.000003 -d test
mysqlbinlog binlog.000003 -o 3
mysqlbinlog binlog.000003 -r resultfile.txt
mysqlbinlog binlog.000003 -o 3 -s
mysqlbinlog binlog.000003 --start-datetime='2018-12-18 09:00:00' --stop-datetime='2018-12-18 10:00:00'
mysqlbinlog binlog.000003 --start-position='1' --stop-position=100

25.5 mysqlcheck(MyISAM表维护工具)
mysqlcheck工具可以检查修复MyISAM表,还可以优化、分析表。
mysqlcheck工具实际上是集成了mysql工具的check、repair、analyze、optimize功能。
语法:
mysqlcheck [options] db_name [tables] 检查一个库或多张表
mysqlcheck [options] --database db_name1 db_name2 ... 检查一个库或多个库
mysqlcheck [options] --all 检查所有库
options包含:
-c,--check 检查表
-r,--repair 修复表
-a,--analyze 分析表
-o,--optimize 优化表
例子:
mysqlcheck -uroot -c test
mysqlcheck -uroot -r test --Innodb引擎的表不支持修复操作
mysqlcheck -uroot -a test
mysqlcheck -uroot -o test

25.6 mysqldump(数据导出工具)
mysqldump工具用来备份数据库,备份内容包含建表语句和Insert语句。
语法:
mysqldump [options] db_name [tables] 备份一个库或多张表
mysqldump [options] --database db_name1 db_name2 ... 备份一个库或多个库
mysqldump [options] --all 备份所有库
mysqldump --help 帮助
25.6.1 连接选项
-h,--host= 指定服务器IP或机器名
-p,--port=3306 指定连接端口,默认3306
-u,--user= 指定用户名
-p,--password= 指定用户密码
例子:
mysqldump -h192.168.1.2 -p3306 -uroot -proot test>test.txt

25.6.2 输出内容选项
--add-drop-database 在create database语句前增加drop database语句
--add-drop-table 在create table语句前增加drop table语句
-n,--no-create-db 不包含create database语句
-t,--no-create-info 不包含create table语句,包含insert语句,即只导出数据
-d,--no-data 不包含insert语句,包含create table语句,即只导出表结构
例子:
mysqldump -h192.168.1.2 -p3306 -uroot -proot -d test emp>a.txt

25.6.3 输出格式选项
--compact 输出简洁格式,不包含注释语句
-c,--complete-insert insert语句包含完整字段名,默认不输出字段名
-T 指定备份目录,并将数据库或表导出为建表语句和数据文本两个文件
--fields-terminated-by= 指定导出数据的域分隔符
--fields-enclosed-by= 指定导出数据的域引用符
--fields-optionally-enclosed-by= 指定导出数据的域可选引用符
--fields-escaped-by= 指定导出数据的域转义字符

例子:
mysqldump -h192.168.1.2 -p3306 -uroot -proot --compact test emp>a.txt
mysqldump -h192.168.1.2 -p3306 -uroot -proot -c test emp>a.txt
mysqldump -h192.168.1.2 -p3306 -uroot -proot test emp -T>a.txt

25.6.4 字符集选项
如果客户端字符集与数据库字符集不一致时,数据库在导出时会进行字符集转换,将数据库字符集转换为客户端字符集。
转换后的数据可能包含?等符号,使得备份文件不能用来恢复。
--default-character-set= 设置导出客户端字符集
通过--default-character-set= 选项将客户端字符集设置的和服务器字符集一致,将不会发生字符集转换,不会产生乱码。
查看默认客户端字符集命令:
mysqld --verbose --help|grep 'default-character-set'|grep -v name default-character-set gbk
例子:
mysqldump -h192.168.1.2 -p3306 -uroot -proot --default-character-set=latin1 test emp >a.txt

25.6.5 其他常用选项
-F,--flush-logs 备份前刷新日志,即更换日志文件,强制让现有redo log入库,减少恢复时通过redo log恢复数据。
-l,--lock-tables 给所有表增加读锁,即整个库禁止DML操作

25.7 mysqlhotcopy(MyISAM表热备份工具)
mysqlhotcopy是Perl脚本,用来备份MyISAM表。
优点:快速、热备份。
缺点:只能备份MyISAM表、需要运行在Linux环境、需要安装Perl。
需要安装Perl的Mysql数据库接口包perl-DBD-MySQL-2.9004-3.1.src.rpm,还需要安装依赖的Mysql开发包MySQL-devel-community-5.0.41.rhe14.i386.rpm。
安装过程如下:
使用root用户登录,
执行rpm -i perl-DBD-MySQL-2.9004-3.1.src.rpm命令,生成.spec文件/usr/src/redhat/SPECS/perl-BDB-MySQL.spec,
执行rpmbuild -bb perl-BDB-MySQL.spec命令,将.spec文件编译为RPM安装文件/usr/src/redhat/RPMS/i386/perl-DBD-MySQL-2.9004-3.1.i386.rpm,
安装生成的.rpm包,rpm ivh perl-DBD-MySQL-2.9004-3.1.i386.rpm,至安装完成。
mysqlhotcopy语法:
# mysqlhotcopy db_name [/path/to/new_directory]
# mysqlhotcopy db_name_1...db_name_n [/path/to/new_directory]
例子:
# mysqlhotcopy -u root mysql ./backup/
mysqlhotcopy过程包括:锁表lock tables,刷新表flush tables,拷贝文件cp/scp,释放锁unlock tables。
mysqlhotcopy常用选项:
--allowold 如果备份路径下有同名备份,则将旧的备份目录rename为“目录名_old”
--addtodest 如果备份路径下有同名目录,则将新的文件加入目录
--noindices 不备份所有的索引文件
--flushlog 表被锁定后刷新日志
--help mysqlhotcopy的帮助

25.8 mysqlimport(数据导入工具)
mysqlimport用来导入mysqldump -T选项导出的数据文本文件。
通过load data infileql语句的命令行接口导入,与load data infile命令一致。
mysqlimport语法:
mysqlimport [options] db_name textfile1 [textfile2]

25.9 mysqlshow(数据库对象查看工具)
mysqlshow工具用来查找数据库、表、列、索引等对象。
mysqlshow语法:
mysqlshow [options] [db_name [table_name [col_name]]]
options选项
--count 显示数据库和表的统计信息
-k,--keys 显示指定表的表结构和表的索引信息
-i,--status 显示指定表的状态信息
例子:
mysqlshow -uroot 查询所有的数据库
mysqlshow -uroot --count 查询所有数据库的名称、表数量、记录量
mysqlshow -uroot test --count 查询test数据库的表名称、字段数、记录量
mysqlshow -uroot test emp --count 查询test数据库emp表的字段信息
mysqlshow -uroot test emp --keys 查询test数据库emp表的表结构和表的索引信息
等同于show full columns from emp 和show index from emp
mysqlshow -uroot test emp --status 查询test数据库emp表的统计信息,包括:行数、平均行长度、数据长度等。
等同于show table status from test like 'emp'

25.10 perror(错误代码查看工具)
perror工具可以解释错误代码的详细含义。
perror语法:
perror [options] [errorcode [errorcode]]
例子:
perror 30 60

25.11 replace(文本替换工具)
replace是Mysql自带的对文件字符串替换的工具。
语法:
replace from to [from to]... --file [file]...
replace from to [from to]... <file
说明:
-- 覆盖方式,指用指定的替换模式替换文件中的内容。
< 非覆盖方式,指在标准输出(屏幕)上输出文件内容被指定替换模式替换后的结果,并不修改文件的内容。
例子:
replace a A b B -- C.txt 将C.txt文件内的a替换为A,b替换为B。
replace a A b B < C.txt C.txt文件内容输出在屏幕上时将a替换为A,b替换为B,而C.txt文件内容保持不变。

25.12 小结

posted on 2019-01-09 19:28  Brad Miller  阅读(314)  评论(0编辑  收藏  举报