Подключаемый модуль аутентификации — mysql_native_password
Подключаемый модуль аутентификации mysql_native_password является стандартным подключаемым модулем аутентификации, который будет использоваться для учетной записи, созданной, когда не указан явно подключаемый модуль аутентификации, и параметр old_passwords=0 установлен. Он использует алгоритм хеширования паролей, введенный в MySQL 4.1, который также используется функцией PASSWORD(), когда параметр old_passwords=0 установлен. Этот алгоритм хеширования основан на SHA-1.
Не рекомендуется использовать подключаемый модуль аутентификации mysql_native_password для новых установок, требующих высокой безопасности паролей. Если кто-то может как прослушивать протокол подключения, так и получить копию таблицы mysql.user, то этот человек сможет использовать эту информацию для подключения к серверу MariaDB. Подключаемый модуль аутентификации ed25519 — это более современный подключаемый модуль аутентификации, который обеспечивает простую аутентификацию паролей с использованием более безопасного алгоритма.
Установка подключаемого модуля
Подключаемый модуль аутентификации mysql_native_password статически связан с сервером, поэтому установка не требуется.
Создание пользователей
Самый простой способ создать учетную запись пользователя с подключаемым модулем аутентификации mysql_native_password — убедиться, что параметр old_passwords=0 установлен, а затем создать учетную запись пользователя с помощью CREATE USER, не указывая подключаемый модуль аутентификации, но указывая пароль с помощью предложения IDENTIFIED BY. Например:
SET old_passwords=0; CREATE USER username@hostname IDENTIFIED BY 'mariadb';
Если параметр SQL_MODE не содержит NO_AUTO_CREATE_USER, то вы также можете создать учетную запись пользователя с помощью GRANT. Например:
SET old_passwords=0; GRANT SELECT ON db.* TO username@hostname IDENTIFIED BY 'mariadb';
Вы также можете создать учетную запись пользователя, предоставив хеш пароля с помощью предложения IDENTIFIED BY PASSWORD, и MariaDB проверит, является ли хеш пароля совместимым с mysql_native_password. Например:
SET old_passwords=0;
SELECT PASSWORD('mariadb');
+-------------------------------------------+
| PASSWORD('mariadb') |
+-------------------------------------------+
| *54958E764CE10E50764C2EECBB71D01F08549980 |
+-------------------------------------------+
CREATE USER username@hostname
IDENTIFIED BY PASSWORD '*54958E764CE10E50764C2EECBB71D01F08549980';
Аналогично всем другим подключаемым модулям аутентификации, вы также можете указать имя подключаемого модуля в предложении IDENTIFIED VIA, одновременно предоставляя хеш пароля в качестве предложения USING. Например:
CREATE USER username@hostname IDENTIFIED VIA mysql_native_password USING '*54958E764CE10E50764C2EECBB71D01F08549980';
Изменение паролей пользователей
Вы можете изменить пароль учетной записи пользователя с помощью инструкции SET PASSWORD, предоставив текстовый пароль в качестве аргумента функции PASSWORD(). Например:
SET PASSWORD = PASSWORD('new_secret')
Вы также можете изменить пароль учетной записи пользователя с помощью инструкции ALTER USER. Вам необходимо убедиться, что параметр old_passwords=0 установлен, а затем указать пароль с помощью предложения IDENTIFIED BY. Например:
SET old_passwords=0; ALTER USER username@hostname IDENTIFIED BY 'new_secret';
Подключаемые модули аутентификации клиентов
Для клиентов, использующих библиотеки libmysqlclient или MariaDB Connector/C, MariaDB предоставляет один подключаемый модуль аутентификации клиентов, совместимый с подключаемым модулем аутентификации mysql_native_password.
-
mysql_native_password
При подключении с помощью клиента или утилиты к серверу как учетной записи пользователя, аутентифицирующейся с подключаемым модулем аутентификации mysql_native_password, вам может потребоваться указать клиенту местоположение соответствующего подключаемого модуля аутентификации клиентов, указав параметр --plugin-dir. Например:
mysql --plugin-dir=/usr/local/mysql/lib64/mysql/plugin --user=alice
Однако подключаемый модуль аутентификации клиентов mysql_native_password обычно статически подключается к клиентским библиотекам, таким как libmysqlclient или MariaDB Connector/C, поэтому это обычно не требуется.
mysql_native_password
Подключаемый модуль аутентификации клиентов mysql_native_password хеширует пароль перед отправкой его на сервер.
Поддержка в клиентских библиотеках
Подключаемый модуль аутентификации mysql_native_password — это один из стандартных подключаемых модулей аутентификации, поэтому все клиентские библиотеки должны его поддерживать.
Известные старые проблемы (актуальны только для старых установок)
Несоответствия между столбцами Password и authentication_string
По соображениям совместимости подключаемый модуль аутентификации mysql_native_password пытается прочитать хеш пароля из столбцов Password и authentication_string в таблице mysql.user. Это в прошлом приводило к проблемам, если у одного из столбцов было другое значение, чем у другого.
Начиная с MariaDB 10.2.19 и MariaDB 10.3.11, CREATE USER, ALTER USER, GRANT и SET PASSWORD будут устанавливать оба столбца всякий раз, когда изменяется пароль учетной записи.
Дополнительную информацию см. в MDEV-16774.
См. также
- ed25519 подключаемый модуль безопасного подключения
- История протоколов аутентификации MySQL и MariaDB
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/authentication-plugin-mysql_native_password/