【MySQL学生手册】MySQL客户端程序的调用

本文地址: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

 


Posted

in

by

Tags:

Comments

2 responses to “【MySQL学生手册】MySQL客户端程序的调用”

Leave a Reply

Your email address will not be published. Required fields are marked *