第76讲:MySQL数据库中常用的命令行工具的基本使用

文章目录

    • 1.mysql客户端命令工具
    • 2.mysqladmin管理数据库的客户端工具
    • 3.mysqlbinlog查看数据库中的二进制日志
    • 4.mysqlshow统计数据库中的信息
    • 5.mysqldump数据库备份工具
    • 6.mysqllimport还原备份的数据
    • 7.source命令还原SQL类型的备份文件

MySQL数据库提供了很多的命令行工具,在日常运维过程中可以使用这些工具来操作数据库。

1.mysql客户端命令工具

mysql命令时MySQL数据库的客户端工具,如果在非数据库的服务器上想要操作目标数据库,就需要去安装mysql客户端,通过mysql客户端可以对数据库进行增删改查操作,还可以进入mysql的交互式界面。

mysql工具的语法格式:mysql [options] [database]

mysql工具常用的选项:

  • -u,--user:指定登陆数据库的用户名。
  • -p,--password:指定登录数据库的密码
  • -h,--host:指定要登陆的MySQL服务器地址。
  • -P,--port:指定MySQL数据库的端口号。
  • -e,--excute:通过此参数可以在非交互式下操作数据库,常用于脚本中。
#查看MySQL中有那些数据库
[root@mysql ~]# mysql -u root -p123456 -h 192.168.20.10 -P 3306 -e "show databases;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| db-3               |
| db_1               |
| db_2               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

#该警告可以忽略,提示将密码显示在命令行不安全。

2.mysqladmin管理数据库的客户端工具

mysqladmin可是管理数据库操作的客户端程序,可以用它来检查服务器的配置和当前的运行状态,还可以来创建删除刷新数据库等等。

mysqladmin管理工具的参数很多,可以通过mysqladmin --help来查看帮助信息,根据需要去查找对应的参数。

mysqladmin管理工具可以通过命令参数对数据库进行很多的操作,如下所示,有flush刷新数据库的功能、password修改用户的密码、processlist查看当前数据库的进程、shutdown关闭数据库、variables查看数据库的参数配置、version查看数据库的版本。

image-20220629220509895

mysqladmin工具的语法格式:mysqladmin [options] command

选项参数:

  • -u,--user:指定登陆数据库的用户名。
  • -p,--password:指定登录数据库的密码
  • -h,--host:指定要登陆的MySQL服务器地址。
  • -P,--port:指定MySQL数据库的端口号。

1)查看mysql数据库的版本

[root@mysql ~]# mysqladmin -uroot -p123456 version
mysqladmin  Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version		8.0.26
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/lib/mysql/mysql.sock
Uptime:			2 days 11 hours 41 min 32 sec

Threads: 2  Questions: 101  Slow queries: 0  Opens: 200  Flush tables: 3  Open tables: 119  Queries per second avg: 0.000

2)查看mysql数据库当前的运行的进程

[root@mysql ~]# mysqladmin -uroot -p123456 processlist
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
+----+-----------------+-----------+----+---------+--------+------------------------+------------------+
| Id | User            | Host      | db | Command | Time   | State                  | Info             |
+----+-----------------+-----------+----+---------+--------+------------------------+------------------+
| 5  | event_scheduler | localhost |    | Daemon  | 214901 | Waiting on empty queue |                  |
| 17 | root            | localhost |    | Query   | 0      | init                   | show processlist |
+----+-----------------+-----------+----+---------+--------+------------------------+------------------+

3)创建一个数据库

[root@mysql ~]# mysqladmin -uroot -p123456 create db_test

4)删除一个数据库

[root@mysql ~]# mysqladmin -uroot -p123456 drop db_test
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'db_test' database [y/N] y
Database "db_test" dropped

5)查看MySQL运行的状态

[root@mysql ~]# mysqladmin -uroot -p123456 status
Uptime: 214852  Threads: 2  Questions: 98  Slow queries: 0  Opens: 200  Flush tables: 3  Open tables: 119  Queries per second avg: 0.000

