本节介绍使用命令行选项来指定如何为MySQL或mysqldump等客户端建立到MySQL服务器的连接。
客户端程序要连接到MySQL服务器,必须使用正确的连接参数,例如服务器运行的主机名以及MySQL帐户的用户名和密码。
每个连接参数都有一个默认值,但您可以根据需要使用命令行或选项文件中指定的程序选项来替代默认值。
这里的示例使用mysql客户端程序,但这些原则适用于其他客户端,如mysqldump、mysqladmin或mysqlshow。
此命令调用mysql时不指定任何显式连接参数:
mysql
要明确指定主机名和用户名以及密码,请在命令行中提供适当的选项。若要选择默认数据库,请添加数据库名称参数。示例:
mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
对于密码选项,密码值是可选的:
如前所述,在命令行中包含密码值是一种安全风险。若要避免此风险,请指定--password或-p选项,但不包含以下任何密码值:
mysql --host=localhost --user=myname --password mydb
mysql -h localhost -u myname -p mydb
当提供的--password或-p选项没有密码值时,客户端程序会打印一个提示并等待您输入密码。
(在这些示例中,mydb不会被解释为密码,因为它与前面的password选项之间有一个空格。)
在某些系统上,MySQL用于提示输入密码的库例程会自动将密码限制为八个字符。
这个限制是系统库的属性,而不是MySQL。
在内部,MySQL对密码的长度没有任何限制。
另一种解决方法是将MySQL密码更改为8个或更少字符的值,但这有一个缺点,即较短的密码往往不太安全。
客户端程序确定要建立的连接类型,如下所示:
--protocol选项使您能够使用特定的传输协议,即使其他选项通常会导致使用不同的协议。
也就是说,--protocol显式地指定传输协议,并覆盖前面的规则,即使对于localhost也是如此。
仅使用或检查与所选传输协议相关的连接选项。其他连接选项将被忽略。
要确保客户端与本地服务器建立TCP/IP连接,请使用--host或-h指定主机名值127.0.0.1(而不是localhost),或本地服务器的IP地址或名称。您还可以通过使用--protocol=TCP选项显式指定传输协议,即使对于localhost也是如此。示例:
mysql --host=127.0.0.1
mysql --protocol=TCP
如果服务器配置为接受IPv6连接,则客户端可以使用--host=::1通过IPv6连接到本地服务器
在Windows上,要强制MySQL客户端使用命名管道连接,请指定--pipe或--protocol=pipe选项,或指定。(句点)作为主机名。如果服务器启动时未启用named_pipe系统变量以支持命名管道连接,或者进行连接的用户不是named_pipe_full_access_group系统变量指定的Windows组的成员,则会发生错误。如果不想使用默认管道名称,请使用--socket选项指定管道名称。
与远程服务器的连接使用TCP/IP。此命令使用默认端口号(3306)连接到运行在remote.example.com上的服务器:
mysql --host=remote.example.com
要明确指定端口号,请使用--port或-P选项:
mysql --host=remote.example.com --port=13306
您也可以指定连接到本地服务器的端口号。
但是,如前所述,默认情况下,到Unix上localhost的连接使用套接字文件,因此除非如前所示强制TCP/IP连接,否则任何指定端口号的选项都将被忽略。
对于此命令,程序在Unix上使用一个套接字文件,并忽略--port选项:
mysql --port=13306 --host=localhost
要使用端口号,请强制建立TCP/IP连接。例如,通过以下任一方式调用程序:
mysql --port=13306 --host=127.0.0.1
mysql --port=13306 --protocol=TCP
有关控制客户端程序如何与服务器建立连接的配置的更多信息,
可以指定连接参数,而无需每次调用客户端程序时在命令行中输入这些参数:
[client]
host=host_name
user=user_name
password=password
可以使用环境变量指定某些连接参数。示例:
要指定mysql的主机,请使用mysql_host。
在Windows上,要指定MySQL用户名,请使用user。
未完待续...