一.概述

    mysqlshow客户端查找工具,能很快地查找存在哪些数据库,数据库中的表,表中的列或索引,和mysql客户端工具很类似,不过有些特性是mysql客户端工具所不具备的。
  mysqlshow的使用方法如下:
威尼斯城真人赌钱网站 1

    如果不加任何选项,默认情况下,会显示所有数据库,下面将显示当前mysql中所有数据库。
威尼斯城真人赌钱网站 2

连接选项

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

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

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

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

  • -n, –no-create-db      不包含数据库的创建语句 
  • -t, –no-create-info    不包含数据表的创建语句
  • -d, –no-data           不包含数据

您可能感兴趣的文章:

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

show grants for user_name;

二.下面是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信息

输出格式选项

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

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

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

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

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

mysqldump(数据导出工具)

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

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

mysqldump --help 查看更详细功能

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

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列的信息

三种常用的MySQL建表语句

字符集选项

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

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

shell> mysqlimport [options] db_name textfile1

mysqlshow,该指令只参显示数据库、表、列的信息

客户端字符集选项

--default-character-set=character-name
zj@bogon:/data/mysql$ mysqlcheck -a t2
t2.test1      OK
t2.test2      OK

教您如何实现MySQL多表插入

mysqlimport(数据导入工具)

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

mysqlimport [options] dbname textfile1 [textfile2]...
  • -T, –tab=name                  备份数据和建表语句
  • –fileds-terminated-by=name     域分隔符
  • –fileds-enclosed-by=name       域引用符
  • –fileds-optionally-enclosed-by=name    域可选引用符
  • –fileds-escaped-by=name        转义字符

show table status

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

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

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

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

常用选项:

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

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

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

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');

#显示表中列名称

输出内容选项

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

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

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

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

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

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

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

#显示一个用户的权限,显示结果类似于grant 命令

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=# 指定位置间隔内的所有日志

  1. 修复表

============================================================

myisampack(MyISAM 表压缩工具)

myisampack tname

压缩后变成只读表

4. 格式化选项

show create database database_name

格式化选项

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

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

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

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

错误处理选项

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

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

--show-warnings 显示警告信息

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

#显示服务器所支持的不同权限

mysql(客户端连接工具)

mysql[options][database]

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

有两种表达方式:

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

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

      mysql --user=root
    

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

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

show create table table_name

perror(错误代码查看工具)

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

总结

MySQL修复表的两个小技巧

执行选项

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

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

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

mysql -uroot -p -e"select * from dbtest.xixi;select * from dbtest.haha"
zj@bogon:/data/mysql$ mysqlcheck -o t2
t2.test1
note : Table does not support optimize, doing recreate + analyze instead
status : OK
t2.test2  

#显示表的索引

mysqladmin(MySQL 管理工具)

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

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

例如:mysqlshow   -uroot   -pXXXX   mysql   user   user  
#显示mysql数据库中user表中的user列的信息

replace(文本替换工具)

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

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

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

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*/;

show tables [ from db_name]

其他常用选项

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

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

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*/;

#显示安装后的可用存储引擎和默认引擎

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 优化表

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

show databases;

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

show errors

七、mysqlimport
(数据导入工具)

show logs   —–这个已经被遗弃了

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

show warnings

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

#显示BDB存储引擎的日志

  1. 示例准备:创建新日志,新建库 t1 和 t2, 以及分别新建表 test1 和 test2

MYSQL表信息的查看方法是我们经常要实现的功能,下面就为您介绍显示MYSQL表信息的方法,如果您对MYSQL表信息方面感兴趣的话,不妨一看。

option 有很多选项:

SHOW 指令(‘[..]’里的可选)

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

#显示innoDB存储引擎的状态

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*/;

show columns from table_name [ from database_name ] ; 或show columns
from database_name.table_name;

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

#显示create database 语句是否能够创建指定的数据库

  1. 将 t2 数据库下的表 emp 备份到 bak 目录下

例如:mysqlshow   -uroot   -pXXXX   mysql   #显示mysql数据库的信息

相关文章