3.mysqlbinlog查看数据库中的二进制日志

通过mysqlbinlog命令可以查看数据库生成的二进制文件内容,通过二进制日志可以恢复没有备份且误删除的数据。

mysqlbinlog使用格式:mysqlbinlog [options] 二进制日志文件

可用的选项:

  • -d:指定数据库名称,只列出与指定数据库相关的操作语句。
  • -o:忽略日志中前n行的指令。
  • -r:将输出的文本格式日志输出到指定的文件。
  • -s:显示简单的格式。
  • --start-datetime=date1 --stop-datetime=date2:显示指定日期间隔内的所有信息。
  • --start-position=pos1 --stop-position=pos2:显示指定位置间隔内的所有日志。

查看这个/var/lib/mysql/binlog.000003二进制日志中的数据。

[root@mysql ~]# mysqlbinlog -d db_1 /var/lib/mysql/binlog.000003

二进制日志中记录的都是实时对数据库操作的SQL语句。

image-20220629222513290

4.mysqlshow统计数据库中的信息

通过mysqlshow命令可以统计MySQL数据库中有多少个数据库,每个数据库对应有多少张表,每张表下有多少条数据。

mysqlshow使用语法:mysqlshow [options] [db_name [table_name [col_name]]]

选项:

  • --count:显示数据库及表的统计信息。
  • -i:显示指定数据库或者指定表的状态信息。

1)查看MySQL中有多少个数据库、每个数据库对应多少张表、每个数据库下共有多少条数据。

[root@mysql ~]# mysqlshow -uroot -p123456 --count
+--------------------+--------+--------------+
|     Databases      | Tables |  Total Rows  |
+--------------------+--------+--------------+
| db-3               |      2 |            0 |
| db_1               |     23 |      1027304 |
| db_2               |      0 |            0 |
| information_schema |     79 |        32856 |
| mysql              |     37 |         3960 |
| performance_schema |    110 |       232877 |
| sys                |    101 |         5078 |
+--------------------+--------+--------------+
7 rows in set.

#Tables表示该数据库下有多少张表,Total Rows表示当前数据库中有多少条数据。

2)查看指定数据库下有那些表,分别有多少条数据。

[root@mysql ~]# mysqlshow -uroot -p123456 db_1 --count
mysqlshow: [Warning] Using a password on the command line interface can be insecure.
Database: db_1
+-------------------------+----------+------------+
|         Tables          | Columns  | Total Rows |
+-------------------------+----------+------------+
| bmxxb                   |        2 |          7 |
| dabiao                  |       62 |      27126 |
| erp_user                |        5 |          5 |
| jszx_xgymjzxxb          |       13 |         15 |
| ryxxb                   |        8 |         22 |
| tb_memory               |        2 |          0 |
| tb_user                 |        9 |          7 |
| tb_user_100w            |        6 |    1000000 |
| tb_user_pro             |        3 |          7 |
| v_jszx_xgymjzxxb_nozjhm |       12 |         15 |
| v_ryxx_bmxx             |        3 |         22 |
| v_ryxxb_1               |        3 |          1 |
| v_ryxxb_2               |        3 |          1 |
| v_ryxxb_3               |        3 |          1 |
| v_ryxxb_4               |        3 |          1 |
| v_ryxxb_5               |        3 |          1 |
| v_ryxxb_6               |        3 |          1 |
| v_ryxxb_c               |        1 |          1 |
| xscjb                   |        6 |         10 |
| xscjb_logs              |        5 |         33 |
| xzdjb                   |        3 |          8 |
| yexxb                   |        3 |          2 |
| ygxxb                   |        8 |         18 |
+-------------------------+----------+------------+
23 rows in set.

#Columns表示表中有多少个字段

3)查看指定表的统计信息。

[root@mysql ~]# mysqlshow -uroot -p123456 db_1 xscjb --count

