MySQL的命令行客户端

MySQL中的一些程序:

MySQL在安装完成的时候,一般都会包含如下程序:

在Linux系统下,通过/usr/bin目录下,可以通过命令查看:

以下是常用的MySQL程序:

|---------------|---------------------------------------------------------------------------------|
| 程序名 | 作用 |
| mysqld | MySQL的守护进程即MySQL服务器,mysqld是服务端的程序,需要使用mysql服务器mysqld一定要在运行状态 |
| mysql | mysql是一个客户端程序,用于交互输入SQL语句或批处理模式从文件执行SQL的命令行工具 |
| mysqlcheck | 用于检查,修复,分析和优化表的表客户端工具 |
| mysqldump | 将MySQL数据库转储到SQL,文本或者XML文件中的客户端 |
| mysqlimport | 将文本文件导入到表的客户端工具(备份和恢复) |
| mysqladmin | 执行管理操作的客户端,例如创建或删除数据库,重新加载授权表,将表刷新到磁盘以及重新打开日志文件,mysqladmin还可以用于从服务器检索版本,进程和状态信息 |
| mysqlshow | 显示数据库,表,列和索引信息的客户端 |
| mysqldumpslow | 用于读取和汇总慢速查询日志内容的实用程序 |
| mysqlbinlog | 从二进制日志中读取SQL语句的使用程序,mysqlbinlog文件中包含的已执行SQL语句的日志,可用于从崩溃中恢复数据 |
| mysqlslap | 客户端负载工具,模拟多个客户端同时访问MySQL服务器,并报告每个阶段的使用时间。 |

MySQL命令行客户端:

MySQL客户端选项:
1.指定选项的方式:

1.在MySQL后面命令行中列出选项

2.在MySQL后面指定配置文件的路径,以便程序启动时读取配置文件中的选项。

3.使用环境变量中的选项

常用的选项如下:

|-----------------|-----|----------------------------------------------------------------------------|
| 选项--长格式 | 短格式 | 说明 |
| --host | -h | --host=host_name,-h host_name 连接到指定主机上的MySQL服务 |
| --post | -P | --port=port_num,-P port_num TCP/IP连接使用的端口号 |
| --user | -u | --user=user_name,-u user_name 用于连接到MySQL服务器的用户名 |
| --password | -p | --password[=password],-p[password] 用于连接到MySQL服务器的密码,可选,如果没有给出,会提示用户输入。 |
| --defaults-file | | --defaults-file=file_name 使用指定的选项文件,如果该文件不存在,则会发生错误 |
| --compress | -C | 如果可能,压缩客户端和服务器之间传输的所有信息。 |
| --protocol | | 用于连接到服务器的传输协议,默认为TCP |
| --version | -V | 显示版本信息并退出 |
| --help | -? | 显示帮助信息并退出 |

注意:如果选项的值包括空格,那么值必须包含在双引号中。

2.在命令行中使用选项:

2.1选项应该在程序名之后给出

2.1选项以单破折号"-",或者双破折号"--"开头,"-"表示短格式,"--"表示长格式,例如:-?和--help

都表示MySQL程序显示他的帮助消息。

mysql -?;

mysql --help;

选项名称也区分大小写,-v和-V都是合法的,但是它们含义不同,分别表示为--verbose和--version选项的相应的缩写形式。

varbose选项:会显示更多的执行细节,例如SQL语句执行的状态,结果集的元数据。

version选项:会显示MySQL客户端的版本号,编译信息,发布日期等详细内容。

某些选项后面需要指定一个值,例如:-h 127.0.0.1 或者**--host=127.0.0.1**,表示向客户端程序指定MySQL服务器主机。

mysql -h 127.0.0.1

mysql --host=127.0.0.1

对于长格式选项,通常用=符号分隔选项名称和值,对于带值的短选项,选项值可以紧跟在选项之后,也可以通过空格隔开,但是对于密码选项的短格式,如果要指定密码,选项与值之间不能有空格。

mysql -ptest;test表示密码,但是没有标明具体想要访问的数据库

mysql -p test:这里test表示要访问的数据库,但没有写密码。

在命令行中,第一个不带破折号的值被解析为要访问的数据库名字 ,所以**--database**一般可以省略。

我还可以mysql -u root lottery_system -p;这样写,有的人会问,不是说的第一个不带破折号的值被当成数据库吗,为什么root没有被当成数据库?

其实这是因为在选项中,选项+值是一组,-u是选项,而root是它的值。这是一组。

在选项名称中,破折号(-)和下划线(_)大多数情况是可以互换使用的,但前导破折号不能转化为下划线,例如:--skip-grant-tables和--skip_grant_tables是等价的

对于采用数值的选项,数值后面还可以跟后缀K,M,G表示乘以1024,1024^2,1024^3。

最后再介绍一个选项:--execute(- e)选项与mysql一起使用时,表示将一个或多个sql语句发送给服务器并显示结果。

