mysql native password что это

The mysql_native_password authentication plugin is the default authentication plugin that will be used for an account created when no authentication plugin is explicitly mentioned and old_passwords=0 is set. It uses the password hashing algorithm introduced in MySQL 4.1, which is also used by the PASSWORD() function when old_passwords=0 is set. This hashing algorithm is based on SHA-1.

It is not recommended to use the mysql_native_password authentication plugin for new installations that require high password security. If someone is able to both listen to the connection protocol and get a copy of the mysql.user table, then the person would be able to use this information to connect to the MariaDB server. The ed25519 authentication plugin is a more modern authentication plugin that provides simple password authentication using a more secure algorithm.

Contents

Installing the Plugin

The mysql_native_password authentication plugin is statically linked into the server, so no installation is necessary.

Creating Users

The easiest way to create a user account with the mysql_native_password authentication plugin is to make sure that old_passwords=0 is set, and then create a user account via CREATE USER that does not specify an authentication plugin, but does specify a password via the IDENTIFIED BY clause. For example:

If SQL_MODE does not have NO_AUTO_CREATE_USER set, then you can also create the user account via GRANT. For example:

Similar to all other authentication plugins, you could also specify the name of the plugin in the IDENTIFIED VIA clause while providing the password hash as the USING clause. For example:

Changing User Passwords

You can change a user account’s password with the SET PASSWORD statement while providing the plain-text password as an argument to the PASSWORD() function. For example:

You can also change the user account’s password with the ALTER USER statement. You would have to make sure that old_passwords=0 is set, and then you would have to specify a password via the IDENTIFIED BY clause. For example:

Client Authentication Plugins

For clients that use the libmysqlclient or MariaDB Connector/C libraries, MariaDB provides one client authentication plugin that is compatible with the mysql_native_password authentication plugin:

However, the mysql_native_password client authentication plugin is generally statically linked into client libraries like libmysqlclient or MariaDB Connector/C, so this is not usually necessary.

mysql_native_password

The mysql_native_password client authentication plugin hashes the password before sending it to the server.

Support in Client Libraries

The mysql_native_password authentication plugin is one of the conventional authentication plugins, so all client libraries should support it.

Known Old Issues (Only Relevant for Old Installations)

Mismatches Between Password and authentication_string Columns

For compatibility reasons,the mysql_native_password authentication plugin tries to read the password hash from both the Password and authentication_string columns in the mysql.user table. This has caused issues in the past if one of the columns had a different value than the other.

Starting with MariaDB 10.2.19 and MariaDB 10.3.11, CREATE USER, ALTER USER, GRANT, and SET PASSWORD will set both columns whenever an account’s password is changed.

Источник

Perl & MySQL 8.0

mysql native password что это. Смотреть фото mysql native password что это. Смотреть картинку mysql native password что это. Картинка про mysql native password что это. Фото mysql native password что это

Теперь давайте выясним, как пользователи Perl могут работать с MySQL 8.0.

Проблема с подключением к MySQL 8.0

Ошибка, с которой вы можете столкнуться, заключается в следующем:

Поэтому, если вы столкнулись с этой проблемой при использовании perl-DBD-MySQL для подключения к MySQL 8.0, у вас должен быть драйвер, который еще не поддерживает новый плагин. Если это так, самым быстрым, простым, но не самым безопасным решением является использование более старого плагина аутентификации: mysql_native_password.

mysql_native_password

Чтобы проверить, какой плагин аутентификации использует пользователь, вы можете выполнить следующий запрос:

Вы можете видеть, что это новый, используемый в MySQL 8.0. Давайте изменим его:

Обратите внимание, что вам нужно установить пароль.

Пожалуйста, не изменяйте вручную таблицу mysq.user с помощью оператора update.

caching_sha2_password

Если вы хотите использовать новый безопасный механизм аутентификации, вам нужно проверить, связан ли ваш модуль perl-DBD-MySQL с библиотекой, которая его поддерживает:

Эта версия ( libmysqlclient.so.18) не поддерживает новый плагин аутентификации. Вам нужно иметь хотя бы libmysqlclient.so.21 или libmariadb.so.3.

По умолчанию в CentOS/RHEL/OL 7 perl-DBD-MySQL связан со старой версией mariadb-libs(5.5) или с использованием mysql-community-libs-compat (особенно если вы обновились до 8.0.x).

В последней версии Fedora это не так:

Эта библиотека установлена ​​затем, что mariadb-connector-c-3.0.10 поддерживает новый механизм аутентификации MySQL 8.0.

Заключение

MySQL 8.0 становится все более и более популярным, и даже другие коннекторы, чем родные, теперь поддерживают его. Конечно, если вы хотите использовать его в одной системе, в которой еще не используются последние версии, вам нужно иметь последние библиотеки, но это не очень сложно.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

What is mysql_native_password?

The mysql_native_password native authentication plugin is backward compatible. Older clients that do not support authentication plugins do use the native authentication protocol, so they can connect to servers that support pluggable authentication.

But technically I’m not getting much. Does it have to do anything with root user password?

Does it make any difference?

mysql native password что это. Смотреть фото mysql native password что это. Смотреть картинку mysql native password что это. Картинка про mysql native password что это. Фото mysql native password что это

1 Answer 1

For a long time, MySQL has supported different authentication plugins, basically programable pieces of code to demonstrate that a mysql accounts is owned by whoever claims so.

The original way to do that is to setup a password, hash it in a particular way, and store it on the mysql.user table. However, it is not the only way you can authenticate, for example:

On the «Enterprise» world, there is many times special needs for very special authentication methods, beyond a user and password.

Basically, mysql_native_password is the traditional method to authenticate- it is not very secure (it uses just a hash of the password), but it is compatible with older drivers. If you are going to start a new mysql service, you probably want to use the new plugin from the start (and TLS). If you have special needs, you can use other method— you can even program one if you have certain special needs).

Источник

Давайте рассмотрим, что такое аутентификация по unix_socket в MySQL и MariaDB, а также как исправить ошибку #1698.

Аутентификация unix_socket в MySQL и MariaDB

Суть аутентификации по unix_socket в том, что если пользователь уже выполнил вход в систему, то ему не нужно вводить пароль при подключении к СУБД, поскольку его подлинность уже была проверена при входе в ОС.

На практике, большинство работает под обычным пользователем, а подключается к MySQL как root. В результате возникает обозначенная выше ошибка.

Можно выбрать один из вариантов:

1. Всегда использовать sudo при подключении как root.

2. Внести изменения в настройки MySQL, чтобы к СУБД могли подключаться и обычные пользователи.

3. Создать пользователя MySQL с таким же именем, как имя вашего системного пользователя

Как проверить, какой метод аутентификации используется

Для просмотра используемого метода аутентификации можно использовать следующий SQL запрос:

Или такую, для большей наглядности вывода:

Можно увидеть, что в качестве плагина установлены mysql_native_password и unix_socket:

При такой конфигурации, у меня работала только аутентификация по unix_socket.

mysql native password что это. Смотреть фото mysql native password что это. Смотреть картинку mysql native password что это. Картинка про mysql native password что это. Фото mysql native password что это

Включение и отключение аутентификации по unix_socket

Переключиться на аутентификацию по паролю можно следующим SQL запросом:

Обратите внимание, что вам нужно ввести ПАРОЛЬ.

Чтобы переключиться на аутентификацию по unix_socket выполните следующий SQL запрос:

mysql native password что это. Смотреть фото mysql native password что это. Смотреть картинку mysql native password что это. Картинка про mysql native password что это. Фото mysql native password что это

Если выведено mysql_native_password, то это означает, что используется вход по паролю.

На самом деле, аутентификацию по unix_socket можно сочетать с аутентификацией по паролю, но я не буду на этом останавливаться.

Вариант с update user