image-20220629223558845

4)查看指定字段的统计信息。

[root@mysql ~]# mysqlshow -uroot -p123456 db_1 xscjb ywcj --count
mysqlshow: [Warning] Using a password on the command line interface can be insecure.
Database: db_1  Table: xscjb  Rows: 10  Wildcard: ywcj
+-------+------+-----------+------+-----+---------+-------+---------------------------------+--------------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges                      | Comment      |
+-------+------+-----------+------+-----+---------+-------+---------------------------------+--------------+
| ywcj  | int  |           | YES  | MUL |         |       | select,insert,update,references | 语文成绩 |
+-------+------+-----------+------+-----+---------+-------+---------------------------------+--------------+

5)查看指定数据库中表的状态。

[root@mysql ~]# mysqlshow -uroot -p123456 db_1 xscjb -i

image-20220629223759501

5.mysqldump数据库备份工具

mysqldump工具是对数据库备份的工具,可以通过这个工具将数据进行备份,然后在不同数据库之间迁移。

mysqldump的使用语法:

  • 备份指定数据库

    • mysqldump 选项 数据库
  • 备份指定数据库下的某张表

    • mysqldump 选项 数据库 表
  • 备份多个数据库

    • mysqldump 选项 --database/-B 数据库1 数据库2
  • 备份所有数据库

    • mysqldump 选项 --all-databases/-A

mysqldump连接数据库的选项:

  • -u,--user:指定登陆数据库的用户名。
  • -p,--password:指定登录数据库的密码
  • -h,--host:指定要登陆的MySQL服务器地址。
  • -P,--port:指定MySQL数据库的端口号。

mysqldump输出选项:

  • --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文件,数据文件 。

1)备份db_1数据库

[root@mysql backup]# mysqldump -uroot -p123456 db_1 > db_1.sql

在db_1.sql文件中备份了db_1数据库的所有表以及数据、

image-20220629225716094

2)备份db_1数据库下的xscjb表,只备份表结构不备份数据

[root@mysql backup]# mysqldump -uroot -p123456 db_1 xscjb -d > db_1-xscjb.sql

此时备份文件里只有建表语句,不包含数据。

image-20220629230150134

3)备份db_1数据库下的xscjb表,只备份数据表不备份表结构和数据库

[root@mysql backup]# mysqldump -uroot -p123456 db_1 xscjb -n -t > db_1-xscjb-data.sql

image-20220629230239629

4)备份db_1数据库下的xscjb表,生成两个文件

当我们希望备份数据库时,表结构和表数据分开存放,.sql文件存放表结构的备份,.txt文件存放表数据的备份,那么就需要使用-T参数了。

使用-T参数之前需要先查看MySQL受信任的备份路径,否则只能备份表的结构,表数据无法备份成功。

1.查看mysql受信的备份路径
mysql> show variables like '%secure_file_priv%';
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+

2.备份时指定该路径作为备份路径即可
[root@mysql ~]# mysqldump -uroot -p123456 db_1 xscjb -T /var/lib/mysql-files/

3.查看生成的备份文件
[root@mysql ~]# ll /var/lib/mysql-files/
总用量 12
-rw-r--r-- 1 root  root  5469 629 23:09 xscjb.sql
-rw-r----- 1 mysql mysql  219 629 23:09 xscjb.txt

.sql文件备份表结构,.txt文件备份表数据,使用-T参数导出的txt表数据,不是SQL语句,而是特定格式的数据。

image-20220629231101892

6.mysqllimport还原备份的数据

mysqllimport工具可以还原mysqldump -T参数备份的txt格式的表数据文件,如果备份的数据是sql格式的,mysqllimport无法还原,mysqllimport只能还原txt格式的备份文件。

使用语法:mysqlimport [options] 数据库 txtfile

将xscjb的数据清空,然后使用mysqllimport还原刚刚备份的xscjb的数据。

