18.mysql客户端工具
注意,这里所说的客户端工具就是指我们在没有登录到数据库之前我们可以运行的命令
该mysql不是指mysql服务,而是指mysql的客户端工具。
语法 :
mysql [options] [database]
1.1.1 连接选项
参数 : -u, --user=name 指定用户名 -p, --password[=name] 指定密码 -h, --host=name 指定服务器IP或域名 -P, --port=# 指定连接端口 示例 : mysql -h 127.0.0.1 -P 3306 -u root -p --回车之后还需要输入密码 mysql -h127.0.0.1 -P3306 -uroot -p123456 --回车之后直接登录进去(注意书写的时候-u和登录用户名之间没有空格,-p和密码之间没有空格)
mysql -uroot -p123456 --登录本地数据库服务器IP和端口可以省略
mysql -uroot -p123456 db_01 --登录mysql并且直接使用db_01数据库
1.1.2 执行选项
-e, --execute=name 执行SQL语句并退出
此选项可以在Mysql客户端执行SQL语句,而不用连接到MySQL数据库再执行,对于一些批处理脚本,这种方式尤其方便。
示例:
mysql -uroot -padmin123 demo_01 -e "select * from city";
1.2 mysqladmin
mysqladmin 是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并删除数据库等。
可以通过 : mysqladmin --help 指令查看帮助文档
示例 : mysqladmin -uroot -padmin123 create 'test01'; --创建数据库 mysqladmin -uroot -padmin123 drop 'test01'; --删除数据库 mysqladmin -uroot -padmin123 version; --查看mysql版本
1.3 mysqlbinlog
由于服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文本的文本格式,就会使用到mysqlbinlog 日志管理工具。
语法 :
mysqlbinlog [options] log-files1 log-files2 ...
选项:
-d, --database=name : 指定数据库名称,只列出指定的数据库相关操作。 -o, --offset=# : 忽略掉日志中的前n行命令。 -r,--result-file=name : 将输出的文本格式日志输出到指定文件。 -s, --short-form : 显示简单格式, 省略掉一些信息。 --start-datatime=date1 --stop-datetime=date2 : 指定日期间隔内的所有日志。 --start-position=pos1 --stop-position=pos2 : 指定位置间隔内的所有日志。
1.4 mysqldump
mysqldump 客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表,及插入表的SQL语句。
语法 :
mysqldump [options] db_name [tables] mysqldump [options] --database/-B db1 [db2 db3...] mysqldump [options] --all-databases/-A
1.4.1 连接选项
参数 :
-u, --user=name 指定用户名 -p, --password[=name] 指定密码 -h, --host=name 指定服务器IP或域名 -P, --port=# 指定连接端口
1.4.2 输出内容选项
参数: --add-drop-database 在每个数据库创建语句前加上 Drop database 语句 --add-drop-table 在每个表创建语句前加上 Drop table 语句 , 默认开启 ; 不开启 (--skip-add-drop-table) -n, --no-create-db 不包含数据库的创建语句 -t, --no-create-info 不包含数据表的创建语句 -d --no-data 不包含数据 -T, --tab=name 自动生成两个文件:一个.sql文件,创建表结构的语句;一个.txt文件,数据文件,相当于select into outfile
示例 :
1.导出指定数据库下指定表(包含创建语句和插入语句)
mysqldump -uroot -padmin123 demo_01 city > /tmp/city.sql;
1 -- MySQL dump 10.13 Distrib 5.6.22, for Linux (i686) 2 -- 3 -- Host: localhost Database: demo_01 4 -- ------------------------------------------------------ 5 -- Server version 5.6.22 6 7 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 8 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 9 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 10 /*!40101 SET NAMES utf8 */; 11 /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; 12 /*!40103 SET TIME_ZONE='+00:00' */; 13 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 14 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 15 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 16 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 17 18 -- 19 -- Table structure for table `city` 20 -- 21 22 DROP TABLE IF EXISTS `city`; 23 /*!40101 SET @saved_cs_client = @@character_set_client */; 24 /*!40101 SET character_set_client = utf8 */; 25 CREATE TABLE `city` ( 26 `city_id` int(11) NOT NULL AUTO_INCREMENT, 27 `city_name` varchar(50) NOT NULL, 28 `country_id` int(11) NOT NULL, 29 PRIMARY KEY (`city_id`), 30 UNIQUE KEY `idx_city_name` (`city_name`) 31 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; 32 /*!40101 SET character_set_client = @saved_cs_client */; 33 34 -- 35 -- Dumping data for table `city` 36 -- 37 38 LOCK TABLES `city` WRITE; 39 /*!40000 ALTER TABLE `city` DISABLE KEYS */; 40 INSERT INTO `city` VALUES (1,'西安市',1),(2,'NewYork',2),(3,'北京',1),(4,'上海',1); 41 /*!40000 ALTER TABLE `city` ENABLE KEYS */; 42 UNLOCK TABLES; 43 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; 44 45 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; 46 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; 47 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; 48 /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 49 /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 50 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 51 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; 52 53 -- Dump completed on 2020-07-31 11:31:35
2.导出指定数据库下所有表(包含创建语句和插入语句)
mysqldump -uroot -padmin123 demo_01 >/tmp/demo01.sql;
-- MySQL dump 10.13 Distrib 5.6.22, for Linux (i686) -- -- Host: localhost Database: demo_01 -- ------------------------------------------------------ -- Server version 5.6.22 /*!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 utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `city` -- DROP TABLE IF EXISTS `city`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `city` ( `city_id` int(11) NOT NULL AUTO_INCREMENT, `city_name` varchar(50) NOT NULL, `country_id` int(11) NOT NULL, PRIMARY KEY (`city_id`), UNIQUE KEY `idx_city_name` (`city_name`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `city` -- LOCK TABLES `city` WRITE; /*!40000 ALTER TABLE `city` DISABLE KEYS */; INSERT INTO `city` VALUES (1,'西安市',1),(2,'NewYork',2),(3,'北京',1),(4,'上海',1); /*!40000 ALTER TABLE `city` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `country` -- DROP TABLE IF EXISTS `country`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `country` ( `country_id` int(11) NOT NULL AUTO_INCREMENT, `country_name` varchar(100) NOT NULL, PRIMARY KEY (`country_id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `country` -- LOCK TABLES `country` WRITE; /*!40000 ALTER TABLE `country` DISABLE KEYS */; INSERT INTO `country` VALUES (1,'China'),(2,'America'),(3,'Japan'),(4,'UK'); /*!40000 ALTER TABLE `country` ENABLE KEYS */; UNLOCK TABLES; -- -- 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 AUTO_INCREMENT, `name` varchar(50) NOT NULL COMMENT '姓名', `age` int(11) DEFAULT NULL COMMENT '年龄', `salary` int(11) DEFAULT NULL COMMENT '薪水', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `emp` -- LOCK TABLES `emp` WRITE; /*!40000 ALTER TABLE `emp` DISABLE KEYS */; INSERT INTO `emp` VALUES (1,'金毛狮王',55,3800),(2,'白眉鹰王',60,4000),(3,'青翼蝠王',39,2800),(4,'紫衫龙王',42,1800),(6,'光明右使',33,3200); /*!40000 ALTER TABLE `emp` ENABLE KEYS */; UNLOCK TABLES; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 trigger emp_insert_trigger after insert on emp for each row begin insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values (null,'insert',now(),new.id,concat('插入数据:(id:',new.id,';name:',new.name,';age:',new.age,';salary:',new.salary,')')); end */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 trigger emp_update_trigger after update on emp for each row begin insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values (null,'insert',now(),new.id,concat('更新前数据:(id:',old.id,';name:',old.name,';age:',old.age,';salary:',old.salary,')', '更新后数据:(id:',new.id,';name:',new.name,';age:',new.age,';salary:',new.salary,')')); end */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8 */ ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 trigger emp_delete_trigger after delete on emp for each row begin insert into emp_logs (id,operation,operate_time,operate_id,operate_params) values (null,'delete',now(),old.id,concat('删除的数据:(id:',old.id,';name:',old.name,';age:',old.age,';salary:',old.salary,')')); end */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Table structure for table `emp_logs` -- DROP TABLE IF EXISTS `emp_logs`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `emp_logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `operation` varchar(20) NOT NULL COMMENT '操作类型, insert/update/delete', `operate_time` datetime NOT NULL COMMENT '操作时间', `operate_id` int(11) NOT NULL COMMENT '操作表的ID', `operate_params` varchar(500) DEFAULT NULL COMMENT '操作参数', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `emp_logs` -- LOCK TABLES `emp_logs` WRITE; /*!40000 ALTER TABLE `emp_logs` DISABLE KEYS */; INSERT INTO `emp_logs` VALUES (1,'insert','2020-07-26 19:14:29',5,'插入数据:(id:5name:光明左使age:salary:3500)'),(2,'insert','2020-07-26 19:18:40',6,'插入数据:(id:6;name:光明右使;age:33;salary:3200)'),(3,'insert','2020-07-26 19:35:35',3,'更新前数据:(id:3;name:青翼蝠王;age:38;salary:2800)更新后数据:(id:3;name:青翼蝠王;age:39;salary:2800)'),(4,'delete','2020-07-26 19:40:46',5,'删除的数据:(id:5;name:光明左使;age:30;salary:3500)'); /*!40000 ALTER TABLE `emp_logs` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!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 2020-07-31 11:37:49
3.导出某个数据库下某个表,创建语句导出为***.sql,数据导出为***.txt;
mysqldump -uroot -padmin123 -T /tmp demo_01 city; --导出 demo_01数据库的 city表到/tmp目录下
-- MySQL dump 10.13 Distrib 5.6.22, for Linux (i686) -- -- Host: localhost Database: demo_01 -- ------------------------------------------------------ -- Server version 5.6.22 /*!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 utf8 */; /*!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 `city` -- DROP TABLE IF EXISTS `city`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `city` ( `city_id` int(11) NOT NULL AUTO_INCREMENT, `city_name` varchar(50) NOT NULL, `country_id` int(11) NOT NULL, PRIMARY KEY (`city_id`), UNIQUE KEY `idx_city_name` (`city_name`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*!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 2020-07-31 11:48:21
1 西安市 1 2 NewYork 2 3 北京 1 4 上海 1
1.5 mysqlimport/source
mysqlimport 是客户端数据导入工具,用来导入mysqldump 加 -T 参数后导出的文本文件(txt)。
语法:
mysqlimport [options] db_name textfile1 [textfile2...]
示例:
mysqlimport -uroot -padmin123 demo_01 /tmp/city.txt
如果需要导入sql文件,可以使用mysql中的source 指令 :注意该指令是登录mysql之后才能使用
1.导出指定数据库下指定表(包含创建语句和插入语句)
mysqldump -uroot -padmin123 demo_01 city > /tmp/city.sql;
2.然后我们把city表删除
3.通过source命令运行sql文件内容(创建表并导入数据)
source /tmp/city.sql; ---注意,该语句在登录mysql之后使用(非客户端工具)
1.6 mysqlshow
mysqlshow 客户端对象查找工具,用来很快地查找存在哪些数据库、数据库中的表、表中的列或者索引。
语法:
mysqlshow [options] [db_name [table_name [col_name]]]
参数:
--count 显示数据库及表的统计信息(数据库,表 均可以不指定) -i 显示指定数据库或者指定表的状态信息
示例:
#查询每个数据库的表的数量及表中记录的数量
mysqlshow -uroot -padmin123 --count
#查询demo_01库中每个表中的字段书,及行数
mysqlshow -uroot -padmin123 demo_01 --count
#查询demo_01库中city表的详细情况
mysqlshow -uroot -padmin123 demo_01 city --count