8.2.1 Имена пользователей и пароли учётных записей
MySQL хранит учётные записи в таблице user системной базы данных mysql. Учётная запись определяется именем пользователя и хостом или хостами клиентов, с которых пользователь может подключиться к серверу. Сведения об отображении учётных записей в таблице user см. в разделе 8.2.3 «Таблицы разрешений».
Учётная запись может также иметь учетные данные для аутентификации, такие как пароль. Управление учетными данными выполняется плагином аутентификации учётной записи. MySQL поддерживает несколько плагинов аутентификации. Некоторые из них используют встроенные методы аутентификации, в то время как другие обеспечивают аутентификацию с использованием внешних методов аутентификации. См. раздел 8.2.17 «Подключаемая аутентификация».
Существует несколько отличий в способе использования имён пользователей и паролей MySQL и вашей операционной системой:
Имена пользователей, используемые MySQL для целей аутентификации, не имеют ничего общего с именами пользователей (имен входа) Windows или Unix. В Unix большинство клиентов MySQL по умолчанию пытаются войти в систему, используя текущее имя пользователя Unix в качестве имени пользователя MySQL, но это делается только для удобства. По умолчанию можно легко изменить, поскольку клиентские программы позволяют указать любое имя пользователя с помощью опции
-uили--user. Это означает, что любой может попытаться подключиться к серверу с любым именем пользователя, поэтому вы не можете сделать базу данных безопасной никаким образом, если все учётные записи MySQL не имеют паролей. Любой, кто укажет имя пользователя для учётной записи без пароля, может успешно подключиться к серверу.-
Имена пользователей MySQL могут иметь длину до 32 символов. Имена пользователей операционной системы могут иметь другую максимальную длину.
ПредупреждениеПредел длины имени пользователя MySQL жёстко запрограммирован в серверах и клиентах MySQL, и попытки обойти его путём изменения определений таблиц в базе данных
mysqlне работают.Вы никогда не должны изменять структуру таблиц в базе данных
mysqlкаким-либо образом, кроме того, что описано в главе 3 «Модернизация MySQL». Попытка переопределить таблицы системы MySQL любым другим способом приведёт к неопределённому и неподдерживаемому поведению. Сервер свободен игнорировать строки, которые становятся некорректными в результате таких изменений. -
Для аутентификации клиентских подключений для учётных записей, использующих встроенные методы аутентификации, сервер использует пароли, хранящиеся в таблице
user. Эти пароли отличаются от паролей для входа в вашу операционную систему. Нет необходимой связи между «внешним» паролем, используемым для входа в компьютер Windows или Unix, и паролем, используемым для доступа к серверу MySQL на этом компьютере.Если сервер аутентифицирует клиента с помощью другого плагина, метод аутентификации, реализуемый плагином, может или не может использовать пароль, хранящийся в таблице
user. В этом случае возможно использование внешнего пароля для аутентификации на сервере MySQL. Пароли, хранящиеся в таблице
user, шифруются с помощью специфичных для плагина алгоритмов.-
Если имя пользователя и пароль содержат только символы ASCII, подключение к серверу возможно независимо от настроек набора символов. Чтобы включить подключения, когда имя пользователя или пароль содержат не-ASCII символы, клиентские приложения должны вызывать функцию C API с опцией
MYSQL_SET_CHARSET_NAMEи соответствующим именем набора символов в качестве аргументов. Это приводит к аутентификации с использованием указанного набора символов. В противном случае аутентификация завершается неудачей, если набор символов по умолчанию сервера не совпадает с кодировкой в значениях по умолчанию аутентификации.Стандартные программы-клиенты MySQL поддерживают опцию
--default-character-set, которая вызывает вызов как описано выше. Кроме того, поддерживается автоматическое определение набора символов, как описано в разделе 12.4 «Наборы символов и наборы сопоставлений подключения». Для программ, использующих соединитель, не основанный на C API, соединитель может предоставить эквивалент, который можно использовать вместо этого. Обратитесь к документации соединителя.Приведённые выше замечания не применяются к
ucs2,utf16иutf32, которые не разрешены в качестве наборов символов клиентов.
Процесс установки MySQL заполняет таблицы разрешений начальной учётной записью root, как описано в разделе 2.9.4 «Обеспечение безопасности начальной учётной записи MySQL», в котором также объясняется, как задать ей пароль. После этого вы обычно настраиваете, изменяете и удаляете учётные записи MySQL с помощью команд, таких как CREATE USER, DROP USER, GRANT и REVOKE. См. раздел 8.2.8 «Добавление учётных записей, назначение разрешений и удаление учётных записей» и раздел 15.7.1 «Команды управления учётными записями».
Для подключения к серверу MySQL с помощью клиентской программы командной строки укажите необходимые опции имени пользователя и пароля для учётной записи, которую вы хотите использовать:
$> mysql --user=finley --password db_name
Если вы предпочитаете короткие опции, команда будет выглядеть так:
$> mysql -u finley -p db_name
Если вы опустите значение пароля после опции --password или -p в командной строке (как показано выше), клиент запросит его. В качестве альтернативы, пароль можно указать в командной строке:
$> mysql --user=finley --password=password db_name
$> mysql -u finley -ppassword db_name
Если вы используете опцию -p, между -p и последующим значением пароля не должно быть пробела.
Указание пароля в командной строке следует считать небезопасным. См. раздел 8.1.2.1 «Руководство для конечных пользователей по безопасности паролей». Чтобы избежать ввода пароля в командной строке, используйте файл опций или файл пути входа. См. раздел 6.2.2.2 «Использование файлов опций» и раздел 6.6.7 «mysql_config_editor — Утилита настройки MySQL».
Дополнительную информацию об указании имён пользователей, паролей и других параметров подключения см. в разделе 6.2.4 «Подключение к серверу MySQL с помощью параметров командной строки».
© 2025 Oracle
Licensed under the GPLv2 License.