Если предыдущий способ не сработал для вас, то для получения доступа к базе данных MySQL обычному пользователю без использования sudo привилегий, зайдите в приглашение командной строки MySQL

и запустите следующие команды:

Затем перезапустите службу MySQL и попробуйте войти в базу данных без sudo, как показано ниже.

Замена для «update user set plugin=» where User=’root’;»

Подключение к серверу MySQL:

В приглашении MySQL нужно было выполнить команды:

Затем нужно было перезапустить службу:

И можно было подключаться без sudo.

В показанном выше случае также менялся способ аутентификации с unix_socket на пароль, но при этом не происходила установка нового пароля. Если вы хотите такого же эффекта (хотя это становится небезопасным после отключения аутентификации с unix_socket), то вы можете выполнить следующие запросы (то есть установить пустой пароль):

Выбор способа аутентификации при создании пользователя

Создать пользователя с аутентификацией по паролю можно SQL запросом следующего вида:

Чтобы создать пользователя с аутентификацией по unix_socket выполните следующий SQL запрос:

Источник

Русские Блоги

MySQL 8.0 управление пользователями и ролями

Вышла официальная версия MySQL 8.0. В MySQL 8.0 добавлено много новых функций. Подробнее см. «Выпущена официальная версия MySQL 8.0 8.0.11!»Статья.

В этом руководстве мы расскажем о некоторых новых функциях управления пользователями в MySQL и о том, как использовать роли для упрощения управления разрешениями.

Примечание. Большинство функций этого руководства должны поддерживаться MySQL 8.0+ и выше.

Управление пользователями MySQL

Плагин верификации и изменение метода шифрования пароля

Если вам нужно сохранить предыдущий метод аутентификации и метод шифрования пароля из предыдущей версии, вам необходимо изменить следующие элементы конфигурации в файле конфигурации my.cnf и перезапустить службу, чтобы они вступили в силу.

Примечание. Эта опция в настоящее время не поддерживает функцию динамического изменения MySQL 8.0.

Существующие в MySQL 8.0 SHA2 Пароль изменен на SHA1 Шаблон.

Примечание. Если нет особых причин, рекомендуется использовать новый и более безопасный метод шифрования.

Авторизация пользователя и смена пароля

Оператор авторизации пользователя MySQL 8.0 отличается от предыдущей версии. Общий оператор авторизации старой версии больше не может использоваться в MySQL 8.0. Если используется оператор авторизации старой версии, будет сообщено об ошибке.

В MySQL 8.0 пользователи были созданы с помощью операторов авторизации в предыдущих версиях.

Заявление об авторизации верное в версии MySQL 8.0.

Управление сроком действия пароля

MySQL представил новую функцию автоматического истечения срока действия пароля, начиная с версии 5.6.6, и улучшил функцию истечения срока действия пароля пользователя в MySQL версии 5.7.4. Теперь можно передать глобальную переменную default_password_lifetime Чтобы настроить глобальную политику автоматического истечения срока действия пароля.

default_password_lifetime Глобальная политика истечения срока действия пароля по умолчанию является постоянной и не имеет срока действия.

default_password_lifetime Параметры поддерживают постоянную динамическую настройку, вы также можете использовать следующие команды, чтобы установить их непосредственно в командной строке MySQL, чтобы они вступили в силу.

Создавать и изменять примеры пользователей со сроком действия пароля

Срок действия пароля для создания или изменения пользователя составляет 90 дней.

Создайте или измените срок действия пароля пользователя, чтобы он никогда не истекал.

Создайте или измените пользователя, который следует глобальной политике истечения срока действия.

Просмотр срока действия пароля пользователя.

Блокировать / разблокировать учетную запись пользователя

Начиная с MySQL 5.7.8, в управление пользователями были добавлены новые функции для блокировки / разблокировки учетных записей пользователей. Давайте посмотрим на некоторые конкретные примеры этой функции.

Создать пользователя с блокировкой аккаунта

Затем попробуйте войти в систему с новым пользователем, и вы получите сообщение об ошибке ERROR 3118.

