6.2 Синтаксис URL подключения
В этом разделе описывается синтаксис URL-адресов для подключения к MySQL.
Вот общий формат URL подключения:
protocol//[hosts][/database][?properties]
URL состоит из следующих частей:
Любые защищенные символы для URL-адресов (например, /, :, @, (), [, ], &, #, =, ? и пробел), которые встречаются в любой части URL подключения, должны быть закодированы с помощью процента.
protocol
Возможные протоколы подключения:
jdbc:mysql:используется для обычных и базовые JDBC подключений с резервированием.jdbc:mysql:loadbalance:используется для подключений JDBC с балансировкой нагрузки. Подробнее см. Раздел 9.3, «Настройка балансировки нагрузки с Connector/J».jdbc:mysql:replication:используется для подключений JDBC к репликации. Подробнее см. Раздел 9.4, «Настройка репликации Source/Replica с Connector/J».mysqlx:используется для подключений X DevAPI.jdbc:mysql+srv:используется для обычных и базовые подключений JDBC с резервированием, которые используют записи DNS SRV.jdbc:mysql+srv:loadbalance:используется для подключений JDBC с балансировкой нагрузки, которые используют записи DNS SRV.jdbc:mysql+srv:replication:используется для подключений JDBC к репликации, которые используют записи DNS SRV.mysqlx+srv:используется для подключений X DevAPI, которые используют записи DNS SRV.
hosts
В зависимости от ситуации, часть host может состоять просто из имени хоста или может быть сложной структурой, состоящей из различных элементов, таких как несколько имён хостов, номеров портов, свойств, специфичных для хоста, и учетных данных пользователя.
-
Один хост:
-
Подключения к одному хосту без добавления свойств, специфичных для хоста:
-
Часть
hostsзаписывается в форматеhost:port. Это пример простого URL-адреса для подключения к одному хосту:jdbc:mysql://host1:33060/sakila
hostможет быть строкой имени хоста IPv4 или IPv6, а в последнем случае она должна быть помещена в квадратные скобки, например “[1000:2000::abcd].” Еслиhostне указано, используется значение по умолчаниюlocalhost.port— стандартный номер порта, т. е. целое число от 1 до 65535. Номер порта по умолчанию для обычного подключения к MySQL — 3306, а для подключения с использованием протокола X — 33060. Еслиportне указано, используется соответствующее значение по умолчанию.
-
-
Подключения к одному хосту с добавлением свойств, специфичных для хоста:
-
В этом случае хост определяется как последовательность пар ключ-значение. Ключи используются для идентификации хоста, порта, а также любых свойств, специфичных для хоста. Существуют два альтернативных формата для указания ключей:
-
форма “address-equals”:
address=(host=host_or_ip)(port=port)(key1=value1)(key2=value2)...(keyN=valueN)Вот пример URL-адреса, использующего форму “address-equals”:
jdbc:mysql://address=(host=myhost)(port=1111)(key1=value1)/db
-
форма “key-value”:
(host=
host,port=port,key1=value1,key2=value2,...,keyN=valueN)Вот пример URL-адреса, использующего форму “key-value”:
jdbc:mysql://(host=myhost,port=1111,key1=value1)/db
-
Хост и порт идентифицируются ключами
hostиport. Описания формата и значений по умолчанию дляhostиportв Раздел «Один хост без свойств, специфичных для хоста» выше также применяются здесь.Другие добавляемые ключи включают
user,password,protocolи так далее. Они переопределяют глобальные значения, заданные вpropertiesчасти URL. Ограничьте переопределения пользователем, паролем, тайм-аутами сети и размерами кэша заявок и метаданных; эффекты других переопределений на основе хоста не определены.-
Разные протоколы могут требовать разные ключи. Например, схема
mysqlx:использует два специальных ключа,addressиpriority.address— параhost:port, аpriority— целое число. Например:mysqlx://(address=host:1111,priority=1,key1=value1)/db
key— чувствителен к регистру. Два ключа, отличающиеся только регистром, считаются конфликтующими, и нет гарантий, какой из них будет использован.
-
-
Несколько хостов
Есть два формата для указания нескольких хостов:
-
Хосты перечисляются в списке, разделенном запятыми:
host1,host2,...,hostNКаждый хост может быть указан любым из трёх способов, описанных в Раздел «Один хост» выше. Вот некоторые примеры:
jdbc:mysql://myhost1:1111,myhost2:2222/db jdbc:mysql://address=(host=myhost1)(port=1111)(key1=value1),address=(host=myhost2)(port=2222)(key2=value2)/db jdbc:mysql://(host=myhost1,port=1111,key1=value1),(host=myhost2,port=2222,key2=value2)/db jdbc:mysql://myhost1:1111,(host=myhost2,port=2222,key2=value2)/db mysqlx://(address=host1:1111,priority=1,key1=value1),(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 подключения существуют несколько способов:-
Предположите за один хост, подсписком хостов (см. Раздел «Несколько хостов») или любым хостом в списке хостов с учетными данными пользователя с помощью
@:user:password@host_or_host_sublistНапример:
mysqlx://sandy:secret@[(address=host1:1111,priority=1,key1=value1),(address=host2:2222,priority=2,key2=value2))]/db
-
Используйте ключи
userиpasswordдля указания учетных данных для каждого хоста:(user=sandy)(password=mypass)
Например:
jdbc:mysql://[(host=myhost1,port=1111,user=sandy,password=secret),(host=myhost2,port=2222,user=finn,password=secret)]/db jdbc:mysql://address=(host=myhost1)(port=1111)(user=sandy)(password=secret),address=(host=myhost2)(port=2222)(user=finn)(password=secret)/db
В обоих форматах, когда указано несколько учетных данных пользователя, учетные данные слева имеют приоритет — то есть, слева направо в строке подключения, первые найденные, которые применимы к хосту, будут использоваться.
Внутри подсписка хостов ни один хост не может иметь учетные данные в формате @, но отдельные хосты могут иметь учетные данные, указанные в формате ключа.
-
databaseБаза данных или каталог по умолчанию для открытия. Если база данных не указана, подключение выполняется без базы данных по умолчанию. В этом случае вызовите метод
setCatalog()для экземпляраConnectionили укажите имена таблиц с использованием имени базы данных (т. е.SELECT) в ваших SQL-запросах. Открытие подключения без указания используемой базы данных, как правило, полезно только при создании инструментов, работающих с несколькими базами данных, таких как менеджеры баз данных с графическим интерфейсом.dbname.tablename.colnameFROM dbname.tablename...ПримечаниеВ JDBC-приложениях всегда используйте метод
Connection.setCatalog()для указания необходимой базы данных, а не утверждениеUSE.databaseproperties -
Последовательность глобальных свойств, применяемых ко всем хостам, предваряемых ? и записанных как пары, разделённые символом “key=value&.”. Вот несколько примеров:
jdbc:mysql://(host=myhost1,port=1111),(host=myhost2,port=2222)/db?key1=value1&key2=value2&key3=value3Для пар ключ-значение справедливо следующее:
keyиvalue— это просто строки. Преобразование типов и валидация выполняются внутри Connector/J.keyчувствительна к регистру. Два ключа, различающиеся только регистром, считаются конфликтующими, и неясно, какой из них будет использован.Любые значения, специфичные для хоста, указанные с помощью пар ключ-значение, как описано в Разделе о хосте с собственными свойствами и Разделе о нескольких хостах выше, переопределяют глобальные значения, установленные здесь.
Подробную информацию о свойствах конфигурации см. в разделе 6.3 «Свойства конфигурации».
© 2025 Oracle
Licensed under the GPLv2 License.