本文地址:https://www.askmac.cn/archives/mysql-client-involve.html
MySQL客户端程序通过命令行调用,如使用Windows命令行窗口或Linux Shell Teminal。当你调用了客户端程序,你可以在程序命令后指定命令项来控制其行为。命令项可以设置在配置项文件中。一些命令项可用于告知客户端如何连接MySQL Server,其它一些则告知程序如何执行相应操作。
本节中例子都使用mysql程序,不过一般在mysql程序上可用的原则上对其它命令行客户端程序也可用。
为了了解MySQL程序所支持的命令项,可以通过调用 --help
项。如,了解如何使用mysql程序:
shell> mysql --help
查看程序当前版本,可以使用 --version
项。如当前mysql客户端程序版本为:
虽然说没有必要要求客户端运行程序的版本和服务端保持一致。多数情况下,高版本或低版本的客户端程序都能够成功连接到服务端。不过,不同版本可能会由于一些bug而导致问题,因此最好使用匹配兼容的版本。
4.2.1 通用命令项语法
MySQL程序命令项有在使用时有两种通用形式:
- 长命令项,包含有单词并在之前带有两横【
--
】 - 短命令项,包含单个字母并在之前带有一横【-】
多数情况下,命令项长短项都可以用。如,显示程序版本号,你可以使用 --version
,也可以使用 -V,两者等价:
请注意,这些命令项是大小写敏感的,不同的大小写,可能代表的含义完全不同。
一些项后还会跟有值。如,当你使用 --host
或 -h项来指定所运行的MySQL Server主机位置时,你需要将主机地址输入在命令项后。对于长命令项,命令项和值之间使用等号【=】连接。而对于短命令项,值可以紧跟命令项后,中间可以有空格分隔,也可以没有。以下三种语法可以看作是等价的,其中myhost.example.com指的是正在运行MySQL Server的主机位置:
shell> mysql --host=myhost.example.com shell> mysql -h myhost.example.com shell> mysql -hmyhost.example.com
多数情况下,如果你不显示地设置命令项,程序则使用默认值设置。这样你在调用MySQL客户端程序时,仅需要对那些不适合的命令项进行调整就行了。例如,默认主机为localhost,所以如果你希望连接的MySQL Server就在本地,你就不需要进行 --host
或 -h命令项的设置了。
不过也会有些项例外,如密码项等,在之后会提到。
4.2.2 连接参数项
使用客户端程序连接服务器,客户端需要知道服务在哪里运行。连接可以通过和运行的服务在同一台主机的客户端程序来建立,也可以使用远程客户端和不同位置的主机建立。建立的时候,你需要确认登陆的用户名及密码即可。
每个MySQL客户端程序都有其自己相应的命令项,但对于建立连接到MySQL Server的命令行客户端都会支持通用的一些命令项,本节中会对这些连接连接参数项进行说明,并指出当默认值不适合时该如何使用。
主要用于连接服务的命令项定义了连接的类型并确认你希望使用的MySQL账号。
命令项 | 描述 |
--protocol |
进行连接使用的协议 |
--host |
服务运行的主机 |
--port |
用于连接的TCP/IP端口号 |
--shared-memory-base-name |
Windows特有的共享内存连接 |
--socket |
用于本地连接的socket文件 |
--compress |
对客户端和服务端之间传输的信息进行压缩 |
注意:并不是所有Windows系统都支持命名管道或共享内存连接。即便系统支持,你也需要启用其相应设置。
--protocol=protocol_name
此命令项可用于显式地设置客户端用于连接服务端的连接协议(如果不设置的话,缺省时会基于当前系统主机和客户端操作系统来判定)。可允许的值有:
--protocol 值 |
连接协议 | 允许操作系统 |
tcp | TCP/IP连接到本地或远程主机 | 所有 |
socket | Unix socket文件连接到本地主机 | 仅Unix类 |
pipe | 命名管道连接到本地主机 | 仅Windows |
memory | 共享内存连接到本地主机 | 仅Windows |
--host=host_name
或-h host_name
此命令项设置了MySQL Server运行的主机。值可以是主机名或是一个IP地址。在系统中,localhost被以特别方式处理,代表本地主机。
默认值为localhost。
--port=port_number
或-P port_number
此项指的是连接服务主机的端口号。它仅用于TCP/IP连接方式。默认MySQL端口号为3306
--shared-memory-base=memory_name
此项用于在Windows系统中,定义共享内存名以用于本地服务器的共享内存连接。其默认的共享内存名为MYSQL(注意大小写敏感)。
--socket=socket_name
或-S socket_name
此项用于设置Unix socket文件的路径位置。
在Unix系统中,对于localhost的连接,客户端到服务端的连接会使用一个Unix socket文件。
在Windows系统中,此项被用于设定一个命名管道。对于支持命名管道连接的Windows系统中,客户端可以通过设置【.】来作为主机名来使用管道连接。在此情况下,–socket设置了管道名。注意,管道名为非大小写敏感。
--compress
或-C
此项将使得在客户端和服务端之间传送的数据先进行压缩处理,在接收前则进行解压。这将减轻网络传输压力。当然这需要承担额外的压缩和解压开销。对应的命令项后不需要设置值。此压缩使用gzip格式压缩。
MySQL登陆命令项:
命令项 | 描述 |
--user |
MySQL账户用户名 |
--password |
MySQL账户密码 |
此两项提供了访问验证信息。你需要提供正确验证账户,并在服务授权表中存在且提供的密码正确,否则服务将会拒绝连接。
--user=user_name
或-u user_name
此项用于输入你的MySQL账号的用户名。
--password=password_value
或-ppassword_value
此项用于输入你的MySQL对应账号的密码。这里并不会设置默认密码。如果你不提供此项,你的MySQL账号需要设置允许无密码连接。
与其他连接参数项不同,对于密码项的设置有两种方式:
1)你可以在使用此命令项后不直接输入密码。之后客户端程序会提示你密码输入,如:
当你看到Enter password: 提示,键入密码并回车即可。密码并不会被显示在屏幕中,以防止他人窥视。
2)如果你选择直接在密码项【-p】后给出密码,那么请一定保证命令项和密码之间没有空格,即: -ppassword_value 是正确的,-p password_value是错误的。这个之前【-h】主机设置项不同。
注意:出于安全考虑,建议大家不要直接将密码输入在命令项之后,这会导致密码可见,并出现在Unix系统进程列表中。
如何设置连接参数:
- 使用默认主机名(localhost)和默认用户名(root),不带密码进行MySQL Server连接:
shell> mysql
- 通过共享内存方式(Windows环境)连接本地服务。使用默认用户并无密码:
shell> mysql --protocol=memory
- 连接本地主机上的MySQL Server,使用用户名dbdao,要求mysql提示密码:
shell> mysql --host=localhost --password --user=dbdao
- 和之前要求不变,不过使用短命令项:
shell> mysql -h localhost -p -udbdao
- 连接指定IP地址(192.168.1.22)对应主机的MySQL Server,用户名为dbdao,密码为mysql
shell> mysql --host=192.168.1.22 --user=dbdao --password=’mysql’
注意:对于密码中含有特殊字符或空格,需要使用上引号阔起来。
- 连接本地MySQL服务,并使用默认用户名,同时对交互信息进行压缩处理:
shell> mysql --host=localhost --compress
Leave a Reply