mysql 程序概述(基础且重要)

MySQL AB提供了几种类型的程序:

1. MYSQL服务器和服务器启动脚本:

  • mysqld 是MySQL服务器
  • mysqld_safe、mysql.server 和 mysqld_multi 是服务器启动脚本
  • mysql_install_db 初始化数据目录和初始数据库

2. 访问服务器的客户程序:

  • mysql 是一个命令行客户程序,用于交互式或以批处理模式执行 SQL 语句。
  • mysqladmin 是用于管理功能的客户程序。
  • mysqlcheck 执行表维护操作。
  • mysqldump 和 mysqlhotcopy 负责数据库备份。
  • mysqlimport 导入数据文件。
  • mysqlshow 显示信息数据库和表的相关信息。

3. 独立于服务器操作的工具程序:

  • myisamchk 执行表维护操作。
  • myisampack 产生压缩、只读的表。
  • mysqlbinlog 是处理二进制日志文件的实用工具。
  • perror 显示错误代码的含义。

大多数MySQL分发包括上述的全部程序,只是不包含那些与平台相关的程序。(例如,在Windows中不使用服务器启动脚本)。不同的只是RPM分发更加具体化。

调用 Mysql 程序

要想从命令行调用MySQL程序(即从shell或命令提示),应输入程序名,并随后输入指导操作的选项或其它参量。

下面的命令显示了一些程序调用的例子。“shell>”表示命令解释符提示;并不是输入的部分。你所看见的具体提示取决于命令解释符。

典型提示符:sh或bash为$,csh或tcsh为%,Windows command.com或cmd.exe为C:>。

shell> mysql test
shell> mysqladmin extended-status variables
shell> mysqlshow --help
shell> mysqldump --user=root personnel

选项参量:以破折号开始的参数为选项参量。它们通常指定程序与服务器的连接类型或影响其操作模式。

非选项参数:不以破折号开始的参量。可以为程序提供更详细的信息。
例如,mysql 程序将第一个非选项参量解释为数据库名,因此命令 mysql test表示你想要使用test数据库。

指定程序选项

可以用几种方式提供MySQL程序的选项:

  • 在命令行中在程序名后面提供。这对于具体程序调用时使用的选项很普遍。
  • 在程序启动时读取的选项文件中设置。这对于每次程序运行时使用的选项很普遍。
  • 在环境变量中设置。这对每次程序运行时所使用的选项很有用,尽管实际上最常用选项文件。

MySQL程序首先检查环境变量,然后检查选项文件,然后检查命令行来确定给出了哪些选项。指定多个,以最高优先级为准,也就是命令行形式。

1. 命令行

在命令行中指定的程序选项遵从下述规则:

  • 在命令名后面紧跟选项。

  • 选项参量以一个和两个破折号开始,取决于它具有短名还是长名。
    许多选项有两种形式。例如,-?和–help是指导MySQL程序显示帮助消息的选项的短名和长名。

  • 选项名对大小写敏感。-v和-V均有效,但具有不同的含义。(它们是–verbose和–version选项的短名)。

  • 部分选项在选项名后面紧随选项值。
    例如,-h localhost 或 --host=localhost 表示客户程序的 MySQL 服务器主机。选项值可以告诉程序MySQL 服务器运行的主机名。

  • 对于带选项值的长选项,通过一个‘=’将选项名和值隔离开来。对于带选项值的短选项,选项值可以紧随选项字母后面,或者二者之间可以用一个空格隔开。(-hlocalhost和-h localhost是等效的)。该规则的例外情况是指定 MySQL 密码的选项。该选项的形式可以为 --password=pass_val 或 --password。在后一种情况(未给出 密码值),程序将提示输入密码。也可以给出密码选项,短形式为 -ppass_val 或
    -p。然而,对于短形式,如果给出了 密码值,必须紧跟在选项后面,中间不能插入空格。这样要求的原因是如果选项后面有空格,程序没有办法来告知后面的参量是 密码值还是其它某种参量。因此,下面两个命令的含义完全不同:

shell> mysql -ptest
shell> mysql -p test

第一个命令让 mysql 使用密码 test,但没有指定默认数据库。第二个命令让 mysql 提示输入 密码并使用 test 作为默认数据库。

部分选项可以控制开关的行为。例如,mysql 客户端支持 --column-names 选项,确定是否在查询结果开头显示一行栏目名。默认情况,该选项被启用。但是可能在某些情况下你想要禁用它,例如将 mysql 的输出发送到另一个只希望看到数据而不希望看到开始的标题行的程序中。

