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指令可以包含其他的选项文件,例如图里面第一二句。

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

相关推荐
异世界贤狼转生码农2 小时前
MongoDB Windows 系统实战手册:从配置到数据处理入门
数据库·mongodb
QuZhengRong2 小时前
【数据库】Navicat 导入 Excel 数据乱码问题的解决方法
android·数据库·excel
码农阿豪2 小时前
Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南
数据库·windows
冷崖7 小时前
MySQL异步连接池的学习(五)
学习·mysql
时序数据说7 小时前
时序数据库市场前景分析
大数据·数据库·物联网·开源·时序数据库
听雪楼主.11 小时前
Oracle Undo Tablespace 使用率暴涨案例分析
数据库·oracle·架构
我科绝伦(Huanhuan Zhou)11 小时前
KINGBASE集群日常维护管理命令总结
数据库·database
妖灵翎幺11 小时前
Java应届生求职八股(2)---Mysql篇
数据库·mysql
HMBBLOVEPDX11 小时前
MySQL的事务日志:
数据库·mysql
weixin_4196583113 小时前
MySQL数据库备份与恢复
数据库·mysql