解析MYSQL显示表信息的方法,MySQL中的常用工具实

日期:2019-10-17编辑作者:数据大全

一.概述

    mysqlshow客户端查找工具,能很快地查找存在哪些数据库,数据库中的表,表中的列或索引,和mysql客户端工具很类似,不过有些特性是mysql客户端工具所不具备的。
  mysqlshow的使用方法如下:
澳门金莎娱乐手机版 1

    如果不加任何选项,默认情况下,会显示所有数据库,下面将显示当前mysql中所有数据库。
澳门金莎娱乐手机版 2

mysql(客户端连接工具)

mysql[options][database]

这里的 options 表示 mysql 的可用选项,可以一次写一个或者多个,也可以不写;database 表示连接的数据库,一次只能写一个,如果不写,连接成功后需要用 use database 来进入要操作的数据库

有两种表达方式:

  • -加选项单词的缩写字符,加选项值

      mysql --uroot
    
  • --加选项的完整单词加=加选项的实际值

      mysql --user=root
    

要了解更多的选项,可以使用 mysql --help 命令查看

前言

在用mysql时(show tables),有时候需要查看表和字段的相关信息(表与某字段是否存在等.)~~而PHP提供了这样的相关函数,如:mysql_list_dbs(),mysql_list_fields(),但mysql_list_fields() 函数等已过时,所以要用show...这个SQL指令来查寻。

二.下面是mysqlshow的一些常用选项

    2.1 --count 显示数据库和表的统计信息

      如果不指定数据库,则显示每个数据库的名称,表数据,库总记录行数。下面是查看所有数据库。
澳门金莎娱乐手机版 3

      如果指定数据库,则显示指定数据库的每个表名,表字段数量,表记录总行数。 下面是查看mysql库。
澳门金莎娱乐手机版 4

      如果指定数据库和表,则显示字段信息, 下面是查看mysql库的user表。
澳门金莎娱乐手机版 5

    2.2 -k 显示指定表中的所有索引 
     该选项显示两部份,一是指定表的表结构,二是指定表的当前索引信息.下面是显示mysql库下的user表。
澳门金莎娱乐手机版 6

--下面的sql语句显示与上面功能一样,查询mysql库下的user表,一是字段信息,二是索引信息
    SHOW FULL COLUMNS FROM mysql.`user`
    SHOW INDEX  FROM mysql.`user`

   2.3 -i 显示表的一些状态信息

      该选项还是很有用的,下面是显示mysql库下的user表状态信息。
澳门金莎娱乐手机版 7

澳门金莎娱乐手机版 8

   更多mysqlshow信息

连接选项

-u 或者 --user=name 指定用户名

-p 或者 --password[=name]指定密码

-h 或者 --host=name 指定服务器 IP 或者域名

-P 或者 --port=# 指定连接端口

本文主要给大家介绍了关于MySQL常用工具的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