1.清空xscjb表的数据
[root@mysql ~]# mysql -uroot -p123456 -e "delete from db_1.xscjb;"

2.还原备份的数据
[root@mysql ~]# mysqlimport -uroot -p123456 db_1 /var/lib/mysql-files/xscjb.txt 
db_1.xscjb: Records: 10  Deleted: 0  Skipped: 0  Warnings: 0

#数据还原成功,还原的条数为10条

7.source命令还原SQL类型的备份文件

使用mysqllimport工具只能还原txt类型的备份文件,一般情况下备份的数据库文件都是.sql格式的,可以通过source命令进行还原,source命令时在交互式中执行的。

[root@mysql ~]# mysql -uroot -p123456
mysql> use db_1;
mysql> source /root/backup/db_1.sql;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/232987.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Azure Machine Learning - 使用 Azure OpenAI 服务生成图像

在浏览器/Python中使用 Azure OpenAI 生成图像,图像生成 API 根据文本提示创建图像。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员&#x…

掌握JavaScript继承的精髓:原型继承、构造函数继承以及组合继承的实现技巧

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-Javascript如何实现继承? 目录 一、是什么 二、实现方式 …

DataFrame的使用

查看数据类型及属性 # 查看df类型 type(df) # 查看df的shape属性,可以获取DataFrame的行数,列数 df.shape # 查看df的columns属性,获取DataFrame中的列名 df.columns # 查看df的dtypes属性,获取每一列的数据类型 df.dtypes df.i…

Flutter自定义下拉选择框dropDownMenu

利用PopupMenuButton和PopupMenuItem写了个下拉选择框,之所以不采用系统的,是因为自定义的更能适配项目需求,话不多说,直接看效果 下面直接贴出代码、代码中注释写的都很清楚,使用起来应该很方便,如果有任何…

Java开发工具:IDEA 2023.3(WinMac)中文激活版

IntelliJ IDEA 2023是一款由JetBrains公司出品的集成开发环境(IDE),专为程序员设计。它以智能、高效和人性化为主要特点,致力于提高开发人员的生产力,帮助程序员更快、更好地编写代码。 在智能功能方面,Int…

51单片机数码管的使用

IO的使用2–数码管 本文主要涉及51单片机的数码管的使用 文章目录 IO的使用2--数码管一、数码管的定义与类型1.1 数码管的原理图二、 举个栗子2.1 一个数码管的底层函数2.2 调用上面的底层函数显示具体数字 一、数码管的定义与类型 数码管是一种用于数字显示的电子元件&#x…

C语言进阶之路之顶峰相见篇

目录 一、学习目标 二、宏定义 预处理 宏的概念 带参宏 无值宏定义 三、条件编译 条件编译 条件编译的使用场景 四、头文件 头文件的作用 头文件的内容 头文件的基础语句: GCC编译器的4个编译步骤: 总结 一、学习目标 掌握宏定义含义和用…

hdlbits系列verilog解答(mt2015_q4b)-53

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 本次我们根据仿真波形图反向设计一个电路。波形如下图: 根据波形,我们可以得到真值表: x y z 0 0 1 0 1 0 1 0 0 1 1 1 逻辑表达式可以写成以下积之和形式: z = (!x&!y) | (x&y); 二、verilog源码…

php使用vue.js实现省市区三级联动

参考gpt 有问题问gpt 实现效果 现省市区三级联动的方法可以使用PHP结合AJAX异步请求来实现。下面是一个简单的示例代码&#xff1a; HTML部分&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>省市区三级联动…

基础课20——从0-1客服机器人生命周期

温馨提示&#xff1a;篇幅较长&#xff0c;可点击目录查看对应节点。 1.机器人搭建期 搭建机器人包含&#xff1a;素材整理、问题提炼、相似问题补充、答案编辑、问题分配引擎等等步骤&#xff0c;不同厂商可能有所区别&#xff0c;但关键功能的实现离不开以下步骤。 1.1素材…

