6.2.10 Назначение паролей для учетных записей
Требуемые учетные данные для клиентов, подключающихся к серверу MySQL, могут включать пароль. В данном разделе описывается, как назначить пароли для учетных записей MySQL.
MySQL хранит учетные данные в таблице user в системной базе данных mysql. Операции по назначению или изменению паролей разрешены только пользователям с привилегией CREATE USER или, альтернативно, привилегиями для базы данных mysql (INSERT для создания новых учетных записей, UPDATE для изменения существующих). Если системная переменная read_only включена, использование операторов изменения учетных данных, таких как CREATE USER или ALTER USER, дополнительно требует привилегии SUPER.
Данное обсуждение подводит итоги синтаксису только для наиболее распространенных операторов назначения паролей. Для получения полной информации о других возможностях, см. Раздел 13.7.1.2, «Оператор CREATE USER», Раздел 13.7.1.1, «Оператор ALTER USER», Раздел 13.7.1.4, «Оператор GRANT» и Раздел 13.7.1.7, «Оператор SET PASSWORD».
MySQL использует плагины для выполнения аутентификации клиентов; см. Раздел 6.2.13, «Подключаемая аутентификация». В операторах назначения паролей плагин аутентификации, связанный с учетной записью, выполняет необходимые хеширование для явного пароля, указанного в операторе. Это позволяет MySQL шифровать пароли перед их сохранением в системной таблице mysql.user. В описанных здесь операторах MySQL автоматически хеширует указанный пароль. Также существует синтаксис для CREATE
USER и ALTER USER, который позволяет указывать хешированные значения явно. Подробности см. в описаниях этих операторов.
Чтобы назначить пароль при создании новой учетной записи, используйте CREATE USER и включите в него клаузу IDENTIFIED BY:
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';
CREATE USER также поддерживает синтаксис для указания плагина аутентификации учетной записи. См. Раздел 13.7.1.2, «Оператор CREATE USER».
Чтобы назначить или изменить пароль для существующей учетной записи, используйте оператор ALTER USER с клаузой IDENTIFIED BY:
ALTER USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';
Если вы не подключены как анонимный пользователь, вы можете изменить свой собственный пароль, не называя свою учетную запись явно:
ALTER USER USER() IDENTIFIED BY 'password';
Чтобы изменить пароль учетной записи из командной строки, используйте команду mysqladmin:
mysqladmin -u user_name -h host_name password "password"
Учетная запись, для которой эта команда устанавливает пароль, — это запись в системной таблице mysql.user, которая соответствует user_name в столбце User и клиенту-хосту с которого вы подключаетесь в столбце Host.
Установка пароля с помощью mysqladmin должна рассматриваться как небезопасная. На некоторых системах ваш пароль становится видимым для системных программ состояния, таких как ps, которые могут быть вызваны другими пользователями для отображения командных строк. Клиенты MySQL обычно перезаписывают аргумент пароля командной строки нулями во время последовательности инициализации. Однако все еще есть небольшой промежуток времени, в течение которого значение видно. Кроме того, на некоторых системах эта стратегия перезаписи неэффективна, и пароль остается видимым для ps. (Системы Unix SystemV и, возможно, другие подвержены этой проблеме.)
Если вы используете MySQL Replication, имейте в виду, что в настоящее время пароль, используемый репликой как часть оператора CHANGE MASTER TO, фактически ограничен 32 символами; если пароль длиннее, любые дополнительные символы усекаются. Это не связано с ограничениями, налагаемыми сервером MySQL в целом, а является проблемой, специфичной для MySQL Replication. (Дополнительную информацию см. в проблеме #43439.)
© 2025 Oracle
Licensed under the GPLv2 License.