选项(配置)文件:

大多数的MySQL程序可以从选项文件(配置文件)中读取启动选项,也可以在选项文件中指定常用选项,这样就不用每次运行程序时都在命令行中输入他们,大部分选项文件都是纯文本格式,可以使用任何文本编辑器创建

选项**--defaults-file**指定自定义的配置文件路径,客户端程序会读取应用许选项文件中的相关配置。

mysql是一个软连接,指向后面那个路径文件,但是最终的配置文件是mysql.cnf

mysql是一个客户端-服务端的程序,它既有客户端配置文件,也有服务端配置文件

客户端配置文件:

服务端配置文件:

虽然把客户端和服务端的配置文件都做了区分,但是我们一般不会分别在对应的配置文件中配置,而是把所有的配置文件都写在默认的配置文件中,便于维护和管理

上面的my.cnf就是默认配置文件,但最终配置的是mysql.cnf,如果不指定配置文件路径,就会读取默认的配置文件。

选项文件的加载顺序:

mysql会按照下面的顺序查找并读取选项配置文件,如果不存在则需要手动创建。

在linux系统上面:

|------------------------|-----------------------------------------|
| 文件名 | 说明 |
| /etc/my.cnf | 全局 |
| /etc/mysql/my.cnf | 全局 |
| $MYSQL_HOME/my.cnf | 服务器待定选项(仅限服务器) |
| defaults-extra-file | 如果存在其他选项文件可以通过--defaults-extra-file选项指定 |
| ~/.my.cnf | 用户特定选项 |
| ~/.mylogin.cnf | 用户特定的登录路径选项(仅限客户端) |
| DATADIR/mysql-auto.cnf | 系统变量(仅限服务器) |

读取顺序:从上到下,最上面的最先读取,最下面的最后读取。

优先级:最上面的优先级最低,最下面的优先级最高,因为后面读取的配置内容会覆盖之前读取的配置

--defaults-extra-file 和**--defaults-file**这两个有什么区别吗?

**--defaults-extra-file:**在默认的搜索路径之前,额外读取指定的配置文件,即先读取该参数指定的配置文件,然后读取默认搜索路径的配置文件。(默认搜索路径的配置文件会覆盖指定的配置文件的值)

**--defaults-file:**只读取指定的配置文件,忽略默认搜索路径下的所有其他配置文件

选项文件的语法:

选项文件中指定选项时,省略前两个前导破折号,并且选择每一行表示一个选项。

例如--quick和--host=127.0.0.1在选项文件中应表示成quick和host=127.0.0.1

选项文件中的空行会被忽略,非空行可以采取下面的任何形式:

#comment,;comment

注释是#或;开头,注释可以从中间一行开始

【group】节点

设置选项的程序或者组的名称,不区分大小写,如果选项组名称与程序名称相同,则组中选项就是专门针对应用于该程序。比如【mysqld】适用于mysqld服务端的程序,【mysql】适用于mysql客户端程序。

opt_name=value

选项名对应的值,可以只用转义序列\b,\t,\n,\r等来表示退格符,制表符,换行符,回车符。

【client】这个节点可以被所有客户端程序访问,除了mysqld,我在client节点里配置了用户名和密码,这样就可以登录mysql不用输入密码。还设置了编码集

但是如果我后面又加入了【mysql】节点,那么当启动mysql的时候,还是需要输入密码,因为【mysql】的节点在【client】后面才访问,会覆盖【client】里面的值。

在选项文件中使用!include指令可以包含其他的选项文件,例如图里面第一二句。

后面的是一个目录文件,但不保证目录文件的读取顺序。

相关推荐
尘土哥21 分钟前
Mysql 索引下推(Index Condition Pushdown, ICP)详解
sql·mysql
xiaobin8899926 分钟前
PowerDesigner安装教程(附加安装包)PowerDesigner详细安装教程PowerDesigner 16.6 最新版安装教程
数据库·其他
程序员是干活的36 分钟前
Java EE前端技术编程脚本语言JavaScript
java·大数据·前端·数据库·人工智能
wei3872452321 小时前
集训总结2
java·数据库·mysql
t_hj1 小时前
Scrapy
前端·数据库·scrapy
种树达人2 小时前
数据库常用DDL语言
java·数据库·oracle
Gauss松鼠会2 小时前
华为云DRS实现Oracle到GaussDB数据库迁移的全流程技术方案
数据库·sql·安全·华为云·database·gaussdb
可涵不会debug3 小时前
AI浪潮涌,数据库“融合智能”奏响产业新乐章
数据库·人工智能
wei_shuo3 小时前
融合与智能:AI 浪潮驱动下数据库的多维度进化与产业格局重塑新范式
数据库·人工智能·金仓数据库
Fireworkitte3 小时前
Java 常用数据库详解
java·数据库