资讯动态

Mysql Server配置详解

发布时间:2026/10/27 2:00:46 来源:尧图企业网站定制
1. 概念及作用多数Mysql程序能从选项文件(有时也称为配置文件)中读取启动选项。运行Mysql程序时,为了避免在命令行输入选项可在选项文件中设置这些选项。如果想知道一个程序是否读取选项文件可以用--help选项运行该程序(mysqld用--verbose和--help二者缺一不可。)。如果该程序读取选项文件,返回的信息会指示寻找的文件及选项组。--注:1运行mysql --no-defaults只读取.mylogin.cnf文件。2选项文件是文本编辑器创建的纯文本文件但包含”登录路径login path“选项的.mylogin.cnf是个例外该文件为mysql_config_editor工具创建的加密文件。3“登录路径(login path)”选项组只允许设置某些选项例如:host,user,password,port和socket等选项。4客户端程序通过.mylogin.cnf中的--login-path选项读取登录路径。5当设置其他登录路径文件名时,可以设置MYSQL_TEST_LOGIN_FILE环境变量mysql-test-run.pl测试工具会使用该变量但mysql_config_editor和mysql客户端像mysql,mysqladmin等,也可以识别和使用该变量。2. 查找顺序Mysql会按如下列出的顺序寻找并读取选项文件如果不存在可以用相应工具进行创建。1Windows上,Mysql程序会按如下顺序寻找选项文件并从中读取启动选项(从前向后按序寻找和读取)。a) %WINDIR%\my.ini%WINDIR%\my.cnf 全局选项b) C:\my.iniC:\my.cnf 全局选项c) BASEDIR\my.iniBASEDIR\my.cnf 全局选项d) defaults-extra-file defaults-extra-file选项确定的文件e) %APPDATA%\MySQL\.mylogin.cnf 登录路径选项仅客户端--注1%WINDIR%表示Windows系统目录其一般为“C:\windows”可用如下命令查看%WINDIR%的具体值:C:\ echo %WINDIR%。2%APPDATA%表示Windows应用数据目录,可用如下命令查看%APPDATA%的具体值:C:\ echo %APPDATA%3BASEDIR表示Mysql安装目录。当用mysql installer安装Mysql5.7时其典型安装目录为“C:\Program Files\MySQL\MySQL 5.7 Server”。2Unix和类Unix系统上Mysql程序按如下顺序查找选项文件并从中读取启动选项从前向后按序寻找和读取--注1Unix系统上处于安全考虑Mysql会忽略拥有通用写权限的选项文件。a) /etc/my.cnf 全局选项b) /etc/mysql/my.cnf 全局选项c) SYSCONFDIR/my.cnf 全局选项d) \$MYSQL_HOME/my.cnf 针对服务器特定的选项仅服务器e) defaults-extra-file defaults-extra-file选项确定的文件f) ~/.my.cnf 针对用户特定的选项h) ~/.mylogin.cnf 针对用户特定的登录路径login path选项仅客户端--注1SYSCONFDIR表示编译mysql时SYSCONFDIR选项设置的目录。默认为编译时设置安装目录下的etc目录。2MYSQL_HOME为包含服务器特定my.cnf文件所在目录的环境变量。如未设置MYSQL_HOME且通过mysqld_safe程序启动Mysql,则mysqld_safe将其设定为BASEDIR也就是Mysql的安装目录。3“~”表示当前用户的主目录$HOME的值。3. 语法及填写规则1) 如果某个选项在选项文件中被设置了多次则以最后一次为准,但对mysqld有个特例,处于安全考虑--user选项则以第一次设置值为准,这样可以防止选项文件中设置的用户被命令行覆盖掉。2选项文件的语法适用于手工编辑的文件。但不包括.mylogin.cnf其通过mysql_config_editor创建和加密。3运行mysql程序时可以在命令行设置的任何长选项,都可以在选项文件中设置。为了知道某个程序可用的选项,使用--help选项运行该程序mysqld必须用--verbose和--help两个选项。4选项文件中设置选项的语法与命令行语法类似。但选项文件中需要去掉选项名前面的两个破折号且每行只能设置一个选项。例如命令行的--quick和--hostlocalhost选项选项文件中应该分别在独立行中设置为quick和hostlocalhost。5选项文件中的空行将被忽略非空行可以为如下格式a#comment, ;comment注释行以#或;开始。一个#注释也可以在一行中间开始。b[group]group为程序名字或想为其设置选项的选项组名字。group行后,任何选项设置将会被应用于该group直到选项文件末尾或另一个group行被设置选项group名大小写不敏感。copt_name等同于--opt_name命令行选项。dopt_namevalue等同于--opt_namevalue命令行选项。选项文件中。“”旁边可以有空格但命令行则不行。e当选项值中包含“#”等特殊字符时需用单引号或双引号将选项值括起来。选项名及值前后的空格将被自动删掉。f选项值中可以用转义序列 \b、\t、\n、\r、\\、\s表示退格、tab、新行、回车、反斜杠和空格等。选项文件中,将适用下列转义规则• 反斜杠后跟一个有效序列字符被转换成序列表示的字符。例如\s被转换成空格。• 反斜杠后跟非有效转义序列字符将保持不变。例如:\S依然为\S。前述规则意味着文本反斜杠可以用\\表示,或当后面跟一个非有效转义序列字符时用\表示。g选项文件中的转义序列规则与SQL语句中文本串中的转义序列规则不同。后者中如果x不是一个有效的转义序列字符\x将变为x而非\x。选项值的转义规则尤其与Windows路径名相关其用\作为一个路径名分隔符。如果后面跟一个转义序列字符Windows路径名分隔符必须被写成\\否则可以写成\\\或/。选项文件中用“C:\Program Files\MySQL\MySQL Server 5.7”做基目录可以有多个方法设置。例如basedirC:\Program Files\MySQL\MySQL Server 5.7basedirC:\\Program Files\\MySQL\\MySQL Server 5.7basedirC:/Program Files/MySQL/MySQL Server 5.7basedirC:\\Program\sFiles\\MySQL\\MySQL\sServer\s5.7h如果选项组group名字和程序名字相同该选项组中的选项将用于该程序。例如选项组[mysqld]和[mysql]将分别应用于mysqld服务器和mysql客户端程序。i选项组[client]将被应用于Mysql发布版本中提供的所有客户端(但不包括mysqld)。用户可在选项组[client]中为所有客户端设置选项。例如[client]用于设置连接服务器的口令但一定注意选项文件权限控制以防口令泄露。除非某个选项能被所有客户端程序使用否则不要将该选项放于选项组[client]中 。如果某个程序不能识别该选项运行时将显示错误信息后退出。选项文件中,应将更通用的选项组放在前面而更特定的组放在后面。例如选项组[client]更通用而选项组[mysqldump]只被mysqldump读取后面确定的选项值将会覆盖前面确定的相同选项的值因此按照先[client]后[mysqldump]的顺序将使mysqldump特定选项覆盖[client]选项。如下为一个典型的全局选项文件[client]port3306socket/tmp/mysql.sock[mysqld]port3306socket/tmp/mysql.sockkey_buffer_size16Mmax_allowed_packet8M[mysqldump]quick如下为一个典型的用户选项文件[client]#下列password将送到所有标准Mysql客户端passwordmy password[mysql]no-auto-rehashconnect_timeout2j为了创建特定Mysql版本系列mysqld服务器读取的选项组可以用[mysqld-5.6], [mysqld-5.7]等名字的选项组。下列的选项组指示mysql 5.7.x版本的servers使用sql_mode设置[mysqld-5.7]sql_modeTRADITIONAL4. 嵌套方法及指令1选项文件中可通过!include指令包含其他选项文件还可以通过!includedir指令搜索特定目录中的选项文件。例如为了包含/home/mydir/myopt.cnf文件用如下指令!include /home/mydir/myopt.cnf为了搜索和读取/home/mydir目录中发现的选项文件用如下指令!includedir /home/mydir--注1mysql并不保证该目录中选项文件被读取的顺序。2Unix系统上!includedir设置目录中包含及被发现的选项文件都必须有以“.cnf”结尾。Windows系统中该指令将检查带“.ini”或“cnf”扩展名的文件。2被包含选项文件的内容与任何其他选项文件类似。即其应该包含选项组每个选项组以[group]行开始以设置这些选项所应用的程序。当处理被包含文件时仅当前程序寻找的选项组中的选项被使用其他选项组将被忽略假设my.cnf文件包含如下行!include /home/mydir/myopt.cnf且假设/home/mydir/myopt.cnf内容如下所示[mysqladmin]force[mysqld]key_buffer_size16M如果myopt.cnf被mysqld处理仅其中的选项组[mysqld]被用。如果文件被mysqladmin处理则仅选项组[mysqladmin]被用。如果文件被其他程序处理则/home/mydir/myopt.cnf中的选项都不被用。如果一个选项文件包含!include或!includedir指令当选项文件被处理时无论该指令出现于文件的什么位置该指令设置的文件都将被处理。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