Если вам нужно разблокировать этого пользователя, вам нужно использовать следующую инструкцию, чтобы разблокировать его сейчас.

Теперь, когда пользователь разблокирован, попробуйте снова войти в систему.

Изменить пользователя, который будет заблокирован

Если пользователь уже установлен, вы также можете заблокировать учетную запись пользователя следующим образом.

Установить политику повторного использования пароля пользователя MySQL

Начиная с MySQL 8.0 разрешено ограничивать повторное использование предыдущих паролей. Ограничения на повторное использование пароля могут быть установлены на основе количества смен пароля, прошедшего времени или того и другого. История паролей учетной записи состоит из паролей, назначенных в прошлом, и MySQL может ограничить выбор новых паролей из этой истории.

Если учетная запись ограничена на основании количества изменений пароля, новый пароль не может быть выбран из указанного количества последних паролей. Например: если минимальное количество изменений пароля установлено на 3, новый пароль не может быть таким же, как любой из последних 3 паролей.

Если учетная запись ограничена на основании времени изменения пароля, пароль в указанной временной истории не может быть выбран в качестве нового пароля. Например: если интервал повторного использования пароля установлен на 60, новый пароль не должен совпадать с паролем, выбранным за последние 60 дней.

Примечание. Пустые пароли не записываются в историю паролей и могут быть повторно использованы в любое время.

Чтобы установить глобальную стратегию повторного использования пароля, вы можете изменить password_history с участием password_reuse_interval Системные переменные. Эту переменную можно настроить в файле конфигурации службы my.cnf на примере запрета повторного использования последних 6 паролей или любого пароля, использованного за последние 180 дней.

Этот параметр поддерживает постоянную динамическую настройку или может быть установлен напрямую с помощью следующего оператора.

Управление ролями MySQL

Обычно в базе данных MySQL есть несколько пользователей с одним и тем же набором разрешений.В предыдущей версии только путем предоставления и отзыва разрешений нескольким пользователям можно было изменять разрешения каждого пользователя индивидуально. Когда количество пользователей относительно велико, такая операция требует очень много времени.

Функции управления ролями, предоставляемые MySQL 8.0, следующие:

Создавайте роли и предоставляйте разрешения для ролей пользователей

В качестве примеров мы возьмем несколько распространенных сценариев.

Приложению требуются разрешения на чтение и запись.

Персоналу по эксплуатации и техническому обслуживанию необходим полный доступ к базе данных.

Некоторым разработчикам требуется разрешение на чтение.

Некоторым разработчикам требуются разрешения на чтение и запись.

Если вы хотите предоставить один и тот же набор разрешений нескольким пользователям, выполните следующие действия.

Создать новую роль

Предоставить разрешения роли

Предоставление пользовательских ролей

Сначала мы создаем четыре роли. Чтобы четко различать разрешения ролей, рекомендуется называть роли более интуитивно понятными.

Примечание. Формат имени роли аналогичен учетной записи пользователя, состоящей из частей пользователя и хоста, например имя_роли @ имя_хоста. Если часть хоста опущена, по умолчанию используется «%», что означает любой хост.

После создания роли мы даем ей соответствующие разрешения. Чтобы предоставить разрешения роли, вы можете использовать GRANT Утверждение.

Наконец, в соответствии с реальной ситуацией, мы добавим назначенного пользователя к соответствующей роли. Предположим, вам нужна учетная запись, используемая приложением, учетная запись оператора, учетная запись разработчика, доступная только для чтения, и две учетные записи разработчика для чтения и записи.

Создать нового пользователя

Назначьте роли пользователям

Если вы хотите добавить нескольких пользователей к нескольким ролям одновременно, вы можете использовать аналогичные операторы.

Проверить разрешения роли

Чтобы убедиться, что роли назначены правильно, вы можете использовать SHOW GRANTS Утверждение.