SHOW 指令(‘[..]'里的可选)
#显示mysql中所有数据库的名称
show databases;
#显示mysql中的相关表
show tables [ from db_name]
#显示数据表表状态信息
show table status
#查看存储过程状态
show procedure status
#列出表字段完整属性
show full fields from tbl_name
#显示表中列名称
show columns from table_name [ from database_name ] ; 或show columns from database_name.table_name;
#显示一个用户的权限,显示结果类似于grant 命令
show grants for user_name;
#列出表索引
show index from tbl_name
#显示表的索引
show index from table_name
#显示一些系统特定资源的信息,例如,正在运行的线程数量
show status [from   db_name]
#显示系统变量的名称和值
show [ global] variables
#显示系统中正在运行的所有进程,也就是当前正在执行的查询大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码
show processlist
#显示当前使用或者指定的database中的每个表的信息信息包括表类型和表的最新更新时间
show table status
#显示服务器所支持的不同权限
show privileges
#显示create database 语句是否能够创建指定的数据库
show create database database_name
#显示create database 语句是否能够创建指定的数据库
show create table table_name
#显示安装以后可用的存储引擎和默认引擎
show engies
#显示innoDB存储引擎的状态
show innodb status
#显示BDB存储引擎的日志
show logs   -----这个已经被遗弃了
#显示最后一个执行的语句所产生的错误、警告和通知
show warnings
#只显示最后一个执行语句所产生的错误
show errors
#显示安装后的可用存储引擎和默认引擎
show [storage] engines;
============================================================
mysqlshow,该指令只参显示数据库、表、列的信息
例如:mysqlshow   -uroot   -pXXXX   mysql   #显示mysql数据库的信息
例如:mysqlshow   -uroot   -pXXXX   mysql   user   #显示mysql数据库中user表的信息
例如:mysqlshow   -uroot   -pXXXX   mysql   user   user   #显示mysql数据库中user表中的user列的信息

客户端字符集选项

--default-character-set=character-name

一、mysql (客户端连接工具)

您可能感兴趣的文章:

  • PHP获取mysql数据表的字段名称和详细信息的方法
  • MySQL中show命令方法得到表列及整个库的详细信息(精品珍藏)
  • php 获取mysql数据库信息代码
  • php+mysqli实现将数据库中一张表信息打印到表格里的方法
  • PHP获取php,mysql,apche的版本信息示例代码
  • php mysql获取表字段名称和字段信息的三种方法
  • php获取mysql字段名称和其它信息的例子
  • MySQL笔记之系统信息函数详解
  • mysql 获取当天发布的信息的语句
  • Sql查询MySql数据库中的表名和描述表中字段(列)信息

执行选项

-e 或者 --execute=name 执行 SQL 语句并退出

此选项可以直接在 MySQL 客户端执行 SQL 语句,而不用连接到 MySQL 数据库后再执行

可以连续执行多个 SQL 语句,用分号隔开

mysql -uroot -p -e"select * from dbtest.xixi;select * from dbtest.haha"

使用最频繁的连接数据库的客户端工具,使用语法如下:

格式化选项

-E 或者 --vertical 将输出方式按照字段顺序竖着显示,类似于 SQL 语句后加 G,可以将输出内容比较多的行更清晰完整的显示,经常和 -e 选项一起使用

-s 或者 --silent 去掉 mysql 中的线条框显示,字段之间用 tab 进行分割,每条记录显示一行

mysql [options] [database]

错误处理选项

-f 或者 --force 强制执行 SQL

-v 或者 --verbose 显示更多信息

--show-warnings 显示警告信息

这里的 options 表示 mysql 的可用选项,可以一次写一个或者多个,甚至可以不写;database 表示连接的数据库,一次只能写一个或者不写,如果不写,连接成功后需要用 “use database”命令来进入要操作的数据库。

myisampack(MyISAM 表压缩工具)

myisampack tname

压缩后变成只读表

1. 连接选项

mysqladmin(MySQL 管理工具)

mysqladmin 是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前的状态,创建并删除数据库等。它的功能和 mysql 客户端非常类似,主要区别在于它更侧重于一些管理方面的功能,比如关闭数据库

mysqladmin [options] command [command-options] [command [command-options]]...

选项的表达方式有多种,例如:

mysqlbinlog(日志管理工具)

由于服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文件的文本格式,就会用到 mysqlbinlog 日志管理工具

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

option 常用的选项如下:

-d 或者 --database=name 指定数据库名称,只列出指定的数据库相关操作

-o 或者 --offset=# 忽略掉日志中的前 n 行命令

-r 或者 -result-file=name 将输出的文本格式日志输出到指定文件

-s 或者 -short-form 显示简单格式,省略掉一些信息

--set-charset=char-name 在输出为文本格式时,在文件的第一行加上 set names char-name

--start-datetime=name --stop-datetime=name 指定日期间隔内的所有日志

--start-position=# --stop-position=# 指定位置间隔内的所有日志

# 这三种方式都是可以的
shell> mysql -u root
shell> mysql -uroot
shell> mysql -user=root

mysqlcheck(MyISM 表维护工具)

mysqlcheck 客户端工具可以检查和修复 MyISAM 表,还可以优化和分析表,实际上,它集成了 mysql 工具中的 check,repair,analyze,optimize 的功能

mysqlcheck [options] dbname [table]
mysqlcheck [options] --database db1[db2 db3...]
mysqlcheck [options] --all-database

option 中有以下常用选项:

-c 或者 --check 检查表(默认)

-r 或者 --repair 修复表

-a 或者 --analyze 分析表

-o 或者 --optimize 优化表

  1. 连接选项

mysqldump(数据导出工具)

mysqldump 客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表或装载表的 SQL 语句

mysqldump [options] dbname [tables]
mysqldump [options] --database db1[db2 db3]...
mysqldump [options] --all-database

mysqldump --help 查看更详细功能

  • -u, --user=name    指定用户名
  • -p, --password[=name]    指定密码 
  • -h, --host=name    指定服务器 IP 或者域名 
  • -P, --port=#    指定连接端口

输出内容选项

--add-drop-database 每个数据库创建语句前加上 drop database 语句

--add-drop-table 在每个表创建语句前加上 drop table 语句

以上这两个选项可以在导入数据库时不用先手工删除旧的数据库,而是会自动删除,提高导入效率,但是导入前一定要做好备份并且确认旧数据库的确已经可以删除,否则误操作将会造成数据的损失。默认情况下,这两个参数都是自动加上的

-n 或者 --no-create-db 不包含数据库的创建语句

-t 或者 --no-create-info 不包含数据表的创建语句

-d 或者 --no-data 不包含数据

一般在在本地环境,为了方便,可以在 配置文件 my.cnf 中配置当前用户和密码,配置好后,直接执行 mysql 就可以连接到数据库:

输出格式选项

--compact 使输出结果简洁,不包括默认选项中的各种注释

-c 或者 --complete-insert 使得输出文件中的 insert 语句包括字段名称,默认不包括

-T 将指定数据表中的数据被分为单纯的数据文本和建表 SQL 两个文件

[client]
user=root
password=000000
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4

字符集选项

--default-character-set=name 可以设置导出的客户端字符集

这个选项在导出数据库的时候非常重要,如果客户端字符集和数据库字符集不一致,数据在导出的时候就需要进行字符集转换,将数据库字符集转换为客户端字符集,经过转换后的数据很可能成为乱码或者特殊字符,使得备份文件无法恢复

配置好后,直接执行 mysql 即可:

其他常用选项

-F 或者 --flush-logs:备份前刷新日志。加上此选项后,备份前将关闭旧日志,生成新日志。使得进行恢复的时候直接从新日志开始进行重做,大大方便了恢复过程

-l 或者 --lock-tables:给所有表加读锁。可以在备份期间使用,使得数据无法被更新,从而使备份的数据保持一致性,可以配合 -F 选项一起使用

zj@bogon:~$ mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 19
...

mysqlimport(数据导入工具)

用来导入 mysqldump 加 -T 选项后导出的文本文件。它实际上是客户端提供了 load data infile 语句的一个命令行接口

mysqlimport [options] dbname textfile1 [textfile2]...

登录远程服务器,需要指定地址和端口:

mysqlshow(数据库对象查看工具)

用来很快的查找存在哪些数据库,数据库中的表,表中的列或索引

mysqlshow [option] [dbname [tablename [colname]]]

如果不加任何选项,默认情况下会显示所有数据库

常用选项:

--count:显示数据库和表的统计信息。如果不指定数据库,则显示每个数据库的名称,表数量,记录数量;如果指定数据库,则显示指定数据库的每个表名,字段数量,记录数量;如果指定具体数据库中的具体表,则显示表的字段信息

-k 或者 --keys:显示指定表中的所有索引

-i 或者 --status:显示表的一些状态信息

shell> mysql -h 192.168.10.10 -P 3306 -uroot -p

perror(错误代码查看工具)

perror [options] [errorcode [errorcode...]]

注意: 在正式的生产环境中,为了安全起见,一般需要创建应用账号并赋予适当权限,而不会用 root 直接操作数据库;默认端口(3306)一般不要使用,可以改为任意操作系统未占用的端口。

replace(文本替换工具)

replace from to [from to]... -- file [file]...
replace from to [from to]... < file

-- 表示字符串结束,文件的开始,可以跟多个源文件,替换完毕后会覆盖原文件

< 表示后面的文件作为输入,替换后的文本显示在标准输出上,不会覆盖原文件

2. 客户端字符集选项

--default-character-set=charset-name

作为服务器的字符集选项,这个选项也可以配置在 my.cnf 的 [mysqld] 组中。同样,作为客户端字符集选项,也可以配置在 my.cnf 的 [mysql]组中,这样每次用 mysql 工具连接数据库的时候就会自动使用此客户端字符集。当然,也可以在 mysql 的命令行中手工指定客户端字符集:

shell> mysql -u user -default-character-set=charset

相当于在 mysql 客户端连接成功后执行:

set names charset;

3. 执行选项

-e, --execute=name // 执行 sql 语句并退出

此选项可以直接在 MySQL 客户端执行 sql 语句,对于一些批处理脚本,这是方式尤其方便:

zj@bogon:~$ mysql mysql -e "select user,host from user"
+-----------+-----------+
| user | host |
+-----------+-----------+
| root | 127.0.0.1 |
| mysql.sys | localhost |
| root | localhost |
+-----------+-----------+

可以按这种方式连续执行多个 sql 语句,用英文分号(;)隔开。

4. 格式化选项

  • -E, --vertical    将输出方式按照字段顺序竖着显示 
  • -s, --silent    去掉 mysql 中的线条框显示

“-E” 选项类似于 mysql 里面执行 sql 语句后加 “G”, 经常和 -e 一起使用。

二、myisampack (myisam 表压缩工具)

myisampack 是一个表压缩工具,可以使用很高的压缩率来对 myisam 存储引擎的表进行压缩,使得压缩后的表占用比压缩前小得多的空间。但是压缩后的表将成为一个只读表,不能进行 DML 操作。

三、mysqladmin(MySQL 管理工具)

mysqladmin 是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并删除数据库等。它的功能与 mysql 客户端非常类似,主要区别在于它更侧重于一些管理方面的功能。

使用语法:

shell> mysqladmin [options] command [command-options]...

可以执行的命令如下:

 create databasename Create a new database 新建数据库
 debug  Instruct server to write debug information to log 把 debug 日志记录到日志文件中
 drop databasename Delete a database and all its tables 删除数据库
 extended-status Gives an extended status message from the server 查看 MySQL 服务器的状态信息
 flush-hosts Flush all cached hosts
 flush-logs Flush all logs
 flush-status Clear status variables
 flush-tables Flush all tables
 flush-threads Flush the thread cache
 flush-privileges Reload grant tables (same as reload)
 kill id,id,... Kill mysql threads
 password [new-password] Change old password to new-password in current format
 ping  Check if mysqld is alive
 processlist Show list of active threads in server
 reload  Reload grant tables
 refresh  Flush all tables and close and open logfiles
 shutdown  Take server down
 status  Gives a short status message from the server
 start-slave Start slave
 stop-slave Stop slave
 variables  Prints variables available
 version  Get version info from server

举例:

zj@bogon:/usr/local/mysql/bin$ mysqladmin -uroot -p shutdown
Enter password: 

四、日志管理工具

由于服务器生成的二进制文件以二进制格式保存,所以如果想要检查这些文件的文本格式,就会用到 mysqlbinlog 日志管理工具。

用法如下:

shell> mysqlbinlog [option] log-file1 log-file2...

option 有很多选项:

  • -d,--database=name: 指定数据库名称,只列出指定的数据库相关操作。
  • -o, --offset=#: 忽略日志中的前 n 行命令。
  • -r, --result-file=name: 将输出的文本格式日志输出到指定文件
  • -s, --short-form: 显示简单格式,省略掉一些信息。
  • --start-datetime=name --stop-datetime=name: 指定日期间隔内的所有日志。
  • --start-position=# --stop-position=#: 指定位置间隔内的所有日志
  1. 示例准备:创建新日志,新建库 t1 和 t2, 以及分别新建表 test1 和 test2
MySQL [(none)]> reset master;
Query OK, 0 rows affected (0.01 sec)

MySQL [(none)]> create table t1(id int,name varchar);
ERROR 1046 (3D000): No database selected
MySQL [(none)]> reset master;
Query OK, 0 rows affected (0.01 sec)

MySQL [(none)]> create database t1;
Query OK, 1 row affected (0.04 sec)

MySQL [(none)]> create database t2;
Query OK, 1 row affected (0.02 sec)

MySQL [(none)]> use t1;
Database changed
MySQL [t1]> create table test1(id int, name varchar(30));
Query OK, 0 rows affected (0.11 sec)

MySQL [t1]> insert into test1 value (1,'zj');
Query OK, 1 row affected (0.14 sec)

MySQL [t1]> insert into test1 value (2,'zj2');
Query OK, 1 row affected (0.02 sec)

MySQL [t1]> use t2;
Database changed
MySQL [t2]> create table test2(id int,name varchar(30));
Query OK, 0 rows affected (0.02 sec)

MySQL [t2]> insert into test2 select * from t1.test1;
Query OK, 2 rows affected (0.03 sec)
Records: 2 Duplicates: 0 Warnings: 0

MySQL [t2]> select * from t1.test1;
+------+------+
| id | name |
+------+------+
| 1 | zj |
| 2 | zj2 |
+------+------+
2 rows in set (0.02 sec)

MySQL [t2]> select * from test2;
+------+------+
| id | name |
+------+------+
| 1 | zj |
| 2 | zj2 |
+------+------+
2 rows in set (0.00 sec)
  1. 不加任何参数,显示所有日志

注意:必须拥有访问目标文件的权限

zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001
[sudo] password for zj: 
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#170920 20:44:49 server id 1 end_log_pos 123 CRC32 0x42fd5a4d Start: binlog v 4, server v 5.7.18-log created 170920 20:44:49 at startup

......

create table test2(id int,name varchar(30))
/*!*/;
# at 1366
#170920 20:50:29 server id 1 end_log_pos 1431 CRC32 0x18a95938 Anonymous_GTID last_committed=6 sequence_number=7
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 1431
#170920 20:50:29 server id 1 end_log_pos 1509 CRC32 0x2fa8bd6c Query thread_id=4 exec_time=0 error_code=0
SET TIMESTAMP=1505911829/*!*/;
BEGIN
/*!*/;
# at 1509
#170920 20:50:29 server id 1 end_log_pos 1622 CRC32 0x77ce6f3b Query thread_id=4 exec_time=0 error_code=0
SET TIMESTAMP=1505911829/*!*/;
insert into test2 select * from t1.test1
/*!*/;
# at 1622
#170920 20:50:29 server id 1 end_log_pos 1653 CRC32 0x41b7a45b Xid = 29
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  1. 加 -d 选项,将只显示 t2 数据库的操作日志
zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -d t2
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

......

SET TIMESTAMP=1505911829/*!*/;
insert into test2 select * from t1.test1
/*!*/;
# at 1622
#170920 20:50:29 server id 1 end_log_pos 1653 CRC32 0x41b7a45b Xid = 29
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  1. 加 -o 选项, 忽略掉前 20 行命令
zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -o 20
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#170920 20:44:49 server id 1 end_log_pos 123 CRC32 0x42fd5a4d Start: binlog v 4, server v 5.7.18-log created 170920 20:44:49 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
wWLCWQ8BAAAAdwAAAHsAAAABAAQANS43LjE4LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADBYsJZEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AU1a/UI=
'/*!*/;
# at 1509
#170920 20:50:29 server id 1 end_log_pos 1622 CRC32 0x77ce6f3b Query thread_id=4 exec_time=0 error_code=0
use `t2`/*!*/;
SET TIMESTAMP=1505911829/*!*/;
SET @@session.pseudo_thread_id=4/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1436549152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!C utf8mb4 *//*!*/;
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
insert into test2 select * from t1.test1
/*!*/;
# at 1622
#170920 20:50:29 server id 1 end_log_pos 1653 CRC32 0x41b7a45b Xid = 29
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  1. 加 -r 选项,将上面的结果输出到文件 resultfile 中。
zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -o 20 -r ./logfile
zj@bogon:/usr/local/mysql/bin$ sudo more ./logfile
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
...
  1. 结果显示的内容较多,显得比较乱,加 -s 选项将上面的内容进行简单显示
zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -o 20 -s
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
use `t2`/*!*/;
SET TIMESTAMP=1505911829/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1436549152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!C utf8mb4 *//*!*/;
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
insert into test2 select * from t1.test1
/*!*/;
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  1. 加 “--start-datetime --stop-datetime” 选项显示 5:00:00 ~ 5:01:00 之间的日志
zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 --start-datetime="2017/09/30 05:00:00" --stop-datetime='2017/09/30 05:01:00'

开始日期和结束日期可以只写一个。如果只写开始日期,表示范围开始日期到日志结束;如果只写结束日期,表示日志开始到指定的结束日期。

  1. --start-position=# 和 --stop-position=#, 与日期范围类似,不过可以更精确的表示范围。
sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 --start-position=4 --stop-datetime=100

五、mysqlcheck (myisam 表维护工具)

mysqlcheck 工具可以检查和修复 myisam 表,还可以优化和分析表。实际上,它集成了 mysql 工具中的 check、repair、analyze、optimize

有 3 种方式可以来调用 mysqlcheck:

shell> mysqlcheck [options] db_name [tables]
shell> mysqlcheck [options] --database DB1 [DB2 DB3...]
shell> mysqlcheck [options] --all-databse

option 中有以下常用选项:

  • -c, --check (检查表)
  • -r, --repair (修复表)
  • -a, --analyze (分析表)
  • -o, --optimize (优化表)

其中,默认选项是 -c (检查表)

示例:

  1. 检查表
zj@bogon:/data/mysql$ mysqlcheck -c t2
t2.test1      OK
t2.test2      OK
  1. 修复表
zj@bogon:/data/mysql$ mysqlcheck -r t2
t2.test1
note : The storage engine for the table doesn't support repair
t2.test2      OK

test1 表的存储引擎为 innodb,不支持 repair。

  1. 分析表
zj@bogon:/data/mysql$ mysqlcheck -a t2
t2.test1      OK
t2.test2      OK
  1. 优化表
zj@bogon:/data/mysql$ mysqlcheck -o t2
t2.test1
note : Table does not support optimize, doing recreate + analyze instead
status : OK
t2.test2  

六、mysqldump (数据导出工具)

mysqldump 客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表或装载表的 sql 语句。

有三中方式来调用 mysqldump:

mysqldump [OPTIONS] database [tables] // 备份单个数据库或者库中部分数据表
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] //备份指定的一个或者多个数据库
mysqldump [OPTIONS] --all-databases [OPTIONS] // 备份所有数据库
  1. 连接选项
  • -u, --user=name             // 指定用户名
  • -p, --password[=name]       // 指定密码 
  • -h, --host=name             // 指定服务器 IP 或者域名
  • -p, --port=#                // 指定连接端口

