MySQL的命令行客户端

发布于:2025-07-25 ⋅ 阅读:(19) ⋅ 点赞:(0)

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

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


网站公告

今日签到

点亮在社区的每一天
去签到