本节解释连接MySQL的url语法。
这是连接URL的通用格式:
协议/ / (主机] [/数据库] [?属性]
URL由以下部分组成:
url的任何保留字符(例如,/
,:
,@
,(
),(
,]
,&
,#
,=
,?
,和空格)出现在连接URL的任何部分都必须进行百分比编码。
协议
连接有以下几种可能的协议:
jdbc: mysql:
用于普通和基本的JDBC故障转移连接。jdbc: mysql: loadbalance:
用于负载平衡JDBC连接。看到第9.3节“使用连接器/J配置负载均衡”获取详细信息。jdbc: mysql:复制:
用于JDBC复制连接。看到第9.4节“使用连接器/J配置源/副本复制”获取详细信息。mysqlx:
为X个DevAPI连接。jdbc: mysql + srv:
用于使用DNS SRV记录的普通和基本故障转移JDBC连接。jdbc: mysql + srv: loadbalance:
用于使用DNS SRV记录的JDBC连接的负载平衡。jdbc: mysql + srv:复制:
用于复制使用DNS SRV记录的JDBC连接。mysqlx +电脑:
为X个使用DNS SRV记录的DevAPI连接。
主机
根据情况而定宿主
S部分可以只是由一个主机名组成,也可以是由多个主机名、端口号、特定于主机的属性和用户凭证等各种元素组成的复杂结构。
-
-
的
主机
部分的写作格式为宿主
:港口
.这是一个简单的单主机连接URL的例子:jdbc: mysql: / / host1:33060 / sakila
宿主
可以是IPv4或IPv6主机名字符串,在后一种情况下,它必须放在方括号内,例如”[1000:2000: abcd]。”当宿主
未指定时,默认值为本地主机
使用。港口
标准端口号,取值范围为1 ~ 65535之间的整数。普通MySQL连接的默认端口号是3306,使用X协议连接的默认端口号是33060。如果港口
,则使用相应的默认值。
-
在本例中,主机被定义为
对。键用于标识主机、端口以及任何特定于主机的属性。有两种指定键的格式:关键
=价值
的”address-equals”形式:
地址=(主机=host_or_ip)(端口=港口)(key1=value1)(key2=value2)……keyN=家)
下面是一个使用”address-equals”形式:
jdbc: mysql: / /地址=(主机=并且)(端口= 1111)(key1 = value1) / db
的”键-值”形式:
(主机=宿主端口=港口,key1=value1,key2=value2、……keyN=家)
下面是一个使用”键-值”形式:
jdbc: mysql: / /(主机=并且端口= 1111,key1 = value1) / db
主机和端口由键标识
宿主
而且港口
.的格式说明和默认值宿主
而且港口
在没有主机特定属性的单个主机以上也同样适用于此。其他可以添加的键包括
用户
,密码
,协议
,等等。控件中设置的全局值属性
URL的一部分.将覆盖限制为用户、密码、网络超时、语句和元数据缓存的大小;没有定义其他每主机覆盖的影响。不同的协议可能需要不同的密钥。例如,
mysqlx:
方案使用两个特殊的密钥,地址
而且优先级
.地址
是一个宿主
:港口
对,优先级
一个整数。例如:mysqlx: / /(地址=主机:1111,优先级= 1,key1 = value1) / db
关键
是区分大小写的。两个只在情况下不同的键被认为是冲突的,并且不能保证将使用哪一个键。
-
指定多个主机有两种格式:
以逗号分隔的列表列出主机:
host1,host2、……hostN
中描述的三种方式中的任何一种都可以指定每个主机单台主机以上。下面是一些例子:
jdbc:mysql://myhost1:1111,myhost2:2222/db jdbc:mysql://address=(host=myhost1)(port=1111)(key1=value1),address=(host=myhost2)(port= 2211,key1= value2),(host=myhost2,port=2222,key2=value2)/db jdbc:mysql://(host=myhost1,port= 2222,key2=value2)/db mysqlx://(address=host1:1111,priority=1,key1= value2),(address=host2:2222,priority=2,key2=value2)/db
以逗号分隔的列表列出主机,然后用方括号括起来:
(host1,host2、……hostN]
这称为宿主子列表表单,它允许共享用户凭证通过列表中的所有主机,就像它们是单个主机一样。中描述的三种方式中的任意一种可以指定列表中的每个主机单台主机以上。下面是一些例子:
jdbc:mysql://sandy:secret@[myhost1:1111,myhost2:2222]/db jdbc:mysql://sandy:secret@[address=(host=myhost1)(port=1111)(key1=value1),address=(host=myhost2)(port=2222)(key2=value2)]/db jdbc:mysql://sandy:secret@[myhost1:1111,address=(host=myhost2)(port=2222)(key2=value2)]/db
虽然不可能递归地编写主机子列表,但主机列表可以包含主机子列表作为其成员主机。
可以在连接url之外设置用户凭据—例如,作为从
java.sql.DriverManager
(见第6.3节“配置属性”详情)。当使用连接URL设置时,有几种方法来指定它们:一个主机的前缀,一个主机子列表(参见多个主机),或具有用户凭据的主机列表中的任何主机
@
:用户:密码@host_or_host_sublist
例如:
mysqlx: / /桑迪:secret@[(地址= host1:1111,优先级= 1,key1 = value1),(地址= host2:2222,优先级= 2,key2 = value2))] / db
使用钥匙
用户
而且密码
为每个主机指定凭据。(用户=桑迪)(密码= mypass)
例如:
jdbc: mysql: / /((主机= myhost1端口= 1111,用户=桑迪,密码=秘密),(主机= myhost2端口= 2222,用户=芬恩,密码=秘密)]/ db jdbc: mysql: / /地址=(主机= myhost1)(端口= 1111)(用户=桑迪)(密码=秘密),地址=(主机= myhost2)(端口= 2222)(用户= finn)(密码=秘密)/ db
在这两种形式中,当指定多个用户凭据时,左边的凭据优先—也就是说,在连接字符串中从左到右,找到的第一个适用于主机的凭据就是所使用的凭据。
内部在主机子列表中,任何主机都不能拥有@格式的用户凭据,但单个主机可以拥有key格式指定的用户凭据。
数据库
要打开的默认数据库或目录。如果未指定数据库,则连接不使用默认数据库。在这种情况下,要么调用setCatalog ()
方法连接
实例,或者使用数据库名(即,选择
)。在不指定要使用的数据库的情况下打开连接,通常只在构建使用多个数据库的工具时有用,例如GUI数据库管理器。dbname
.的表
.colname
从dbname.tablename…
总是使用Connection.setCatalog ()
方法在JDBC应用程序中指定所需的数据库,而不是使用
声明。数据库
属性
应用于所有主机的一系列全局属性,前面是?
并写成
由符号分隔的一对”关键
=价值
&。
”下面是一些例子:
jdbc: mysql: / /(主机= myhost1端口= 1111),(主机= myhost2端口= 2222)/ db吗?key1 = value1&key2 = value2&key3 = value3
对于键值对,如下情况为真:
关键
而且价值
只是字符串。适当的类型转换和验证在Connector/J中内部执行。关键
是区分大小写的。两个只在情况下不同的键被认为是冲突的,并且不确定将使用哪一个。使用键值对指定的任何特定于主机的值,如中所述具有主机特定属性的单个主机而且多个主机以上覆盖这里设置的全局值。
看到第6.3节“配置属性”有关配置属性的详细信息。