示例:

shell> mysqldump -h192.18.10.10 -p3306 -uroot -p test > test.sql
  1. 输出内容选项
  • --add-drop-database     每个数据库创建语句前加上 drop database 语句
  • --add-drop-table        在每个表创建语句前加上 drop table 语句

在默认情况下,这两个参数都自动加上。

  • -n, --no-create-db      不包含数据库的创建语句 
  • -t, --no-create-info    不包含数据表的创建语句
  • -d, --no-data           不包含数据
  1. 输出格式选项

--compact 选项使得输出结果简洁,不包括默认选项中的各种注释。

root@bogon:/usr/local/mysql/bin# ./mysqldump --compact t2 emp > emp.sql
root@bogon:/usr/local/mysql/bin# more emp.sql
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp` (
 `id` int(11) NOT NULL DEFAULT '0',
 `name` varchar(10) DEFAULT NULL,
 `context` text,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `emp` VALUES (1,'a','a'),(2,'b','b');

-c 或者 --complete-insert 选项使得输出文件中的 insert 语句包括字段名称,默认是不包括字段名称的。

root@bogon:/usr/local/mysql/bin# ./mysqldump -c --compact t2 emp > emp.sql
root@bogon:/usr/local/mysql/bin# more emp.sql
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp` (
 `id` int(11) NOT NULL DEFAULT '0',
 `name` varchar(10) DEFAULT NULL,
 `context` text,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `emp` (`id`, `name`, `context`) VALUES (1,'a','a'),(2,'b','b');

-T 选项将指定数据表中的数据备份为单纯的数据文本和建表 sql 两个文件,经常和下面几个选项一起配合使用,将数据导出为指定格式显示。

  • -T, --tab=name                  备份数据和建表语句
  • --fileds-terminated-by=name     域分隔符
  • --fileds-enclosed-by=name       域引用符
  • --fileds-optionally-enclosed-by=name    域可选引用符
  • --fileds-escaped-by=name        转义字符

示例:将 t2 数据库中的表 emp 导出为单纯的数据文本和建表 sql 两个文件,并存放在当前路径下的 bak 目录下。

1.创建备份目录

root@bogon:/usr/local/mysql/bin# mkdir bak
  1. 将 t2 数据库下的表 emp 备份到 bak 目录下
root@bogon:/usr/local/mysql/bin# ./mysqldump t2 emp -T ./bak
  1. 查看 bak 目录,发现两个文件
root@bogon:/usr/local/mysql/bin# ls ./bak
emp.sql emp.txt
  1. 查看两个文件的内容, .sql 结尾的是建表及插入数据的sql,.txt 结尾的是表数据
root@bogon:/usr/local/mysql/bin# more ./bak/emp.sql
-- MySQL dump 10.13 Distrib 5.7.18, for Linux (x86_64)
--
-- Host: localhost Database: t2
-- ------------------------------------------------------
-- Server version 5.7.18-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `emp`
--

DROP TABLE IF EXISTS `emp`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp` (
 `id` int(11) NOT NULL DEFAULT '0',
 `name` varchar(10) DEFAULT NULL,
 `context` text,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2017-09-21 12:07:38


root@bogon:/usr/local/mysql/bin# more ./bak/emp.txt 
1 a a
2 b b
  1. 字符集选项

mysqldump 导出的数据的字符集使用的是 mysqld 启动时的默认字符集,如果表的字符集用的不是默认字符集,导出的数据就有可能出现乱码。所以在导出时,应该先确定表的字符集,在导出时指定该字符集即可。

shell> mysqldump -uroot --compact --default-character-set=utf8 t2 emp > emp.sql
  1. 其他常用选项

-F --flush-logs (备份前刷新日志)

加上此选项后,备份前将关闭就日志,生成新日志。使得进行恢复的时候直接从新日志开始进行重做,大大方便了恢复过程。

-l --lock-tables (给所有表加读锁)

可以在备份期间使用,使得数据无法被更新,从而使备份的数据保持一致性,可以配合 -F 选项一起使用。

七、mysqlimport (数据导入工具)

mysqlimport 是客户端数据导入工具,用来导入 mysqldump 加 -T 选项后导出的文本文件。

基本用法:

shell> mysqlimport [options] db_name textfile1

八、mysqlshow (数据库对象查看工具)

mysqlshow 客户端对象查找工具,用来很快的查找存在哪些数据库,数据库中的表、表中的列或索引,和 mysql 客户端工具很类似,不过有些特性是 mysql 客户端工具所不具备的。

使用方法:

shell> mysqlshow [option] [db_name [tbl_name [col_name]]]

如果不加任何选项,默认情况下会显示所有数据库。

常用选项:

  1. --count (显示数据库和表的统计信息)

如果不指定数据库,则显示每个数据库的名称、表数量、记录数量;

如果指定数据库,则显示指定数据库的每个表名、字段数量,记录数量;

如果指定具体数据库中的具体表,则显示表的字段信息。

  1. -k 或者 --keys (显示指定表中的所有索引)

此选项显示了两部分内容,一部分是指定表的表结构,另一部分中是指定表的当前索引信息

  1. -i 或者 --status (显示表的一些状态信息)

九、perror (错误代码查看工具)

在 MySQL 的使用过程中,可能会出现各种各样的 error。这些 error 有些是由于操作系统引起的,比如文件或者目录不存在;有些则是由于存储引擎使用不当引起的。这些 error 一般都有一个代码,类似于 “error:#” 或者 “Errcode:#”,“#” 代表具体的错误号。perror 的作用就是解释这些错误代码的详细含义:

perror [options] [errorcode [errorcode]]

zj@bogon:/usr/local/mysql/bin$ perror 30
OS error code 30: Read-only file system
zj@bogon:/usr/local/mysql/bin$ perror 60
OS error code 60: Device not a stream
zj@bogon:/usr/local/mysql/bin$ perror 30 60
OS error code 30: Read-only file system
OS error code 60: Device not a stream

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

您可能感兴趣的文章:

  • 澳门金莎娱乐手机版,5个常用的MySQL数据库管理工具详细介绍
  • Mysql导入导出工具Mysqldump和Source命令用法详解
  • MYSQL ZIP免安装版配置步骤及图形化管理工具mysql-workbench
  • MySQL性能分析工具profile使用教程
  • Mysqlslap MySQL压力测试工具 简单教程
  • 利用Xtrabackup工具备份及恢复(MySQL DBA的必备工具)
  • mysql中优化和修复数据库工具mysqlcheck详细介绍
  • Mysql自带profiling性能分析工具使用分享
  • 五款常用mysql slow log分析工具的比较分析
  • mytop 使用介绍 mysql实时监控工具

本文由澳门金莎娱乐网站发布于数据大全,转载请注明出处:解析MYSQL显示表信息的方法,MySQL中的常用工具实

关键词:

8小时空闲后连接失效的解决,mysql超时机制

由于mysql默认8小时连接无访问,就会断开.为此查了一下资料,有同种比较简单的解决方案: mysql 8小时空闲后连接失效的...

详细>>

索引碎片的查询,索引阐述系列六

一 . dm_db_index_physical_stats 重要字段说明 1.1 内部碎片:是avg_page_space_used_in_percent字段。是指页的填充度,为了使磁盘...

详细>>

Apache与Tomcat区别联系,WEB开发基本知识

    小编利用asp.net的webform框架举办web应用程序的付出已经大致八年了,在全部开拓生涯中,也选用过一年asp.net的...

详细>>

关键字在值为null的应用举例,mysql查询字段为空

转自:http://www.maomao365.com/?p=6873 在mysql中null包括了not null与ifnull或等等,下面我来给大家介绍在mysql中null的注意事项与...

详细>>