Spec-Zone .ru
спецификации, руководства, описания, API
|
MySQL хранит учетные записи в user
таблица mysql
база
данных. Учетная запись определяется с точки зрения имени пользователя и хоста клиента или размещает, от которого
пользователь может соединиться с сервером. У учетной записи может также быть пароль. Для получения информации о
представлении учетной записи в user
таблица, см. Раздел
6.2.2, "Полномочие Систем Грант Тэбльз". MySQL 5.7 поддерживает плагины аутентификации, таким
образом, возможно, что учетная запись аутентифицирует использование некоторого внешнего метода аутентификации.
См. Раздел
6.3.7, "Сменная Аутентификация".
Есть несколько различий между способом, которым имена пользователей и пароли используются MySQL и способом, которым они используются Вашей операционной системой:
Имена пользователей, как использующийся MySQL в целях аутентификации, не имеют
никакого отношения к именам пользователей (имена для входа в систему) как использующийся Windows или
Unix. На Unix большинство клиентов MySQL значением по умолчанию пытается войти в систему, используя
текущее имя пользователя Unix в качестве имени пользователя MySQL, но это для удобства только. Значение
по умолчанию может быть переопределено легко, потому что клиентские программы разрешают любому имени
пользователя быть определенным с a -u
или --user
опция. Поскольку это означает, что любой может попытаться соединиться с сервером, используя любое имя
пользователя, невозможно сделать базу данных безопасной всегда, если у всех учетных записей MySQL нет
паролей. Любой, кто определяет имя пользователя для учетной записи, у которой нет никакого пароля, в
состоянии соединиться успешно с сервером.
Имена пользователей MySQL могут быть до 16 символов долго. Имена пользователей операционной системы, потому что они абсолютно не связаны с именами пользователей MySQL, могут иметь различную максимальную длину. Например, имена пользователей Unix обычно ограничиваются восемью символами.
Предел на длине имени пользователя MySQL трудно кодируется в серверах MySQL и клиентах,
и пытающийся обойти это, изменяя определения таблиц в mysql
база
данных не работает.
Никогда недопустимо изменять ни одну из таблиц в mysql
база данных любым способом вообще кроме посредством процедуры, которая описывается в Разделе 4.4.7, "mysql_upgrade — Таблицы MySQL Check и Upgrade"
. Попытка пересмотреть системные таблицы MySQL любым другим способом приводит к
неопределенному (и неподдерживаемый!) поведение.
Сервер использует пароли MySQL, сохраненные в user
таблица, чтобы аутентифицировать клиентский MySQL использования соединений собственная аутентификация
(против паролей, сохраненных в mysql.user
таблица). Эти пароли не имеют
никакого отношения к паролям для того, чтобы войти в систему к Вашей операционной системе. Нет никакого
необходимого соединения между "внешним"
паролем, который Вы используете, чтобы войти в систему к Windows или машине Unix и паролю, который Вы
используете, чтобы получить доступ к серверу MySQL на той машине.
Если сервер аутентифицирует клиент, использующий плагин, метод аутентификации, что сменные
реализации могут или, возможно, не используют пароль в user
таблица. В
этом случае возможно, что внешний пароль также используется, чтобы аутентифицировать к серверу
MySQL.
MySQL шифрует пароли, сохраненные в user
таблица
используя ее собственный алгоритм. Это шифрование является тем же самым как реализованным PASSWORD()
Функция SQL, но отличается от используемого во время процесса входа в систему Unix. Шифрование пароля
Unix является тем же самым как реализованным ENCRYPT()
Функция SQL. См. описания PASSWORD()
и ENCRYPT()
функции в Разделе
12.13, "Шифрование и Функции Сжатия".
От версии 4.1 на MySQL использует более сильный метод аутентификации, у которого есть лучшая защита
паролем во время процесса соединения чем в более ранних версиях. Это безопасно, даже если пакеты
TCP/IP вдыхаются или mysql
база данных получается. (В более ранних
версиях, даже при том, что пароли сохранены в зашифрованной форме в user
таблица, знание зашифрованного значения пароля могло
использоваться, чтобы соединиться с сервером MySQL.) Раздел
6.1.2.4, "Пароль, Хеширующий в MySQL", обсуждает шифрование пароля далее.
Возможно соединиться с сервером независимо от настроек набора символов, если имя
пользователя и пароль содержат только символы ASCII. Чтобы соединиться, когда имя пользователя или
пароль содержат символы неASCII, клиент должен вызвать mysql_options()
C API-функция с MYSQL_SET_CHARSET_NAME
опция и соответствующий набор символов называют как параметры. Это заставляет аутентификацию иметь
место, используя указанный набор символов. Иначе, аутентификация перестанет работать, если набор
символов значения по умолчанию сервера не будет тем же самым как кодированием в значениях по умолчанию
аутентификации.
Стандартные клиентские программы MySQL поддерживают a --default-character-set
опция, которая вызывает mysql_options()
быть вызванным как только описано. Кроме того,
автоматическое обнаружение набора символов поддерживается как описано в Разделе
10.1.4, "Наборы символов соединения и Сопоставления". Для программ, которые
используют соединитель, который не основан на API C, соединитель может обеспечить эквивалент mysql_options()
это
может использоваться вместо этого. Проверьте документацию соединителя.
Предыдущие примечания не просят ucs2
, utf16
, и utf32
, которые не разрешаются как
клиентские наборы символов.
Когда Вы устанавливаете MySQL, таблицы предоставления заполняются с начальным набором учетных записей. Имена и
права доступа для этих учетных записей описываются в Разделе
2.10.2, "Защищая Учетные записи MySQL Initial", который также обсуждает, как присвоить пароли
им. После того Вы обычно устанавливаете, изменяете, и удаляете операторы использования учетных записей MySQL
такой как CREATE USER
, GRANT
, и REVOKE
. См. Раздел 13.7.1,
"Операторы Ведения счетов".
Когда Вы соединяетесь с сервером MySQL с клиентом командной строки, определите имя пользователя и пароль по мере необходимости для учетной записи, которую Вы хотите использовать:
shell> mysql --user=monty --password=password
db_name
Если Вы предпочитаете короткие опции, команда похожа на это:
shell> mysql -u monty -ppassword
db_name
Не должно быть никакого пространства между -p
опция и следующее значение пароля.
Если Вы опускаете password
значение после --password
или -p
опция на командной строке, клиент
запрашивает одного.
Определение пароля на командной строке нужно считать небезопасным. См. Раздел 6.1.2.1, "Направляющие линии Конечного пользователя для Безопасности Пароля". Можно использовать файл опции, чтобы избежать давать пароль на командной строке.
Для дополнительной информации об определении имен пользователей пароли, и другие параметры соединения, видят Раздел 4.2.2, "Соединяясь с MySQL Server".