要想禁用列名,可以使用下面的形式来指定选项:

--disable-column-names
--skip-column-names
--column-names=0

–disable和–skip前缀与=0后缀的效果相同:它们均关闭选项。

可以用下述方法“启用”选项:

--column-names
--enable-column-names
--column-names=1

如果选项有前缀–loose,如果程序未识别出选项不会提示错误退出,但是会发出一条警告:

shell> mysql --loose-no-such-option
mysql: WARNING: unknown option '--no-such-option'

当你从安装了多个MySQL的同一台机器上运行程序时,–loose前缀会很有用。当你在一个选项文件中列出选项时,该前缀会特别有用。有可能不能被程序的所有版本识别的选项可以冠以–loose前缀(或在选项文件中用loose)。不能识别选项的程序版本将会发出一条警告并忽视该选项。

对mysql 偶尔有用的另一个选项是 -e 或 --execute 选项,可用来将SQL语句传递给服务器。该语句必须用引号引起来(单引号或双引号)。(然而,如果想要在查询中将值引起来,则对于查询应使用双引号,查询中引用的值应使用单引号)。当使用该选项时,语句被执行,然后mysql立即退出命令外壳。

例如,你可以用下面的命令获得用户账户列表:

shell> mysql -u root -p -e "SELECT User, Host FROM User" mysql
Enter password: ******
+------+-----------+
| User | Host      |
+------+-----------+
|      | gigan     |
| root | gigan     |
|      | localhost |
| jon  | localhost |
| root | localhost |
+------+-----------+
shell>

请注意mysql数据库名作为一个独立的参量传递。然而,相同的查询可能已经使用 mysql -u root -p -e “SELECT User,Host FROM mysql.User” 从外壳中执行。

可以按这种方式传递多个SQL语句,用分号隔开:

shell> mysql -u root -p --execute="SELECT Name FROM Country WHERE Name LIKE 'AU%';SELECT COUNT(*) FROM City" world
Enter password: ******
+-----------+
| Name      |
+-----------+
| Australia |
| Austria   |
+-----------+
+----------+
| COUNT(*) |
+----------+
|     4079 |
+----------+

请注意长形式(–execute)后面必须紧跟一个等号(=)。

-e选项也可以以类似方式用来将命令传递给MySQL簇的ndb_mgm管理客户端。

2. 选项文件方式(也称为配置文件)

MySQL 程序可以从选项文件(有时也称为配置文件)读取启动选项。选项文件提供了一种很方便的方式来指定常用的选项,因此不需要每次运行程序时从命令行输入。

下面的程序支持选项文件:myisamchk、myisampack、mysql、mysql.server、mysqladmin、mysqlbinlog、mysqlcc、mysqlcheck、mysqld_safe、mysqldump、mysqld、mysqlhotcopy、mysqlimport和mysqlshow。

多种选项文件

和 大多数配置文件一样,类似于 spring boot 的 application 文件。
在这里插入图片描述

WINDIR表示Windows目录的位置。通常为C:\WINDOWS或C:\WINNT。你可以使用下面的命令通过环境变量WINDIR的值确定其确切位置:

C:\> echo %WINDIR%

在这里插入图片描述

MySQL按照上述顺序寻找选项文件,并读存在的选项文件。

如果想要使用的某个选项文件不存在,则用明文文本编辑器创建。如果存在多个选项文件,文件中指定的后读取的选项要优先文件中指定的先读取的选项。

注意:
在Unix平台上,MySQL忽略人人可写的配置文件。这是故意的,是一个安全措施。

任何可以在运行MySQL程序时在命令行给出的长选项也可以在选项文件中给出。要想列出程序的适用选项,用 --help 选项运行程序。

注意:选项文件中的命令比长命令少两个 破折号 –
例如:命令行中的 --quick 或 --host=localhost 在选项文件中应指定为 quick 或 host=localhost,要想在选项文件中指定 --loose-opt_name 形式的选项,应写为 loose-opt_name。

选项文件书写
  • #号 代表注释行
  • [group] :group是你想要设置选项的程序名或组名。在组行后面,任何 opt_name 或 set-variable 行属于该组名,直到选项文件结尾或给出其它组行。
  • opt_name:等价于命令行中的–opt_name。
  • opt_name=value:等价于命令行中的–opt_name=value。在选项文件中,‘=’字符附近可以有空格,而在命令行中是不允许的。
    选项名和值前后的空白将自动删除掉。你可以在选项值中使用转义序列‘\b’、‘\t’、‘\n’、‘\r’、‘\’以及‘\s’来表示退格、tab、换行符、回车以及空格字符。