Как видите, отличие от предыдущей версии состоит в SHOW GRANTS Вернуть только предоставленные роли. Если вы хотите отобразить разрешения, представленные ролью, вам необходимо добавить USING Имя предложения и роль авторизации.

Установить роль по умолчанию

Теперь, если вы подключитесь к MySQL с использованием учетной записи пользователя dev01 и попытаетесь получить доступ к базе данных wordpress, появится следующая ошибка.

Это связано с тем, что после предоставления роли учетной записи пользователя, когда учетная запись пользователя подключается к серверу базы данных, она не делает роль автоматически активной.

Если здесь возвращается NONE, это означает, что в настоящее время никакие роли не включены. Чтобы указать, какие роли должны быть активными каждый раз, когда учетная запись пользователя подключается к серверу базы данных, вам необходимо использовать SET DEFAULT ROLE Заявление указать.

Снова используйте учетную запись пользователя dev01, чтобы подключиться к серверу базы данных MySQL и вызвать CURRENT_ROLE() Функция, вы увидите роль по умолчанию учетной записи пользователя dev01.

Наконец, переключите текущую базу данных на базу данных wordpress и выполните SELECT Заявление и DELETE Заявление для проверки разрешений учетной записи dev01.

Как показано в приведенных выше результатах, когда мы выдаем DELETE Я получил ошибку при написании заявления. Поскольку учетная запись пользователя dev01 имеет права доступа только для чтения.

Установить роль активности

Учетная запись пользователя может изменить действующие разрешения текущего пользователя в текущем сеансе, указав, какая авторизованная роль активна.

Установите для активной роли значение NONE, что означает отсутствие активной роли.

Установите активную роль для всех предоставленных ролей.

Установить активную роль как SET DEFAULT ROLE Роль по умолчанию, установленная заявлением.

Настройте несколько активных ролей одновременно.

Отзыв разрешений на роль или роль

Точно так же, как роли пользователя могут быть авторизованы, эти роли также могут быть отозваны из учетной записи пользователя. Чтобы отозвать роль из учетной записи пользователя, вам необходимо использовать REVOKE Утверждение.

REVOKE Его также можно использовать для изменения разрешений ролей. Это влияет не только на разрешения самой роли, но и на любые разрешения пользователя, предоставленные этой роли. Если вы хотите временно сделать всех пользователей-разработчиков доступными только для чтения, вы можете использовать REVOKE Отмените разрешение на изменение у роли dev_write. Давайте сначала посмотрим на разрешения учетной записи пользователя dev02 перед отзывом.

Затем отмените разрешение на изменение у роли dev_write.

Наконец, давайте посмотрим на текущие разрешения учетной записи пользователя dev02.

Из приведенных выше результатов видно, что отмена разрешений в роли повлияет на разрешения любого пользователя в этой роли. Таким образом, dev02 теперь не имеет разрешений на изменение таблиц (разрешения INSERT, UPDATE и DELETE были удалены). Если вы хотите восстановить разрешения на изменение роли, просто предоставьте их повторно.

Удалить роль

Чтобы удалить одну или несколько ролей, вы можете использовать DROP ROLE Утверждение.

подобно REVOKE Утверждение такое же, удаление роли отменит роль из каждой учетной записи, которая ее авторизовала. Например, чтобы удалить роли dev_read и dev_write, используйте следующий оператор.

Копировать разрешения учетной записи пользователя другому пользователю

MySQL 8.0 рассматривает каждую учетную запись пользователя как роль, поэтому учетная запись пользователя может быть предоставлена ​​другой учетной записи. Например: скопируйте разрешения учетной записи разработчика в другую учетную запись разработчика.

Создайте новую учетную запись пользователя для разработки

Скопируйте разрешения учетной записи пользователя dev02 в учетную запись пользователя dev04

Просмотр разрешений учетной записи пользователя dev04

Справочные документы

Если вы думаете, что контент отличный, чего вы ждете? Спешите и нажмите и удерживайте, чтобы дать награду, местные тираны iOS тоже возможны!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *