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指令可以包含其他的选项文件,例如图里面第一二句。
后面的是一个目录文件,但不保证目录文件的读取顺序。