MySQL之启动选项

启动选项简介

当我们使用mysql客户端可执行文件连接mysql服务器时,需要指定IP地址、用户名及密码等信息,这些信息就是mysql客户端程序启动时的选项,通过这些选项可以连接到具体的mysql服务端上。

对于mysql服务端,在启动时可以指定同时连入的客户端数量、客户端/服务单的通信方式、表的默认存储引擎、查询缓存的大小等信息,

一般这些信息具有自己的默认值,同时连入的客户端数量默认是151,表的默认存储引擎是InnoDB,程序启动时可以修改这些默认值,在启动时指定的设置项被称为启动选项(startup option),启动选项决定了程序启动后的行为,

mysql安装bin目录下不论是客户端还是服务端的可执行程序,在启动的时候都可以在命令行后面填写对应的启动选项,也可以在配置文件中指定。

1. 命令行中指定启动选项

命令行中指定启动选项时,需要在选项前面增加 -- 前缀,如果选项名是多个单词组成的,则需要用短划线连接(- 或者 _ ),

启动选项的格式

--启动选项1[=值1] --启动选项2[=值2] ... --启动选项n[=值n]

禁用客户端/服务端网络通信

例如,禁止客户端使用TCP/IP与MySQL服务端进行通信的启动选项写法如下:

mysqld --skip-networking 或者 mysqld --skip_networking,前缀用--,多个单词使用了 -或_,二者是等价的,

使用了上面的命令后,mysql客户端将无法通过网络与服务端进行通信。

指定存储引擎

MySQL默认使用InnoDB作为表的存储引擎,如果默认需要使用MyISAM,可以用如下命令:

msyqld --default-storage-engine=MyISAM

启动选项注意事项

  1. 每个启动选项前面都需要加上--

  2. 不需要值的启动选项,只需要 --名字 即可

  3. 需要值的启动选项,需要在=号后面加上值,选项、=号、值,三者之间不能有空白字符

  4. 每个命令执行文件都可以通过 命令 --help 形式看到所支持的启动选项,例如 mysql --help(mysqld有些特殊,需要写成 mysqld --verbose --help)

选项的长形式和短形式

为了方便,启动选项一般都有一个单词的全写和一个字母的简写,绝大多数情况下,我们都会使用简写形式,常见的长短形式如下:

长形式短形式含义
--host-h主机名
--user-u用户名
--password-p密码
--port-P端口
--version-V版本信息

短形式的注意事项如下:

  1. 短形式只需要一个短划线

  2. 短形式,选项名和选项值可以没有间隙,也可以用空白字符隔开(-p比较特殊,必须和密码在一起)

  3. 区分大小写, -p和-P含义不同,需要注意

2. 配置文件中指定启动选项

在命令行中,每次启动都需要带上启动选项,如果选项过多是一件比较麻烦的事情,因此可以将选项写入到硬盘文件中,这样每次程序启动的时候读取配置文件中的选项就可以了。

配置文件的路径

MySQL服务端启动时,会在多个路径下寻找配置文件,这些路径是固定的,在不同的操作系统下,寻找文件的路径有所不同。

windows下的路径

windows查找路径如下:

路径名备注
%WINDIR%\my.ini,%WINDIR%\my.cnf
C:\my.ini,C:\my.cnf
BASEDIR\my.ini,BASEDIR\my.cnf
defaults-extra-file在命令行中指定的路径
%APPDATA%\MySQL.mylogin.cnf登录路径选项(进客户端使用)
  1. 在表格的前三个路径中,配置文件可以是.ini结尾,也可以是.cnf结尾

  2. %WINDIR% 是Windows目录的位置,通常是 C:\WINDOWS,可以使用 echo %WINDIR% 查看

  3. BASEDIR 是MySQL的安装目录,例如: C:\Program Files\MySQL\MySQL Server5.7

  4. defaults-extra-file 指的是可以在 mysqld 启动时指定配置文件路径,例如 mysqld --defaults-extra-file=配置文件路径

  5. %APPDATA% 表示 Windows 应用程序数据目录的值,可以用 echo %APPDATA% 的命令查看

  6. .mylogin.cnf 用于存储客户端连接服务器的选项(host、user、password、port、socket等),仅被客户端使用,并且其并不是一个纯文本文件,而是使用 mysql_config_editor 工具创建的加密文件,该工具在安装目录的bin目录下

Linux下的路径

