网站改版协议,云南网络推广服务,吉林省建设安全信息网,秦皇岛 网站制作本节介绍使用类似URI的连接字符串或键值对来指定如何为MySQLShell等客户端建立到MySQL服务器的连接。
以下MySQL客户端支持使用类似URI的连接字符串或键值对连接到MySQL服务器#xff1a;
MySQL Shell实现X DevAPI的MySQL连接器
本节记录了所有有效的类似URI的字符串和键值…本节介绍使用类似URI的连接字符串或键值对来指定如何为MySQLShell等客户端建立到MySQL服务器的连接。
以下MySQL客户端支持使用类似URI的连接字符串或键值对连接到MySQL服务器
MySQL Shell实现X DevAPI的MySQL连接器
本节记录了所有有效的类似URI的字符串和键值对连接参数的影响其中许多与命令行选项指定的相似
使用类似URI的字符串指定的参数使用myuserexample.com:3306/main-schema等语法。使用键值对指定的参数使用以下语法{user:myuser, host:example.com, port:3306, schema:main-schema}。
连接参数不区分大小写。如果指定每个参数只能给出一次。如果一个参数被指定多次则会发生错误。
基础连接参数 以下讨论描述了指定与MySQL的连接时可用的参数。这些参数可以使用符合基本类似URI语法的字符串请参阅使用类似URI的连接字符串进行连接或作为键值对请参阅使用键值对进行连接提供。
scheme要使用的传输协议。X协议连接使用mysqlx经典MySQL协议连接使用mysql。如果未指定协议服务器会尝试猜测协议。支持域名系统SRV的连接器可以使用mysqlxsrv方案请参阅使用DNS SRV记录的连接。 userMySQL为用户帐户提供鉴权过程。 password用于鉴权过程的密码。在连接规范中指定显式密码不安全且不推荐。稍后的讨论将展示如何导致密码出现交互式提示。 host运行服务器实例的主机。该值可以是主机名、IPv4地址或IPv6地址。如果未指定主机则默认为localhost。 port目标MySQL服务器侦听连接的TCP/IP网络端口。如果未指定端口则X协议连接默认为33060经典MySQL协议连接默认为3306。 socketUnix套接字文件的路径或Windows命名管道的名称。值是本地文件路径。在类似URI的字符串中它们必须使用百分比编码或用括号包围路径进行编码。括号消除了百分比编码字符的需要例如/目录分隔符字符。例如要使用Unix套接字连接为rootlocalhost/tmp/mysql.sock使用百分比编码指定路径为rootlocalhost?socket%2Ftmp%2Fmysql.sock或使用括号作为rootlocalhost?socket(/tmp/mysql.sock)。 schema连接的默认数据库。如果未指定数据库则连接没有默认数据库。
Unix对localhost的处理取决于传输协议的类型。使用经典MySQL协议的连接处理localhost与其他MySQL客户端相同的方式这意味着localhost被假定为基于套接字的连接。对于使用X协议的连接localhost的行为不同之处在于它被假定为表示环回地址例如IPv4地址127.0.0.1。
附加连接参数
您可以指定连接的选项通过附加?attributevalue作为类URI字符串中的属性或者作为键值对。以下选项可用 ssl-mode连接所需的安全状态。以下模式是允许的DISABLED、PREFERRED、REQUIRED、VERIFY_CA、VERIFY_IDENTITY重要VERIFY_CA并且VERIFY_IDENTITY是比默认的PREFERRED更好的选择因为它们有助于防止中间人攻击。 ssl-caPEM格式的X.509证书颁发机构文件的路径。 ssl-capath包含PEM格式的X.509证书授权文件的目录的路径。 ssl-certPEM格式的X.509证书文件的路径。 ssl-cipher用于通过TLSv1.2使用TLS协议的连接的加密密码。 ssl-crl包含PEM格式证书吊销列表的文件的路径。 ssl-crlpath包含PEM格式证书吊销列表文件的目录的路径。 ssl-keyPEM格式的X.509密钥文件的路径。 tls-version经典MySQL协议加密连接允许的TLS协议。此选项仅受MySQLShell支持。tls-version单数的值是逗号分隔的列表例如TLSv1.2、TLSv1.3。有关详细信息请参阅“加密连接TLS协议和密码”。此选项取决于未设置为DISABLED的ssl-mode选项。TLS-版本加密X协议连接允许的TLS协议。TLS-版本的值复数是一个数组例如[TLSv1.2 TLSv1.3]。有关详细信息请参阅“加密连接TLS协议和密码”。此选项取决于未设置为DISABLED的ssl模式选项。tls-ciphersuites允许的TLS密码套件。tls-ciphersuites的值是TLS密码套件中列出的IANA密码套件名称列表。有关详细信息请参阅“加密连接TLS协议和密码”。此选项取决于未设置为DISABLED的ssl-mode选项。 auth-method用于连接的鉴权方法。默认为AUTO表示服务器尝试猜测。以下方法是允许的AUTO、MYSQL41、SHA256_MEMORY、FROM_CAPABILITIES、FALLBACK、PLAIN对于X协议连接任何配置auth-method都将被覆盖到以下鉴权方法序列MYSQL41、SHA256_MEMORY、PLAIN。 get-server-public-key向服务器请求基于RSA密钥对的密码交换所需的公钥。通过SSL模式的经典MySQL协议连接到MySQL8台服务器时使用DISABLED。在这种情况下您必须指定协议。例如 mysql://userlocalhost:3306?get-server-public-keytrue 此选项适用于使用caching_sha2_password鉴权插件进行身份验证的客户端。对于该插件除非请求否则服务器不会发送公钥。对于未使用该插件进行身份验证的帐户此选项将被忽略。如果不使用基于RSA的密码交换也会忽略此选项例如客户端使用安全连接连接到服务器时。 如果给出server-public-key-pathfile_name并指定有效的公钥文件则它优先于get-server-public-key。 server-public-key-path PEM格式文件的路径名其中包含服务器进行基于RSA密钥对的密码交换所需的公钥的客户端副本。通过SSL模式的经典MySQL协议连接到MySQL8服务器时使用DISABLED。 此选项适用于使用sha256_password已弃用或caching_sha2_password鉴权插件进行身份验证的客户端。对于未使用这些插件之一进行身份验证的帐户此选项将被忽略。如果不使用基于RSA的密码交换也会忽略此选项例如客户端使用安全连接连接到服务器时。 如果给出server-public-key-pathfile_name并指定有效的公钥文件则它优先于get-server-public-key。 ssh使用SSH隧道连接到SSH服务器以访问MySQL服务器实例的URI。URI格式为[user]host[:port]。使用uri选项指定目标MySQL服务器实例的URI。 uri要通过SSH隧道从ssh选项指定的服务器访问的MySQL服务器实例的URI。URI格式为[scheme://][user]host[:port]。不要使用基本连接参数scheme、user、host、port来指定SSH隧道的MySQL服务器连接只需使用uri选项。 ssh-password连接到SSH服务器的密码。警告在连接规范中指定显式密码不安全且不推荐。MySQLShell会在需要密码时以交互方式提示输入密码。 ssh-config-file连接SSH服务器的SSH配置文件。如果未指定MySQLShell配置选项ssh.configFile可以使用该选项将自定义文件设置为默认值。如果未设置ssh.configFile则默认为标准SSH配置文件~/.ssh/config。 ssh-identity-file用于连接到SSH服务器的标识文件。如果未指定此选项则默认为在SSH代理如果使用、SSH配置文件或SSH配置文件夹~/. ssh/id_rsa~/.ssh/id_rsa ssh-identity-pass标识文件的密码由ssh-identity-file选项指定。警告在连接规范中指定显式密码不安全且不推荐。MySQLShell会在需要密码时以交互方式提示输入密码。 connect-timeout一个整数值用于配置客户端如MySQLShell在停止尝试连接到无响应MySQL服务器之前等待的秒数。 compression此选项请求或禁用连接的压缩。 此选项可用的值是required请求压缩如果服务器不支持则失败preferred请求压缩并回退到未压缩的连接disabled请求未压缩的连接如果服务器不允许则失败。preferred是X协议连接的默认值disabled是经典MySQL协议连接的默认值。有关X插件连接压缩控制的信息请参阅“使用X插件进行连接压缩”。注不同的MySQL客户端实现其对连接压缩的支持不同。有关详细信息请参阅客户端的留档。 compression-algorithms和compression-level这些选项在MySQLShell中提供可以更好地控制连接压缩。您可以指定它们来选择用于连接的压缩算法以及用于该算法的数字压缩级别。您还可以使用compression-algorithms代替compression来请求连接的压缩。 connection-attributes控制应用程序在连接时传递给服务器的键值对。有关连接属性的一般信息请参见“性能架构连接属性表”。客户端通常定义一组默认属性可以禁用或启用。例如 mysqlx://userhost?connection-attributes
mysqlx://userhost?connection-attributestrue
mysqlx://userhost?connection-attributesfalse 默认行为是发送默认属性集。除了默认属性之外应用程序还可以指定要传递的属性。您可以将其他连接属性指定为连接字符串中的connection-attributes参数。connection-attributes参数值必须为空与指定true相同、Boolean值true或false以启用或禁用默认属性集或列表或零个或多个keyvalue mysqlx://userhost?connection-attributes[attr1val1,attr2,attr3]
mysqlx://userhost?connection-attributes[] 应用程序定义的属性名称不能以_开头因为这些名称是为内部属性保留的。
使用类似URI的连接字符串进行连接 您可以使用类似URI的字符串指定与MySQL Server的连接。此类字符串可以与带有--uri命令选项的MySQL Shell、MySQL Shell\connect命令和实现X DevAPI的MySQL Connectors一起使用。
类似URI的连接字符串具有以下语法
[scheme://][user[:[password]]]host[:port][/schema][?attribute1value1attribute2value2...
重要百分比编码必须用于类URI字符串元素中的保留字符。例如如果指定包含字符的字符串则该字符必须替换为%40。如果在IPv6地址中包含区域ID则用作分隔符的%字符必须替换为%25。
MySQLShell的shell.parseUri()和shell.unparseUri()方法可用于解构和组装类似URI的连接字符串。给定一个类似URI的连接字符串shell.parseUri()返回一个字典其中包含字符串中找到的每个元素。shell.unparseUri()将URI组件和连接选项的字典转换为有效的类似URI的连接字符串用于连接到MySQL可以在MySQLShell或实现X DevAPI的MySQL连接器中使用。
如果建议在类URI字符串中未指定密码则交互式客户端会提示输入密码。以下示例显示如何使用用户名user_name指定类URI字符串。在每种情况下都会提示输入密码。 与侦听端口33065的本地服务器实例的X协议连接。 mysqlx://user_namelocalhost:33065 与侦听端口3333的本地服务器实例的经典MySQL协议连接。 mysql://user_namelocalhost:3333 使用主机名、IPv4地址和IPv6地址与远程服务器实例的X协议连接。 mysqlx://user_nameserver.example.com/
mysqlx://user_name198.51.100.14:123
mysqlx://user_name[2001:db8:85a3:8d3:1319:8a2e:370:7348] 使用套接字的X协议连接使用百分比编码或括号提供路径。 mysqlx://user_name/path%2Fto%2Fsocket.sock
mysqlx://user_name(/path/to/socket.sock) 可以指定表示数据库的可选路径。 # use world as the default database
mysqlx://user_name198.51.100.1/world# use world_x as the default database, encoding _ as %5F
mysqlx://user_name198.51.100.2:33060/world%5Fx 可以指定一个可选查询每个查询都包含keyvalue对或单个key。要指定多个值请用字符分隔它们,允许混合使用keyvalue和key。值可以是list类型列表值按外观排序。字符串必须以百分比编码或用括号括起来。以下是等效的。 ssluser127.0.0.1?ssl-ca%2Froot%2Fclientcert%2Fca-cert.pem\
ssl-cert%2Froot%2Fclientcert%2Fclient-cert.pem\
ssl-key%2Froot%2Fclientcert%2Fclient-keyssluser127.0.0.1?ssl-ca(/root/clientcert/ca-cert.pem)\
ssl-cert(/root/clientcert/client-cert.pem)\
ssl-key(/root/clientcert/client-key) 要指定用于加密连接的TLS版本和密码套件 mysql://user_name198.51.100.2:3306/world%5Fx?\
tls-versions[TLSv1.2,TLSv1.3]tls-ciphersuites[TLS_DHE_PSK_WITH_AES_128_\
GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256] 前面的示例假定连接需要密码。对于交互式客户端在登录提示时请求指定用户的密码。如果用户帐户没有密码这是不安全的不推荐使用或者使用套接字对等凭据鉴权例如Unix套接字连接则必须在连接字符串中明确指定不提供密码也不需要密码提示。为此请在字符串中的user_name之后放置:但不要在其后面指定密码。例如 mysqlx://user_name:localhost
使用键值对进行连接
在MySQLShell和一些实现X DevAPI的MySQL连接器中您可以使用键值对来指定到MySQLServer的连接这些键值对是为实现提供的语言自然结构。例如您可以使用键值对作为JavaScript中的JSON对象或Python中的字典来提供连接参数。无论键值对的提供方式如何概念都保持不变可以为本节中描述的键分配用于指定连接的值。您可以使用MySQLShell的shell. connect方法或InnoDB簇的dba.createCluster方法中的键值对来指定连接也可以使用一些实现X DevAPI的MySQL连接器来指定连接。
通常键值对由{和}字符包围字符用作键值对之间的分隔符。字符用于键和值之间字符串必须分隔例如使用字符。与类似URI的连接字符串不同不需要百分比编码字符串。
指定为键值对的连接具有以下格式
{ key: value, key: value, ...}
可以用作连接键的参数在基本连接参数中进行了描述。
如果键值对中未指定密码建议这样做则交互式客户端会提示输入密码。以下示例显示如何使用用户名“user_name”的键值对指定连接。在每种情况下都会提示输入密码。 与侦听端口33065的本地服务器实例的X协议连接。 {user:user_name, host:localhost, port:33065} 与侦听端口3333的本地服务器实例的经典MySQL协议连接。 {user:user_name, host:localhost, port:3333} 使用主机名、IPv4地址和IPv6地址与远程服务器实例的X协议连接。 {user:user_name, host:server.example.com}
{user:user_name, host:198.51.100.14:123}
{user:user_name, host:[2001:db8:85a3:8d3:1319:8a2e:370:7348]} 使用套接字的X协议连接。 {user:user_name, socket:/path/to/socket/file} 可以指定一个可选的schema它代表一个数据库。 {user:user_name, host:localhost, schema:world}
前面的示例假定连接需要密码。对于交互式客户端在登录提示时请求指定用户的密码。如果用户帐户没有密码这是不安全的不推荐使用或者使用套接字对等凭据鉴权例如Unix套接字连接则必须明确指定不提供密码也不需要密码提示。为此请在password键后使用提供空字符串。例如
{user:user_name, password:, host:localhost}