MA营销自动化如何助力商家实现精准营销?

惟客数据 MAP 是一个跨渠道和设备的自动化营销平台&#xff0c;允许接触点编排个性化旅程&#xff0c;通过短信、社交推送等方式为您的客户创建无缝的个性化体验&#xff0c;加强客户关系并赢得忠诚度。可与惟客数据CDP 产品无缝配合使用&#xff0c;通过数据驱动做出更实时&am…

Qt实现二维码生成和识别

一、简介 QZxing开源库: 生成和识别条码和二维码 下载地址&#xff1a;https://gitcode.com/mirrors/ftylitak/qzxing/tree/master 二、编译与使用 1.下载并解压&#xff0c;解压之后如图所示 2.编译 打开src目录下的QZXing.pro&#xff0c;选择合适的编译器进行编译 最后生…

软件测试:Selenium三大等待(详解版)

一、强制等待 1.设置完等待后不管有没有找到元素&#xff0c;都会执行等待&#xff0c;等待结束后才会执行下一步 2.实例&#xff1a; driver webdriver.Chrome()driver.get("https://www.baidu.com")time.sleep(3) # 设置强制等待driver.quit() 二、隐性等待 …

前端知识(十)———JavaScript 使用URL跳转传递数组对象数据类型的方法

目录 首先了解一下正常传递基本数据类型 JavaScript跳转页面方法 JavaScript路由传递参数 JavaScript路由接收参数传递对象、数组 在前端有的时候会需要用链接进行传递参数&#xff0c;基本数据类型的传递还是比较简单的&#xff0c;但是如果要传递引用数据类型就比较麻烦了…

深入解析PyTorch的DataLoader:参数探秘与使用指南【建议收藏】

引言 当我们深入探索深度学习的世界时&#xff0c;PyTorch作为一个强大且易用的框架&#xff0c;提供了丰富的功能来帮助我们高效地进行模型训练和数据处理。其中&#xff0c;DataLoader是PyTorch中一个非常核心且实用的组件&#xff0c;它负责在模型训练过程中加载和处理数据…

如何利用Axure制作移动端产品原型

Axure是一款专业的快速原型设计工具&#xff0c;作为专业的原型设计工具&#xff0c;Axure 能够快速、高效地创建原型&#xff0c;同时支持多人协作设计和版本控制管理。它已经得到了许多大公司的采用&#xff0c;如IBM、微软、思科、eBay等&#xff0c;这些公司都利用Axure 进…

【Linux】地址空间

本片博客将重点回答三个问题 什么是地址空间&#xff1f; 地址空间是如何设计的&#xff1f; 为什么要有地址空间&#xff1f; 程序地址空间排布图 在32位下&#xff0c;一个进程的地址空间&#xff0c;取值范围是0x0000 0000~ 0xFFFF FFFF 回答三个问题之前我们先来证明地址空…

react中使用react-konva实现画板框选内容

文章目录 一、前言1.1、API文档1.2、Github仓库 二、图形2.1、拖拽draggable2.2、图片Image2.3、变形Transformer 三、实现3.1、依赖3.2、源码3.2.1、KonvaContainer组件3.2.2、use-key-press文件 3.3、效果图 四、最后 一、前言 本文用到的react-konva是基于react封装的图形绘…

Scrum

Scrum是一个用于开发和维持复杂产品的框架&#xff0c;是一个增量的、迭代的开发过程。在这个框架中&#xff0c;整个开发过程由若干个短的迭代周期组成&#xff0c;一个短的迭代周期称为一个Sprint&#xff0c;每个Sprint的建议长度是2到4周(互联网产品研发可以使用1周的Sprin…

序列的Z变换(信号的频域分析)

1. 关于Z变换 2. 等比级数求和 3. 特殊序列的Z变换 4. 因果序列/系统收敛域的特点 5. 例题