路径名备注
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cnf特定于服务器的选项 (仅限服务器)
defaults-extra-file命令行指定的额外配置文件路径
~/.my.cnf特定于用户的选项
~/.mylogin.cnf特定于用户的登录路径选项(仅限客户端)
  1. SYSCONFDIR 表示在使用 CMake 构建 MySQL 时使用 SYSCONFDIR 选项指定的目录

  2. MYSQL_HOME 是一个环境变量,该环境变量由用户自己设置,该目录下可以放置启动MySQL服务端相关的启动选项(除 ./mylogin.cnf 和 $MYSQL_HOME/my.cnf 两个文件,其他文件既可以存放服务端相关也可以存放客户端相关的启动选项)

  3. 如果使用 mysqld_safe 启动MySQL服务端,此时并没有指定 MYSQL_HOME 环境变量,那么该值将被自动设置为 MySQL 的安装目录

  4. ~ 符号在Linux系统下代表当前用户的用户目录,一个系统可以有多个用户,不同的用户可以配置自己的.my.cnf和.my.login.cnf

  5. defaults-extra-file 与Windows中的描述一样,启动时的命令行选项

  6. .mylogin.cnf与Windows中的描述也是一致

mysqld_safe程序启动服务端程序时,会调用mysqld,如果使用 mysqld_safe 命令时带的选项,mysqld_safe 处理不了,将交给 mysqld 处理,

例如 msyqld_safe --skip-networking , --skip-networking 将交给 mysqld 处理。

配置文件内容

配置文件中的启动项被划分为若干个组,每个组有一个组名,用中括号[]扩起来,如下:

[server]
(具体的启动选项...)
option1             #配置项1,该选项不需要选项值
option2 = value2    #配置项2,该选项需要选项值

[mysqld]
(具体的启动选项...)

[msyqld_safe]
(具体的启动选项...)

[client]
(具体的启动选项...)

[mysql]
(具体的启动选项...)

[mysqladmin]
(具体的启动选项...)

复制代码
  1. 在配置文件中的,选项明必须是长形式,不可以写成短形式

  2. 配置文件中的启动选项不可以加--前缀,并且每行只能有一个选项

  3. =等号周围可以有空白字符,命令行中是不可以有的

  4. 配置文件中,可以使用#号作为注释

不同的选项做提供给不同的程序使用,如果选项组的名称与程序相同,那么组中的选项将专门用于该程序。

  1. [mysqld]和[mysql]组专门应用于mysqld服务器程序和mysql客户端程序

  2. [server]组与[client]组较为特别,前者的启动项用于所有的服务端程序,后者的启动项用于所有的客户端程序

程序名类别能读取的组
mysqld启动服务器[mysqld]、[server]
mysql_safe启动服务器[msyqld]、[server]、[msyqld_safe]
mysql.server启动服务器[msyqld]、[server]、[mysql.server]
mysql启动客户端[mysql]、[client]
mysqladmin启动客户端[mysqladmin]、[client]
mysqldump启动客户端[mysqldump]、[client]

例如,linux系统下,在 /etc/mysql/my.cnf 中添加如下内容:

[server]
skip-networking
default-storage-engine=MyISAM
复制代码

随后使用 mysqld 命令启动服务端时,虽然命令行中没有添加选项,但是MySQL也会去上面的文件中找到配置文件中的server组下的选项,使其生效,当然如果上面两个选项如果写到[client]组中,则不会生效了。

选项指定版本号

选项后面可以加上一个 -版本号,借此可以让特定版本的mysqld程序才可以读取该配置,例如:

[mysqld-5.7]
选项.....
复制代码

只有mysql5.7服务端启动才能使用上面的选项。

配置文件优先级

MySQL根据路径的先后顺序读取配置文件,并且配置选项以后面的文件为准,即后面出现的选项会覆盖前面的选项,读取顺序见上文表格中的顺序。

同一配置文件多个组的优先级

与路径一样,相同的选项,后面出现的组会覆盖前面出现的组。

配置文件中的选项和命令行中的选项优先级

命令行中附带的选项会覆盖配置文件中的。

default-file

该选项可以在mysql服务端启动时指定,这样mysql就不会去上文表格中的路径中查找配置文件,而是使用该选项指定的配置文件,如果指定的文件不存在,将发生错误。

mysqld --default-file=/tmp/myconfig.txt

default-filedefault-extra-file的区别是指定前者,mysql将不会去其他路径下查找配置文件,后者则会继续查找。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值