Loading... <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:宋体"><span style="line-height:1"><strong>MySQL</strong></span><span style="line-height:1"><strong>手册</strong></span></span><span style="font-size:10.5pt;font-family:Inconsolata"><span style="line-height:1"><strong>文档版本</strong></span><span style="line-height:1"><strong>:5.6 </strong></span></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:宋体;line-height:1"><strong>章节:</strong></span><span style="font-size:10.5pt;font-family:Inconsolata;line-height:1"><strong>4.2 Using MySQL Programs </strong></span><span style="font-size:10.5000pt;font-family:'宋体'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1"><strong>略去了部分</strong></span><span style="line-height:1"><strong>windows</strong></span><span style="line-height:1"><strong>下使用</strong></span><span style="line-height:1"><strong>mysql</strong></span><span style="line-height:1"><strong>的相关的说明</strong></span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1"><strong>译者:古二娃</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1"><strong>时间:</strong></span><span style="line-height:1"><strong>2015-03-15</strong></span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1"><strong>章节目录:</strong></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1"> </span> </p> <pre class="prettyprint lang-js">4.2 Using MySQL Programs 4.2.1 Invoking MySQL Programs 4.2.2 Connecting to the MySQL Server 4.2.3 Specifying Program Options 4.2.3.1 Using Options on the Command Line 4.2.3.2 Program Options Modifiers 4.2.3.3 Using Option Files 4.2.3.4 Command-Line Options that Affet Option-File Handling 4.2.3.5 Using Options to Set Program Variables 4.2.3.6 Option Defaults, Options Expecting Values, and the = Sign 4.2.4 Setting Environment Variables</pre> <pre class="prettyprint">4.2 使用MySQL程序 4.2.1 调用MySQL程序 4.2.2 连接MySQL服务器 4.2.3 设定程序选项 4.2.3.1 在命令行中设定选项 4.2.3.2 选项修正 4.2.3.3 使用配置文件 4.2.3.4 影响配置文件使用的选项 4.2.3.5 使用选项设置程序变量 4.2.3.6 选项默认参数值 4.2.4 设置MySQL相关环境变量</pre> <h2> <span style="font-size:16pt;font-family:Arial;line-height:1">4.2 Using MySQL Programs </span><span style="font-size:16pt;font-family:Inconsolata"></span><br /> </h2> <h3> <span style="font-size:16pt;font-family:'Times New Roman';line-height:1">4.2.1 Invoking MySQL Programs</span><span style="font-size:16pt;font-family:'Times New Roman'"></span><br /> </h3> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">MySQL</span><span style="line-height:1">提供了很多程序,如下示例显示了如何在</span><span style="line-height:1">shell</span><span style="line-height:1">中调用</span><span style="line-height:1">MySQL</span><span style="line-height:1">程序:</span></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --user=root test shell> mysqladmin extended-status variables shell> mysqlshow --help shell> mysqldump -u root personnel</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">有一些选项是通用的,最常用的有:</span> </p> <pre class="prettyprint lang-bsh">--host(-h) #连接的主机 --user(-u) #用户名 --password(-p) #密码 --port(-P) #MySQL服务程序端口号 --socket(-S) #本地登录可指定Uinx域的socket文件(在windows系统为named pipe文件)</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果在安装好</span><span style="line-height:1">mysql</span><span style="line-height:1">客户端程序后,直接输入</span><span style="line-height:1">mysql</span><span style="line-height:1">,却出现错误提示</span><span style="line-height:1">“program not found”.</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">则可能是因为</span><span style="line-height:1">mysql</span><span style="line-height:1">程序所在的路径,还没有加入到</span><span style="line-height:1">PATH</span><span style="line-height:1">环境变量之中,如何设定在</span><span style="line-height:1">4.2.4</span><span style="line-height:1">小节中会有所提及。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">也可以使用全路径名的方式可以启动</span><span style="line-height:1">mysql</span><span style="line-height:1">客户端,例如:</span><span style="line-height:1">/usr/local/mysql/bin/mysql -u test -p </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <h3> <span style="font-size:16pt;font-family:'Times New Roman';line-height:1">4.2.2 Connecting to the MySQL Server</span><span style="font-size:16pt;font-family:'Times New Roman'"></span><br /> </h3> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">mysql</span><span style="line-height:1">的客户端程序有很多,如:</span><span style="line-height:1">mysql, mysqldump, mysqladmin, mysqlshow</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">这里所说的规则对于这些客户端程序是通用的。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果不加任何的连接选项,直接调用</span><span style="line-height:1">mysql</span><span style="line-height:1">客户端</span><span style="line-height:1">, </span><span style="line-height:1">实际上使用的是连接选项中预设的默认值。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <pre class="prettyprint lang-bsh">shell> mysql </pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">分别有:</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <pre class="prettyprint">1,--host=localhost 2,--user=login_name(Unix系统,默认使用登陆名。windows系统,默认名为ODBC) 3,如果没有给出-p或--password选项,即表示no password is given,没有默认的密码。 4,对于mysql客户端,第一个非选项的参数被视为默认的库名。如果没有提供,mysql不会选择任何库 作为默认库。</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">而我们一般要自己指定这些连接选项的值,选项有完全形式和简写形式:</span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host=localhost --user=myname --password=mypass mydb shell> mysql -h localhost -u myname -pmypass mydb</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">要注意,密码选项提示符后没有空格。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">另外,登陆密码最好是不要这样写出来,可能会泄露。如果你系统上的其他登录用户,使用</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">ps auxw</span><span style="line-height:1">命令,可能就能看到你写的密码。</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">你可以这样写:</span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host=localhost --user=myname --password mydb shell> mysql -h localhost -u myname -p mydb</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">然后看到提示符,等你输入密码,输入的密码不会显示出来的。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在一些系统上面,有可能要求你输入的密码不能多于</span><span style="line-height:1">8</span><span style="line-height:1">个字符,这跟</span><span style="line-height:1">MySQL</span><span style="line-height:1">本身的限制无关,只不过</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在验证登录这个环节,</span><span style="line-height:1">mysql</span><span style="line-height:1">客户端程序使用了系统的库程序,这是库程序的限制。可以将密码写入配置文件,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">以避免此问题。当然修改密码的长度也是可以的。</span> </p> <p class="p0"> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在</span><span style="line-height:1">Unix</span><span style="line-height:1">系统上面,</span><span style="line-height:1">MySQL</span><span style="line-height:1">对于</span><span style="line-height:1">host=localhost</span><span style="line-height:1">的情况有比较特殊的处理。这时不会建立到本机的</span><span style="line-height:1">tcp</span><span style="line-height:1">连接,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">而是尝试使用</span><span style="line-height:1">Unix socket file</span><span style="line-height:1">去连接本地的</span><span style="line-height:1">MySQL</span><span style="line-height:1">服务程序,即使使用</span><span style="line-height:1">–port</span><span style="line-height:1">指定了端口号也是如此。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果一定要建立</span><span style="line-height:1">tcp</span><span style="line-height:1">连接,可使用如右所示的一种:</span><span style="line-height:1">–host=127.0.0.1</span><span style="line-height:1">,</span><span style="line-height:1">–host=hostname, –host=IPADDR</span><span style="line-height:1">。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">或者指定</span><span style="line-height:1">–protocol=TCP</span><span style="line-height:1">,可达到一样的效果,这时即使</span><span style="line-height:1">–host=localhost</span><span style="line-height:1">,也会建立</span><span style="line-height:1">tcp</span><span style="line-height:1">连接。</span></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host=127.0.0.1 shell> mysql --protocol=TCP</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">mysql</span><span style="line-height:1">客户端会首选使用</span><span style="line-height:1">–protocol</span><span style="line-height:1">选项指定的连接方式,与其他选项所默认的连接方式有不同的话,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">以</span><span style="line-height:1">–protocol</span><span style="line-height:1">指定的为准。</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">IPv6</span><span style="line-height:1">的地址示例:</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">host=::1. </span><span style="line-height:1">详见</span><span style="line-height:1">Section 5.1.9 “IPv6 Support”</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">使用</span><span style="line-height:1">mysql</span><span style="line-height:1">客户端访问远程服务器</span><span style="line-height:1">,</span><span style="line-height:1">只能以建立</span><span style="line-height:1">tcp</span><span style="line-height:1">连接的方式访问,默认端口号</span><span style="line-height:1">3306:</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host=remote.example.com</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">当端口号不是默认的</span><span style="line-height:1">3306</span><span style="line-height:1">时,也可指定端口号如</span><span style="line-height:1">–port=13306 </span><span style="line-height:1">或者 </span><span style="line-height:1">-P 13306</span><span style="line-height:1">:</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host=remote.example.com --port=13306</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">访问本地服务器时,你也可指定端口号,但你需要强制使用</span><span style="line-height:1">TCP/IP</span><span style="line-height:1">方式访问。否则你所指定的端口号会被忽略。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">如下是不可行的:</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --port=13306 --host=localhost</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">可以使用这样的方式:</span> </p> <pre class="prettyprint lang-bsh">shell> mysql --port=13306 --host=127.0.0.1 shell> mysql --port=13306 --protocol=TCP</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">这里总结一下用到的连接选项:</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–host=host_name, -h host_name</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">指定服务器主机名,或</span><span style="line-height:1">IP</span><span style="line-height:1">地址。默认值是</span><span style="line-height:1">localhost</span></span> </p> <p class="p0"> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–password[=pass_val], -p[pass_val]</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">指定密码,</span><span style="line-height:1">[]</span><span style="line-height:1">内可不填,如不填,在敲入命令后会有提示符要求你输入密码,填写时密码不会显示在屏幕上。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果直接在命令行中填写密码,在</span><span style="line-height:1">–password=</span><span style="line-height:1">或</span><span style="line-height:1">-p</span><span style="line-height:1">后不能有空格符,如</span><span style="line-height:1">-pmypass</span><span style="line-height:1">。</span></span> </p> <p class="p0"> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–port=port_num, -P port_num</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">指定连接端口号,默认为</span><span style="line-height:1">3306</span></span> </p> <p class="p0"> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–protocol={TCP|SOCKET|PIPE|MEMORY}</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">明确指定连接方式,解释如前所述。</span><span style="line-height:1">TCP</span><span style="line-height:1">是建立</span><span style="line-height:1">TCP/IP</span><span style="line-height:1">连接,</span><span style="line-height:1">SOCKET</span><span style="line-height:1">是使用</span><span style="line-height:1">Unix socket file</span><span style="line-height:1">连接。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">其余选项用于</span><span style="line-height:1">windows</span><span style="line-height:1">系统。选项值大小写均可。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host=localhost</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">host=localhost</span><span style="line-height:1">时,默认使用的</span><span style="line-height:1">Unix socket file</span><span style="line-height:1">连接。</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host=localhost --protocol=TCP</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">明确指定以</span><span style="line-height:1">TCP/IP</span><span style="line-height:1">方式连接</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–socket=file_name, -S file_name</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在</span><span style="line-height:1">Unix</span><span style="line-height:1">系统中使用</span><span style="line-height:1">socket</span><span style="line-height:1">文件连接本机服务程序时使用,指定</span><span style="line-height:1">socket</span><span style="line-height:1">文件路径。默认值为</span><span style="line-height:1">/tmp/mysql.socket</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">windows</span><span style="line-height:1">系统下可用</span><span style="line-height:1">named pipe</span><span style="line-height:1">文件建立连接,具体如何使用,在此不详述了。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">参见本章的英文文档,版本</span><span style="line-height:1">5.6</span><span style="line-height:1">。</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–ssl*</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果</span><span style="line-height:1">MySQL</span><span style="line-height:1">服务器配置了可以支持</span><span style="line-height:1">ssl</span><span style="line-height:1">连接,那么这一系列选项可以用以建立</span><span style="line-height:1">ssl</span><span style="line-height:1">连接</span><span style="line-height:1">.</span><span style="line-height:1">详见</span><span style="line-height:1">Section 6.3.10.4 “SSL Command Options”</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–user=user_name, -u user_name</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">MySQL</span><span style="line-height:1">账户的用户名,在</span><span style="line-height:1">Unix</span><span style="line-height:1">上默认为系统登录名。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">我们也可以在环境变量和配置文件中,指定连接选项的值。当然不是很安全。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在配置文件中的</span><span style="line-height:1">[client]</span><span style="line-height:1">区域下,可如下设置:</span></span> </p> <pre class="prettyprint lang-bsh">[client] host=host_name user=user_name password=your_pass</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">详见</span><span style="line-height:1">Section4.2.3.3</span><span style="line-height:1">,</span><span style="line-height:1">“Using Options Files”</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在环境变量中,使用</span><span style="line-height:1">MYSQL_HOST</span><span style="line-height:1">指定主机,</span><span style="line-height:1">MYSQL_PWD</span><span style="line-height:1">指定密码</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">详见</span><span style="line-height:1">Section 6.1.2.1 “End-User Guidelines for Password Security”</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">MySQL</span><span style="line-height:1">有哪些相关的环境变量,详见</span><span style="line-height:1">Section 2.11 “Environment Variables”</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <h3> <span style="font-size:16pt;font-family:'Times New Roman';line-height:1">4.2.3 Specifying Program Options</span><span style="font-size:16pt;font-family:'Times New Roman'"></span><br /> </h3> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">可以通过环境变量,配置文件,命令行参数三种方式设定程序的启动参数。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">读取的顺序是:</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><strong><span style="line-height:1">1, </span></strong><span style="line-height:1"><strong>环境变量 </strong></span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><strong><span style="line-height:1">2</span></strong><span style="line-height:1"><strong>,配置文件 </strong></span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><strong><span style="line-height:1">3</span></strong><span style="line-height:1"><strong>,命令行参数 </strong></span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">选项的设置值以最后读取到的为准。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">环境变量的方式用的不多,一般是用配置文件设定参数。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">不过在</span><span style="line-height:1">Section 5.3.3 “Running Multiple MySQL Instances on Unix”</span><span style="line-height:1">章节讨论了一个应用场景,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">环境变量会很有用。</span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">选项的处理有一定的顺序,一个选项如果设定了两次,那么后一次会覆盖前面一次的设置。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如下,生效的是</span><span style="line-height:1">localhost</span><span style="line-height:1">:</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <pre class="prettyprint lang-bsh">shell> mysql -h example.com -h localhost</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">再如, 生效的是</span><span style="line-height:1">–skip-column-names</span><span style="line-height:1">:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --column-names --skip-column-names</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p15"> <span style="font-weight:bold;font-size:14pt;font-family:Arial;line-height:1">4.2.3.1 Using Options on the Command Line</span><span style="font-weight:bold;font-size:14.0000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1"><br /> </span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">在命令行中指定选项有如下的一些规则:</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">1</span><span style="line-height:1">,选项在命令之后给出</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">2</span><span style="line-height:1">,选项如</span><span style="line-height:1">–help, -?</span><span style="line-height:1">表示同一个意思。</span><span style="line-height:1">–help</span><span style="line-height:1">是完整写法,</span><span style="line-height:1">-?</span><span style="line-height:1">是简写。很多选项都有这两种形式的写法。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">3</span><span style="line-height:1">,大小写的选项名有不同含义。如</span><span style="line-height:1">-v</span><span style="line-height:1">表示</span><span style="line-height:1">–verbose</span><span style="line-height:1">,</span><span style="line-height:1">-V</span><span style="line-height:1">表示</span><span style="line-height:1">–version</span><span style="line-height:1">。即所谓对大小写敏感。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">4</span><span style="line-height:1">,有些选项需要指定参数,如</span><span style="line-height:1">-h localhost</span><span style="line-height:1">和</span><span style="line-height:1">–host=localhost.</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">5</span><span style="line-height:1">,完整选项名参数赋值方式是</span><span style="line-height:1">–host=localhost</span><span style="line-height:1">,是等号。简写的赋值方式是</span><span style="line-height:1">-h localhost</span><span style="line-height:1">或者</span><span style="line-height:1">-hlocalhost</span><span style="line-height:1">。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">这两种都可以。唯有一个例外是关于密码的选项:</span><span style="line-height:1">–password=pass_val</span><span style="line-height:1">或</span><span style="line-height:1">–password</span><span style="line-height:1">,后者的写法不加参数,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">但在敲入命令后会提示你输入密码。再者它有一个简写法</span><span style="line-height:1">-ppass_val</span><span style="line-height:1">或</span><span style="line-height:1">-p</span><span style="line-height:1">。</span><span style="line-height:1">-ppass_val</span><span style="line-height:1">不能写成</span><span style="line-height:1">-p pass_val</span><span style="line-height:1">,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">因为这样写系统无法分辨</span><span style="line-height:1">pass_val</span><span style="line-height:1">到底是密码参数还是别的什么参数,前面也有示例这个参数被认为是一个库名。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">如下,两种写法代表不同的意义:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">shell> mysql -ptest shell> mysql -p test</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">前者</span><span style="line-height:1">test</span><span style="line-height:1">被识别为密码。后者会提示你输入密码,且将</span><span style="line-height:1">test</span><span style="line-height:1">做为默认的数据库。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">6</span><span style="line-height:1">,如</span><span style="line-height:1">–skip-grant-tables</span><span style="line-height:1">与</span><span style="line-height:1">–skip_grant_tables</span><span style="line-height:1">的写法是等效的。当然写成</span><span style="line-height:1">__skip_grant_tables</span><span style="line-height:1">是不行的。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">其它选项可依次类推。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">7</span><span style="line-height:1">,选项的参数如果是数字,可有如右的几种写法:</span><span style="line-height:1">1K</span><span style="line-height:1">,</span><span style="line-height:1">1M</span><span style="line-height:1">,</span><span style="line-height:1">1G(</span><span style="line-height:1">或者</span><span style="line-height:1">1k, 1m, 1g)</span><span style="line-height:1">。</span><span style="line-height:1">1K</span><span style="line-height:1">代表</span><span style="line-height:1">1024</span><span style="line-height:1">,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">1M</span><span style="line-height:1">代表</span><span style="line-height:1">1024*1024</span><span style="line-height:1">,</span><span style="line-height:1">1G</span><span style="line-height:1">代表</span><span style="line-height:1">1024*1024*1024</span><span style="line-height:1">。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如下,</span><span style="line-height:1">mysqladmin</span><span style="line-height:1">会每隔</span><span style="line-height:1">10</span><span style="line-height:1">秒</span><span style="line-height:1">ping</span><span style="line-height:1">一次,一共</span><span style="line-height:1">1024</span><span style="line-height:1">次:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">mysql> mysqladmin --count=1K --sleep=10 ping </pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果选项参数值包含有空格,则需要用</span><span style="line-height:1">“”</span><span style="line-height:1">引用起来。例如通过</span><span style="line-height:1">mysql</span><span style="line-height:1">客户端使用</span><span style="line-height:1">–execute(-e)</span><span style="line-height:1">选项可用来发起</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">一个</span><span style="line-height:1">SQL</span><span style="line-height:1">请求。得到返回结果后退出。</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> mysql -u root -p --execute="SELECT User, Host FROM mysql.user" Enter password: ****** +--------+-----------+ | User | Host | +--------+-----------+ | | gigan | | root | gigan | | | localhost | | jon | localhost | | root | localhost | +--------+-----------+ shell></pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果在</span><span style="line-height:1">SQL</span><span style="line-height:1">语句内使用引号,要么使用转义符</span><span style="line-height:1">\</span><span style="line-height:1">,要么在语句内外使用不同的引号。如</span><span style="line-height:1">“……’xxxx’…..”</span><span style="line-height:1">。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">主要看你的命令程序支持哪一种写法。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><br /> </span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">可一次执行多个</span><span style="line-height:1">SQL</span><span style="line-height:1">语句,使用分号隔开,如下:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> mysql -u root -p -e "SELECT VERSION();SELECT NOW()" Enter password: ****** +-----------------+ | VERSION() | +-----------------+ | 5.1.5-alpha-log | +-----------------+ +---------------------+ | NOW() | +---------------------+ | 2006-01-05 21:19:04 | +---------------------+</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p15"> <span style="font-weight:bold;font-size:14pt;font-family:Arial;line-height:1">4.2.3.2 Program Options Modifiers</span><span style="font-weight:bold;font-size:14.0000pt;font-family:'Arial'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1"><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">关于选项的修正。有些选项有着</span><span style="line-height:1">bool</span><span style="line-height:1">变量的特性,可以去打开或关闭。如</span><span style="line-height:1">–column-names</span><span style="line-height:1">决定了是否在查询结果</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">中显示字段名。默认开启,可以通过如下三种方式关闭:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">--disable-column-names --skip-column-names -column-names=0</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">可以通过如下方式开启:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">--column-names --enable-column-names --column-names=1</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在</span><span style="line-height:1">MySQL 5.6.2</span><span style="line-height:1">之后,也可以使用</span><span style="line-height:1">ON,TRUE,OFF,FALSE</span><span style="line-height:1">作为选项值。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">如下,返回的结果没有显示字段名:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">shell> mysql -u root -p --column-names=0 --execute="SELECT User, Host FROM mysql.user" Enter password: ****** +------+------------+ | | gigan | | root | gigan | | | localhost | | jon | localhost | | root | localhost | +------+------------+</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果一个选项加上</span><span style="line-height:1">–loose</span><span style="line-height:1">前缀,即使程序不能识别该选项,也不会退出和返回错误。只是返回一个警告并继续。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果一台机器上有多个版本的</span><span style="line-height:1">MySQL</span><span style="line-height:1">运行,有些旧的版本不能识别的新选项,即可加上这个前缀。这样新旧版本</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">的程序可读取同一份配置文件,而能正常运行。</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">shell> mysql --loose-no-such-option mysql: WARNING: unknown option '--no-such-option'</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">对于</span><span style="line-height:1">mysqld</span><span style="line-height:1">程序,可以通过一个</span><span style="line-height:1">–maximun</span><span style="line-height:1">前缀限制某些动态系统变量的最大值。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如</span><span style="line-height:1">–maximun-query_cache_size=4M</span><span style="line-height:1">,表示最大的查询缓存不能大过</span><span style="line-height:1">4M</span><span style="line-height:1">。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p15"> <span style="font-weight:bold;font-size:14pt;font-family:Arial;line-height:1">4.2.3.3 Using Option Files </span><span style="font-weight:bold;font-size:14.0000pt;font-family:'Arial'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1"><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">可通过如</span><span style="line-height:1">mysqldump –help, (</span><span style="line-height:1">对于</span><span style="line-height:1">mysqld</span><span style="line-height:1">:</span><span style="line-height:1">mysqld –verbose –help)</span><span style="line-height:1">查看</span><span style="line-height:1">mysql</span><span style="line-height:1">程序在启动时会查找的</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">各个配置文件的路径和顺序。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在</span><span style="line-height:1">Unix</span><span style="line-height:1">系统上,</span><span style="line-height:1">MySQL</span><span style="line-height:1">程序按照顺序查找以下的路径中存在的配置文件:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">/etc/my.cnf #Global options /etc/mysql/my.cnf #Global options SYSCONFDIR/my.cnf #Global options $MYSQL_HOME/my.cnf #Server-specific options defaults-extra-file #The file specified with --defaults-extra-file=path, if any ~/.my.cnf #User-specific options ~/.mylogin.cnf #Login path options</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">1,~</span><span style="line-height:1">代表当前登录用户的家目录,即</span><span style="line-height:1">$HOME </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">2,SYSCONFDIR</span><span style="line-height:1">代表的路径,是由</span><span style="line-height:1">CMake</span><span style="line-height:1">编译</span><span style="line-height:1">MySQL</span><span style="line-height:1">时,通过</span><span style="line-height:1">SYSCONFDIR</span><span style="line-height:1">选项指定。默认是</span><span style="line-height:1">MySQL</span><span style="line-height:1">安装路径下的</span><span style="line-height:1">etc</span><span style="line-height:1">目录。</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">3,MYSQL_HOME …</span><span style="line-height:1">如果</span><span style="line-height:1">MYSQL_HOME</span><span style="line-height:1">没有设置,而你使用了</span><span style="line-height:1">mysqld_safe</span><span style="line-height:1">启动</span><span style="line-height:1">MySQL, MYSQL_HOME</span><span style="line-height:1">按照一定的规则,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">要么</span><span style="line-height:1">=BASEDIR</span><span style="line-height:1">, 要么</span><span style="line-height:1">=DATADIR</span><span style="line-height:1">。具体参见本手册,本章节,本小段</span><span style="line-height:1">…</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">4,在</span><span style="line-height:1">MySQL 5.6</span><span style="line-height:1">中,</span><span style="line-height:1">DATADIR</span><span style="line-height:1">已被弃用。</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">5,DATADIR</span><span style="line-height:1">与</span><span style="line-height:1">–datadir</span><span style="line-height:1">是不同的。</span><span style="line-height:1">DATADIR</span><span style="line-height:1">用于查找配置文件,其值在</span><span style="line-height:1">MySQL</span><span style="line-height:1">安装配置时指定,</span></span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">–datadir</span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">用于在</span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">mysqld</span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">启动时,指定数据目录。</span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">(此段不一定准确,建议看原文)</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><br /> </span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果在多个配置文件中出现同一个选项,以最后读取到的配置文件为准。不过对于</span><span style="line-height:1">mysqld</span><span style="line-height:1">有一个例外,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">对于</span><span style="line-height:1">–user</span><span style="line-height:1">选项,以第一次读取到的选项配置为准。这是为了避免用户自定义的配置文件对这个选项值</span></span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">的覆盖。</span> </p> <p class="p0"> <span style="font-family:Inconsolata;font-size:10.5pt;line-height:1.5"><br /> </span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">另外在</span><span style="line-height:1">Unix</span><span style="line-height:1">上,出于安全性的考量,如果一个配置文件对于所有用户有写权限,那么这个配置文件不被采用。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">命令行中选项的完全形式,也可以写到配置文件中。可通过</span><span style="line-height:1">–help</span><span style="line-height:1">查看</span><span style="line-height:1">MySQL</span><span style="line-height:1">支持哪些选项。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果命令行中的选项是</span><span style="line-height:1">–host=localhost, </span><span style="line-height:1">则在配置文件写</span><span style="line-height:1">host=localhost</span><span style="line-height:1">就是等效的。去掉</span><span style="line-height:1">—</span><span style="line-height:1">符号就可以了。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">具体来讲,配置文件的写法如下:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh"># coment, ; coment </pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">以</span><span style="line-height:1">“#”,</span><span style="line-height:1">或者</span><span style="line-height:1">“;”</span><span style="line-height:1">开始的行,表示注释。特别对于</span><span style="line-height:1">“#”</span><span style="line-height:1">,可以在一行的任意位置使用,其后的内容也被识别为注释,不一定要放在行首。</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">[group]</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">group</span><span style="line-height:1">是一个</span><span style="line-height:1">MySQL</span><span style="line-height:1">程序名,或者一个组,对大小写不敏感。其后的选项表示特别为这个程序或组所使用。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">例如:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">[group1] xxx [group2] ***</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">xxx</span><span style="line-height:1">代表的选项为</span><span style="line-height:1">group1</span><span style="line-height:1">使用,</span><span style="line-height:1">***</span><span style="line-height:1">代表的选项为</span><span style="line-height:1">group2</span><span style="line-height:1">使用。</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">opt_name</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">与命令行中的</span><span style="line-height:1">–opt_name</span><span style="line-height:1">等效</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">opt_name=value</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">与命令行中的</span><span style="line-height:1">–opt_name=value</span><span style="line-height:1">等效。在配置文件中,</span><span style="line-height:1">“=”</span><span style="line-height:1">两边可以有空格,而这在命令行中不被允许。</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">value</span><span style="line-height:1">值可以用单引号或双引号引起来。例如</span><span style="line-height:1">value</span><span style="line-height:1">值中含有</span><span style="line-height:1">#</span><span style="line-height:1">符号的话,就可以用引号,否则会被识别为注释符。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">对于选项值来说,如下的字符有特殊的含义:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">\b #backspace \t #tab \n #new line \r #carriage return \\ #backslash 即是\ \s #space </pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">除开以上的情况,</span><span style="line-height:1">\</span><span style="line-height:1">仅仅是一个字符。</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">对于</span><span style="line-height:1">SQL</span><span style="line-height:1">语句中的字符,转义规则稍有不同。对于</span><span style="line-height:1">SQL</span><span style="line-height:1">语句,如果</span><span style="line-height:1">\x</span><span style="line-height:1">没有特殊的含义,也会识别为</span><span style="line-height:1">x</span><span style="line-height:1">,而不是</span><span style="line-height:1">\x</span><span style="line-height:1">。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">对于</span><span style="line-height:1">windows</span><span style="line-height:1">系统下的文件路径的讨论,此处暂时略去。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">[client]</span><span style="line-height:1">组的设置,对于所有的客户端程序生效</span><span style="line-height:1">(</span><span style="line-height:1">不包括</span><span style="line-height:1">mysqld)</span><span style="line-height:1">。你可以在</span><span style="line-height:1">[client]</span><span style="line-height:1">组中设置</span><span style="line-height:1">password</span><span style="line-height:1">,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">这时注意要保证这个选项文件只对文件的属主用户具有可读写权限,避免其他人看到密码。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">因为所有的客户端程序都会用到</span><span style="line-height:1">[client]</span><span style="line-height:1">下的选项,如果有的程序不能识别其中的个别选项,该程序会</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">返回错误并退出。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><br /> </span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="color:#E56600;line-height:1"><strong>译者注,未验证:</strong></span><span style="color:#E56600;line-height:1"><strong>Section 4.2.3.2 Program Options Modifiers </strong></span><span style="color:#E56600;line-height:1"><strong>提到</strong></span><span style="color:#E56600;line-height:1"><strong>–loose</strong></span><span style="color:#E56600;line-height:1"><strong>前缀此时应该就有用了。个别的选项前加上前缀如:</strong></span></span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1;color:#E56600"><strong>loose-some-option</strong></span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1;color:#E56600"><strong>,这样不能识别该选项的客户端程序在启动时,只会返回警告,不会返回错误和退出。</strong></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">如下,是一个全局配置文件的示例:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">[client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock key_buffer_size=16M max_allowed_packet=8M [mysqldump] quick</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">如下,是一个用户配置文件示例:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">[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</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在配置文件中,还可以为某个版本的程序设置组,如下是属于</span><span style="line-height:1">5.6.x</span><span style="line-height:1">版本的</span><span style="line-height:1">MySQL</span><span style="line-height:1">服务程序的组:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">[mysqld-5.6] new</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">可使用</span><span style="line-height:1">!include</span><span style="line-height:1">来引用其他配置文件,可以用</span><span style="line-height:1">!includedir</span><span style="line-height:1">来引用包含配置文件的路径</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果引用</span><span style="line-height:1">/home/mydir/myopt.cnf</span><span style="line-height:1">文件,如下:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">!include /home/mydir/myopt.cnf</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果引用</span><span style="line-height:1">/home/mydir</span><span style="line-height:1">中的配置文件,如下,注意其中的有多个配置文件的话,引用的顺序不确定,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">且在</span><span style="line-height:1">Unix</span><span style="line-height:1">系统中,必须保证该路径下有以</span><span style="line-height:1">.cnf</span><span style="line-height:1">为后缀的文件:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">!includedir /home/mydir</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">在处理引用配置文件时,不同的程序只读取其中与自身匹配的组下面的选项设置。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如下,如果</span><span style="line-height:1">my.cnf</span><span style="line-height:1">包含如下的行:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">!include /home/mydir/myopt.cnf</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">而</span><span style="line-height:1">/home/mydir/myopt.cnf</span><span style="line-height:1">中有如下的内容:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">[mysqladmin] force [mysqld] key_buffer_size=16M</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果是</span><span style="line-height:1">mysqld</span><span style="line-height:1">读取</span><span style="line-height:1">/home/mydir/myopt.cnf</span><span style="line-height:1">,只使用</span><span style="line-height:1">[mysqld]</span><span style="line-height:1">下的内容。如果是</span><span style="line-height:1">mysqladmin</span><span style="line-height:1">读取</span><span style="line-height:1">my.cnf</span><span style="line-height:1">,只使用</span><span style="line-height:1">[mysqladmin]</span><span style="line-height:1">下的内容。</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">!includedir</span><span style="line-height:1">的使用是类似的。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p15"> <span style="font-weight:bold;font-size:14pt;font-family:Arial;line-height:1">4.2.3.4 Command-Line Options that Affet Option-File Handling</span><span style="font-weight:bold;font-size:14.0000pt;font-family:'Arial'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1"><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">前面讲过</span><span style="line-height:1">MySQL</span><span style="line-height:1">程序的启动参数可以通过一下三种方式设置,顺序如下:</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><strong><span style="line-height:1">1</span></strong><span style="line-height:1"><strong>,环境变量</strong></span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><strong><span style="line-height:1">2</span></strong><span style="line-height:1"><strong>,配置文件</strong></span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><strong><span style="line-height:1">3</span></strong><span style="line-height:1"><strong>,命令行参数</strong></span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><strong><br /> </strong></span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">而对于会影响到如何使用配置文件的特殊选项,需要在命令行中去设置,且为了保证这些选项发挥作用,</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">这种命令行选项必须放在其他选项的的前面,不过也有少数例外,先说几个例外情况:</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">–print-defaults </span><span style="line-height:1">跟</span><span style="line-height:1">–defaults-file </span><span style="line-height:1">或 </span><span style="line-height:1">–defaults-extra-file</span><span style="line-height:1">一起使用时,需放在这两个选项之后。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">(</span><span style="line-height:1">原文:</span><span style="line-height:1">may be used immediately after –defaults-file[257]or –defaults-extra-file)</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">这里有一条关于</span><span style="line-height:1">windows</span><span style="line-height:1">环境下的说明,暂略。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">需要注意的是,在文件的路径名中不要使用</span><span><span style="line-height:1">“</span><span style="color:#337FE5;line-height:1"><strong>~</strong></span><span style="line-height:1">”</span></span><span style="line-height:1">这个</span><span style="line-height:1">shell</span><span style="line-height:1">元字符,不一定能正确解读。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">下面具体来说一说:</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><br /> </span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–defaults-extra-file=file_name</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">MySQL</span><span style="line-height:1">程序启动时会读取默认配置文件,而这个选项会指定一个额外的配置文件让</span><span style="line-height:1">MySQL</span><span style="line-height:1">程序读取。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在</span><span style="line-height:1">Unix</span><span style="line-height:1">上,读取顺序是:默认配置文件</span><span style="line-height:1">(</span><span style="line-height:1">除了用户自定义的配置文件</span><span style="line-height:1">)–>file_name–></span><span style="line-height:1">用户自定义配置文件。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">file_name</span><span style="line-height:1">为相对路径时,以当前目录的路径为基础路径</span><span style="line-height:1">(</span><span style="line-height:1">对于本节的各个选项都是如此</span><span style="line-height:1">)</span><span style="line-height:1">。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><span style="color:#337FE5;line-height:1"><strong>–defaults-file=file_name</strong></span><br /> <span style="line-height:1"> 只是用指定的选项文件。如果这个文件不存在,或者不能访问,程序会退出并返回错误。</span><br /> <span style="line-height:1"> file_name为相对路径时,以当前目录的路径为基础路径。</span></span></span> </p> <p> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–defaults-group-suffix=str </strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">直接举例说明:</span><span style="line-height:1">mysql</span><span style="line-height:1">客户端程序启动时,会读取配置文件中的</span><span style="line-height:1">[client]</span><span style="line-height:1">和</span><span style="line-height:1">[mysql]</span><span style="line-height:1">组下的选项。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果加上</span><span style="line-height:1">–defaults-group-suffix=—other</span><span style="line-height:1">,</span><span style="line-height:1">mysql</span><span style="line-height:1">客户端也会去读取</span><span style="line-height:1">[client_other]</span><span style="line-height:1">和</span><span style="line-height:1">[mysql_other]</span><span style="line-height:1">组</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">下的选项。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><br /> </span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–login_path=name </strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">读取</span><span style="line-height:1">.mylogin.cnf</span><span style="line-height:1">文件中以</span><span style="line-height:1">name</span><span style="line-height:1">为组名的信息。如</span><span style="line-height:1">name=myloginpath,</span><span style="line-height:1">则读取以下的信息</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">[myloginpath] user = myname password = mypass host = 127.0.0.1</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">这是</span><span style="line-height:1">MySQL 5.6.6</span><span style="line-height:1">新增特性,</span><span style="line-height:1">.mylogin.cnf</span><span style="line-height:1">只包含主机,用户,密码信息。是加密的。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">具体不详细叙述。参看</span><span style="line-height:1">Section 4.6.6 mysql_config_editor–MySQL Configuration Utility</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–no-defaults</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">禁止读取任何配置文件。如果程序因为读取了某些未知的选项而导致无法启动,可以使用这选项。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">有一个例外是</span><span style="line-height:1">.mylogin.cnf,</span><span style="line-height:1">只要这个文件存在,始终都要被读取。</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#337FE5;line-height:1"><strong>–print-defaults</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">打印程序名,以及该程序从配置文件中读取到的所有的选项。</span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p15"> <span style="font-weight:bold;font-size:14pt;font-family:Arial;line-height:1">4.2.3.5 Using Options to Set Program Variables </span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">许多</span><span style="line-height:1">MySQL</span><span style="line-height:1">程序都有内部变量,可以在程序运行时通过</span><span style="line-height:1">SET</span><span style="line-height:1">语句设定。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">详见:</span><span style="line-height:1">Section 13.7.4 SET Syntax </span><span style="line-height:1">和 </span><span style="line-height:1">Section 5.1.5 Using System Variables</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">大多数的内部变量也可以在</span><span style="line-height:1">mysql</span><span style="line-height:1">启动时通过参数设定。比如 </span><span style="line-height:1">max_allowed_packet</span><span style="line-height:1">选项</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">用来设置通信缓存的大小。如下:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">shell> mysql --max_allowed_packet=16777216 #单位:字节 shell> mysql --max_allowed_packet=16M #单位:兆字节</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">配置文件中的设置方式如下:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">[mysql] max_allowed_packet=16777216 [mysql] max_allowed_packet=16M</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">另外,短横线与下划线等效,如:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">[mysqld] key_buffer_size=512M [mysqld] key-buffer-size=512M</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">要注意的是,参数值后缀不适用于使用</span><span style="line-height:1">SET</span><span style="line-height:1">语句,在程序运行时设置,需使用表达式。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">注意对比:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">mysql> SET GLOBAL max_allowed_packet=16M; #错误 mysql> SET GLOBAL max_allowed_packet=16*1024*1024; #正确</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">而表达式形式的参数值,也不能用于配置文件,或命令行参数:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">shell> mysql --max_allowed_packet=16M #正确 shell> mysql --max_allowed_packet=16*1024*1024 #错误</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p15"> <span style="font-weight:bold;font-size:14pt;font-family:Arial;line-height:1">4.2.3.6 Option Defaults, Options Expecting Values, and the = Sign </span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">一般来说,完全形式的选项使用</span><span style="line-height:1">“=”</span><span style="line-height:1">作赋值</span><span style="line-height:1">,</span><span style="line-height:1">如下</span><span style="line-height:1">:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host=tonfisk --user=jon</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">而对于要求填写选项参数的选项,如果该选项没有默认值,</span><span style="line-height:1">“=”</span><span style="line-height:1">也可不写:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host tonfisk --user jon</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">考虑如下示例:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host 85.224.35.45 --user jon Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.6.17 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SELECT CURRENT_USER(); +----------------+ | CURRENT_USER() | +----------------+ | jon@% | +----------------+ 1 row in set (0.00 sec)</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">–host</span><span style="line-height:1">和</span><span style="line-height:1">–user</span><span style="line-height:1">都是要求填写参数值的,如果没写的话,是会报错的。下面的例子中,因为</span><span style="line-height:1">–user</span><span style="line-height:1">没有给参数,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">所以报错:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host 85.224.35.45 --user mysql: option '--user' requires an argument</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">而下面的例子中,</span><span style="line-height:1">–host –user </span><span style="line-height:1">被解读为了</span><span style="line-height:1">–host=–user</span><span style="line-height:1">,而</span><span style="line-height:1">–user</span><span style="line-height:1">并不是某个主机名,所以报错</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --host --user jon ERROR 2005 (HY000): Unknown MySQL server host '--user' (1)</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果是给设有默认值的选项赋值,要求使用</span><span style="line-height:1">“=”</span><span style="line-height:1">,否则返回错误。举一例,</span><span style="line-height:1">MySQL</span><span style="line-height:1">服务程序的</span><span style="line-height:1">–log-error</span><span style="line-height:1">选项</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">的默认值是</span><span style="line-height:1">host_name.err</span><span style="line-height:1">。假设</span><span style="line-height:1">host_name=tonfisk, </span><span style="line-height:1">考虑如下示例:</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">启动</span><span style="line-height:1">MySQL</span><span style="line-height:1">服务程序:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> mysqld_safe & [1] 11699 shell> 080112 12:53:40 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'. 080112 12:53:40 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var shell> After shuttin</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">关闭后,按如下方式重启:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">shell> mysqld_safe --log-error & [1] 11699 shell> 080112 12:53:40 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'. 080112 12:53:40 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var shell></pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">运行的效果相同,因为</span><span style="line-height:1">–log-error</span><span style="line-height:1">后面没有跟任何参数,所以程序自己采用了默认值</span><span style="line-height:1">(&</span><span style="line-height:1">符号表示在后台</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">运行</span><span style="line-height:1">MySQL</span><span style="line-height:1">。但这个符号被</span><span style="line-height:1">MySQL</span><span style="line-height:1">忽略</span><span style="line-height:1">)</span><span style="line-height:1">。假设你想使用自定义的错误日志文件</span><span style="line-height:1">my-errors.err</span><span style="line-height:1">,</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">使用选项</span><span style="line-height:1">–log-error my-errors</span><span style="line-height:1">,却达不到你想要的效果:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> mysqld_safe --log-error my-errors & [1] 31357 shell> 080111 22:53:31 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'. 080111 22:53:32 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var 080111 22:53:34 mysqld_safe mysqld from pid file /usr/local/mysql/var/tonfisk.pid ended [1]+ Done ./mysqld_safe --log-error my-errors</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">服务程序试图以 </span><span style="line-height:1">/usr/local/mysql/var/tonfisk.err</span><span style="line-height:1">作为错误日志文件,却因错误关闭:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> tail /usr/local/mysql/var/tonfisk.err 080111 22:53:32 InnoDB: Started; log sequence number 0 46409 /usr/local/mysql/libexec/mysqld: Too many arguments (first extra is 'my-errors'). Use --verbose --help to get a list of available options 080111 22:53:32 [ERROR] Aborting 080111 22:53:32 InnoDB: Starting shutdown... 080111 22:53:34 InnoDB: Shutdown completed; log sequence number 0 46409 080111 22:53:34 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete 080111 22:53:34 mysqld_safe mysqld from pid file /usr/local/mysql/var/tonfisk.pid ended</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">错误是:</span><span style="line-height:1">Too many arguments (first extra is ‘my-errors’). </span><span style="line-height:1">参数太多了</span></span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">如下的使用才是正确的:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">shell> mysqld_safe --log-error=my-errors & [1] 31437 shell> 080111 22:54:15 mysqld_safe Logging to '/usr/local/mysql/var/my-errors.err'. 080111 22:54:15 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var shell></pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#E56600;line-height:1"><strong>译者注:这一段有点晕,总之不管要求参数值的选项有没有默认值,要使用自定义参数值的时候,</strong></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="color:#E56600;line-height:1"><strong>最好就使用</strong></span><span style="color:#E56600;line-height:1"><strong>“=”</strong></span><span style="color:#E56600;line-height:1"><strong>赋值。</strong></span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">至于在配置文件中,情况也是类似,假设配置文件</span><span style="line-height:1">my.cnf</span><span style="line-height:1">包含有如下内容:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-js">[mysql] host user</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">会被解读成</span><span style="line-height:1">–host –user </span><span style="line-height:1">或者 </span><span style="line-height:1">–host=–user</span><span style="line-height:1">,使用的效果如下:</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="color:#E56600;line-height:1"><strong>(译者注:从这一点看</strong></span><span style="color:#E56600;line-height:1"><strong>, –host</strong></span><span style="color:#E56600;line-height:1"><strong>选项和</strong></span><span style="color:#E56600;line-height:1"><strong>–user</strong></span><span style="color:#E56600;line-height:1"><strong>选项没有默认值才会被这样解读,</strong></span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;color:#E56600;line-height:1"><strong>这一点与前面所讲的倒有点矛盾。)</strong></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">shell> mysql ERROR 2005 (HY000): Unknown MySQL server host '--user' (1)</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果没写</span><span style="line-height:1">“=”</span><span style="line-height:1">号,情况与命令行方式的稍有不同:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">[mysql] user jon</pre> <pre class="prettyprint lang-bsh">shell> mysql mysql: unknown option '--user jon'</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">这里空格也被当做一个有意义的字符了,还是得这样写:</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"> </span> </p> <pre class="prettyprint lang-bsh">[mysql] user=jon</pre> <pre class="prettyprint lang-bsh">shell> mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.6.17 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SELECT USER(); +---------------+ | USER() | +---------------+ | jon@localhost | +---------------+ 1 row in set (0.00 sec)</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">这个效果是命令行中的效果一样了</span><span style="line-height:1">:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> mysql --user jon --host tonfisk Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.6.17 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SELECT USER(); +---------------+ | USER() | +---------------+ | jon@tonfisk | +---------------+ 1 row in set (0.00 sec)</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">而MySQL5.6版本</span><span style="line-height:1">的</span><span style="line-height:1">mysqld程序又有点不同,</span><span style="line-height:1">对于要求写参数值的选项,如果没有填写参数值,就会直接退出并返回错误。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">假设</span><span style="line-height:1">my.cnf</span><span style="line-height:1">有如下内容:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">[mysqld] log_error relay_log relay_log_index</pre> <pre class="prettyprint lang-bsh">shell> mysqld_safe & 090514 09:48:39 mysqld_safe Logging to '/home/jon/bin/mysql/var/tonfisk.err'. 090514 09:48:39 mysqld_safe Starting mysqld daemon with databases from /home/jon/bin/mysql/var 090514 09:48:39 mysqld_safe mysqld from pid file /home/jon/bin/mysql/var/tonfisk.pid ended</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">–log-error</span><span style="line-height:1">因为有默认值,所以可以不写参数。但</span><span style="line-height:1">–relay-log</span><span style="line-height:1">必须自己写参数值:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">shell> tail -n 3 ../var/tonfisk.err 090514 09:48:39 mysqld_safe Starting mysqld daemon with databases from /home/jon/bin/mysql/var 090514 9:48:39 [ERROR] /home/jon/bin/mysql/libexec/mysqld: option '--relay-log' requires an argument 090514 9:48:39 [ERROR] Aborting</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">所以说</span><span style="line-height:1">5.6</span><span style="line-height:1">版本的</span><span style="line-height:1">mysqld</span><span style="line-height:1">对这种情况的处理要特殊一些,没有把</span><span style="line-height:1">:</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">relay_log</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">relay_log_index</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">解读为:</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">–relay-log=relay_log_index</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">这点与前面是不同的。</span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <h3> <span style="font-size:16pt;font-family:'Times New Roman';line-height:1">4.2.4 Setting Environment Variables</span><span style="font-size:16pt;font-family:'Times New Roman'"></span><br /> </h3> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">在命令行中设置环境变量,对于当前有效,退出再登陆就无效了。</span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">在配置文件中设置,则一直有效。</span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><br /> </span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">所有</span><span style="line-height:1">MySQL</span><span style="line-height:1">相关的环境变量,详见:</span><span style="line-height:1">Section 2.11 “Environment Variables”</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在</span><span style="line-height:1">Unix</span><span style="line-height:1">上的设置,与</span><span style="line-height:1">shell</span><span style="line-height:1">有关,一般的语法如下:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">MYSQL_TCP_PORT=3306 #设置变量 export MYSQL_TCP_PORT #将之声明为环境变量</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">对于</span><span style="line-height:1">csh</span><span style="line-height:1">和</span><span style="line-height:1">tcsh</span><span style="line-height:1">,可使用</span><span style="line-height:1">setenv</span><span style="line-height:1">,与</span><span style="line-height:1">export</span><span style="line-height:1">效果相同:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">setenv MYSQL_TCP_PORT 3306</pre> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">在命令行中的设置立即生效,但你退出后再登陆,之前的设置就没有了。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">要想你的设置在每次登陆时生效,可在</span><span style="line-height:1">shell</span><span style="line-height:1">的启动文件中设置:</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">在</span><span style="line-height:1">Unix</span><span style="line-height:1">中,对于不同的</span><span style="line-height:1">shell</span><span style="line-height:1">有所不同,对于</span><span style="line-height:1">bash</span><span style="line-height:1">一般的启动文件是</span><span style="line-height:1">.bashrc</span><span style="line-height:1">或</span><span style="line-height:1">.bash_profile</span><span style="line-height:1">。</span></span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">对于</span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">tcsh, </span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">则是</span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">.tcshrc</span><span style="font-family:Inconsolata;font-size:10.5pt;line-height:1">。</span> </p> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">bash</span><span style="line-height:1">有两个不同的启动文件,一个是</span><span style="line-height:1">.bashrc</span><span style="line-height:1">,提供给</span><span style="line-height:1">login shells</span><span style="line-height:1">使用,一个是</span><span style="line-height:1">.bash_profile</span><span style="line-height:1">,提供给</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">nonlogin shells</span><span style="line-height:1">使用。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">假设</span><span style="line-height:1">MySQL</span><span style="line-height:1">程序安装在</span><span style="line-height:1">/usr/local/mysql/bin</span><span style="line-height:1">,你想把这个路径加入到</span><span style="line-height:1">PATH</span><span style="line-height:1">变量中以便调用,可作如下设置:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">PATH=${PATH}:/usr/local/mysql/bin</pre> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">如果你的</span><span style="line-height:1">shell</span><span style="line-height:1">是</span><span style="line-height:1">tcsh</span><span style="line-height:1">,可在</span><span style="line-height:1">.tcshrc</span><span style="line-height:1">中设置:</span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span> </span></span> </p> <pre class="prettyprint lang-bsh">setenv PATH ${PATH}:/usr/local/mysql/bin</pre> <p class="p0"> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5pt;font-family:Inconsolata;line-height:1">如果启动文件不存在,可手动创建。</span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1">设置之后,重新登陆即可生效。或使用</span><span style="line-height:1">source file_name</span><span style="line-height:1">使启动文件立即生效。</span></span><span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1"><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"><span style="line-height:1"><br /> </span></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span> </p> <p class="p0"> <span style="font-size:10.5000pt;font-family:'Inconsolata'"></span></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信