如果选项组名与程序名相同,则组内的选项专用于该程序。

注意:
所有客户程序(除了mysqld)都能读取[client]选项组。这样允许你指定适用于所有客户端的选项。例如,[client]是用于指定连接服务器的 密码的理想的组。(但应确保该选项文件只能由你自己读写,以便其他人不能发现你的密码)。
一定不要随意在[client]组内放置选项,除非它可以被你使用的所有客户程序识别。如果你试图运行程序,如果程序不理解选项则会显示一条错误消息后退出。

选项文件引入别的选项文件

配置类文件惯用的套路,在一个配置文件中,如果别的位置的配置文件。例如 spring 的 beans.xml 配置就有。

从5.0系列的MySQL 5.0.4开始,可以在选项文件中使用 !include 指令来包括具体文件和 !includedir 来搜索选项文件的具体目录。例如,要包括文件/home/mydir/myopt.cnf,可以使用:

!include /home/me/myopt.cnf

要搜索所有以.cnf结尾的文件的目录/home/mydir并作为选项文件读取,应使用:

!includedir /home/mydir

请注意这些选项与组有关。例如,假定你想要使用my.cnf中的某些内容,如下所示:

[mysqld]
!include /home/mydir/myopt.cnf

在这种情况下,只为该服务器处理文件 myopt.cnf,并且 !include 指令将被客户应用程序忽略。

然而,如果你使用下面的部分:

[mysqldump]
!includedir /home/mydir/my-dump-option

则只有 mysqldump 在 /home/mydir/my-dump-option目录中找 .cnf 结尾的文件,服务器或其它客户应用程序均不检查。

目前,在Unix操作系统中,所发现的使用!includedir指令包括的文件的文件名必须以.cnf为扩展名。

如果你想要创建只由一个具体mysqld服务器发布系列读取的选项组,选项组可以用[mysqld-5.0]、[mysqld-5.1]等名称。下面的组表示–new选项只能用于5.1.x 版本的MySQL服务器:

[mysqld-5.1]
new
选项文件例子

下面是一个典型的全局选项文件:

[client]
port=3306
socket=/tmp/mysql.sock
 
[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
 
[mysqldump]
quick

下面是一个典型的用户选项文件:

[client]
# The following password will be sent to all standard MySQL clients
password="my_password"
 
[mysql]
no-auto-rehash
connect_timeout=2
 
[mysqlhotcopy]
interactive-timeout
命令行对选项文件的操作

类似于 java 项目发布的时候使用命令来决定让哪个配置文件生效。

所有支持选项文件的MySQL程序可以处理下面的 命令行 选项:

  1. 不读取任何选项文件:
--no-defaults
  1. 打印从选项文件中获得的程序名和所有选项。
 --print-defaults
  1. 只使用给出的选项文件。path_name是文件的全路径名。
 --defaults-file=path_name
  1. 在全局选项文件后但在用户选项文件前读该选项文件。path_name是文件的全路径名。
--defaults-extra-file=path_name

注意: 为了正确工作,每个选项必须紧随命令行中的命令名后,例外情况是–print-defaults可以紧随–defaults-file或–defaults-extra-file。

分析选项文件(非常重要)

在shell脚本中,可以使用my_print_defaults程序来分析选项文件。
下面的例子显示了当要求显示[client]和[mysql]组内发现的选项时my_print_defaults产生的输出:

shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash

3. 使用环境变量设置选项

4. 使用选项设置程序变量

许多MySQL程序有一些内部变量可以在运行时设置。程序变量的设置与带有值的其它长选项相同。例如,mysql有一个max_allowed_packet变量,可以控制其通信缓冲区的最大长度。要想为mysql将max_allowed_packet变量的值设置为16MB,使用下面的任何一个命令:

shell> mysql --max_allowed_packet=16777216
shell> mysql --max_allowed_packet=16M

第1个命令以字节指定值。第2个命令以兆字节指定值。变量值可以有一个后缀K、M或者G(可以为大写或小写)来表示千字节、兆字节或者十亿字节的单位。

在选项文件中,变量设定值没有引导破折号:

[mysql]
max_allowed_packet=16777216

或:

[mysql]
max_allowed_packet=16M

如果你喜欢,变量名的下划线可以为破折号。

小结

这些所谓的程序可以当做是一个函数。选项就是函数参数。有 - 的选项就是枚举类型参数,没有 - 的参数就是类型参数。
参数可以调用的时候指定,或者调用的手读取配置文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值