Spec-Zone .ru
спецификации, руководства, описания, API
|
Имена учетной записи MySQL состоят из имени пользователя и имени хоста. Это включает созданию, учитывает пользователей с тем же самым именем, которые могут соединиться от различных узлов. Этот раздел описывает, как записать имена учетной записи, включая специальные значения и подстановочные правила.
В SQL-операторах такой как CREATE USER
,
GRANT
, и SET
PASSWORD
, запишите имена учетной записи, используя следующие правила:
Синтаксис для имен учетной записи '
. user_name
'@'host_name
'
Имя учетной записи, состоящее только из имени пользователя, эквивалентно '
. Например, user_name
'@'%''me'
эквивалентно 'me'@'%'
.
Имя пользователя и имя хоста не должны быть заключены в кавычки, если они законные
как закрывшие кавычки идентификаторы. Кавычки необходимы, чтобы определить a user_name
строка, содержащая специальные символы (такой
как"-
"),
или a host_name
строка, содержащая специальные символы или
подстановочные символы (такой как"%
"); например, 'test-user'@'%.com'
.
Заключите в кавычки имена пользователей и имена хоста как идентификаторы или как
строки, используя любой обратные галочки ("`
"), единственные кавычки ("'
"), или
двойные кавычки ("
"
").
Части имени пользователя и имени хоста, если заключено в кавычки, должны быть
заключены в кавычки отдельно. Таким образом, запишите 'me'@'localhost'
, нет
'me@localhost'
; последний интерпретируется как 'me@localhost'@'%'
.
Ссылка на CURRENT_USER
или CURRENT_USER()
функция эквивалентна определению имени пользователя
текущего клиента и имени хоста буквально.
MySQL хранит имена учетной записи в таблицах предоставления в mysql
база данных
используя отдельные столбцы для частей имени пользователя и имени хоста:
user
таблица содержит одну строку для каждой учетной
записи. User
и Host
столбцы хранят имя
пользователя и имя хоста. Эта таблица также показывает, какие глобальные полномочия учетная запись
имеет.
Другие таблицы предоставления показывают полномочия, которые учетная запись имеет
для баз данных и объектов в пределах баз данных. Эти таблицы имеют User
и
Host
столбцы, чтобы сохранить имя учетной записи. Каждая строка в этих
таблицах связывается с учетной записью в user
таблица, у которой есть то же
самое User
и Host
значения.
Для дополнительной детали о структуре таблицы предоставления см. Раздел 6.2.2, "Полномочие Систем Грант Тэбльз".
У имен пользователей и имен хоста есть определенные специальные значения или подстановочные соглашения, как описано после.
Имя пользователя является или непустым значением, которое буквально соответствует имя пользователя для входящих
попыток подключения, или пустое значение (пустая строка), который соответствует любое имя пользователя. Учетная
запись с пустым именем пользователя является анонимным пользователем. Чтобы определить анонимного пользователя в
SQL-операторах, используйте заключенную в кавычки пустую часть имени пользователя, такой как ''@'localhost'
.
Часть имени хоста имени учетной записи может принять много форм, и подстановочные знаки разрешаются:
Значение узла может быть именем хоста или IP-адресом (IPv4 или IPv6). Имя 'localhost'
указывает на локальный узел. IP-адрес '127.0.0.1'
указывает на петлевой интерфейс IPv4. IP-адрес '::1'
указывает на петлевой
интерфейс IPv6.
Можно использовать подстановочные
символы"%
"и"_
"в имени
хоста или значениях IP-адреса. У них есть то же самое значение что касается операций сопоставления с
образцом, выполняемых с LIKE
оператор. Например, значение узла '%'
соответствия любое имя хоста, тогда как значение '%.mysql.com'
соответствия любой узел в mysql.com
домен. '192.168.1.%'
соответствия
любой узел в 192.168.1 class C сеть.
Поскольку можно использовать подстановочные значения IP в значениях узла (например, '192.168.1.%'
соответствовать каждый узел на подсети), кто-то мог
попытаться использовать эту возможность, называя узел 192.168.1.somewhere.com
. Чтобы помешать таким попыткам, MySQL
отвергает соответствие на именах хоста, которые запускаются с цифр и точки. Таким образом, если Вам
назвали узел что-то как 1.2.example.com
, его имя никогда не
соответствует часть узла имен учетной записи. Подстановочное значение IP может соответствовать
только IP-адреса, не имена хоста.
Для значения узла, определенного как адрес IPv4, можно определить сетевую маску, указывающую сколько адресных битов, чтобы использовать для сетевого числа. Нотация сетевой маски не может использоваться для адресов IPv6.
Синтаксис
. Например: host_ip
/netmask
CREATE USER 'david'@'192.58.197.0/255.255.255.0';
Это включает david
соединяться от любого хоста клиента, имеющего
IP-адрес client_ip
для которого следующее условие является
истиной:
client_ip
&netmask
=host_ip
Таким образом, для CREATE USER
оператор, только показанный:
client_ip
& 255.255.255.0 = 192.58.197.0
IP-адреса, которые удовлетворяют это условие и могут соединиться с сервером MySQL, являются теми в
диапазоне от 192.58.197.0
к 192.58.197.255
.
Сетевая маска может только использоваться, чтобы сказать серверу использовать 8, 16, 24, или 32 бита адреса. Примеры:
192.0.0.0/255.0.0.0
: Любой узел на 192
class сеть
192.168.0.0/255.255.0.0
: Любой узел на
192.168 class B сеть
192.168.1.0/255.255.255.0
: Любой узел на
192.168.1 class C сеть
192.168.1.1
: Только узел с этим
определенным IP-адресом
Следующая сетевая маска не будет работать, потому что она маскирует 28 битов, и 28 не кратное число 8:
192.168.0.1/255.255.255.240
Сервер выполняет соответствие значений узла на имена учетной записи против хоста клиента, используя значение, возвращенное системным преобразователем DNS для имени хоста клиента или IP-адреса. Кроме в случае, что значение узла учетной записи определяется, используя нотацию сетевой маски, это сравнение выполняется как строковое соответствие, даже для значения узла учетной записи, данного как IP-адрес. Это означает, что следует определить значения узла учетной записи в том же самом формате, используемом DNS. Вот примеры проблем не упустить:
Предположите, что у узла на локальной сети есть полностью определенное имя host1.example.com
. Если DNS возвращает поиски имени для этого узла как host1.example.com
, используйте то имя в значениях узла учетной записи. Но
если DNS возвращается только host1
, использовать host1
вместо этого.
Если DNS возвращает IP-адрес для данного узла как 192.168.1.2
, это будет соответствовать значение узла учетной записи 192.168.1.2
но нет 192.168.01.2
. Точно так же
это будет соответствовать образец узла учетной записи как 192.168.1.%
но
нет 192.168.01.%
.
Чтобы избежать проблем как это, желательно проверить формат, в котором Ваш DNS возвращает имена хоста и адреса, и значения использования в том же самом формате на имена учетной записи MySQL.