Как отключить проверку пароля mysql?

153

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

Я хотел бы отключить это.

Я попытался изменить переменную validate_password_length, как предложено здесь, безрезультатно.

mysql> SET GLOBAL validate_password_length=4;
Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR 'app' = PASSWORD('abcd');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Я хотел бы либо разгрузить плагин, либо кастрировать его как-нибудь.

Алекс Райан
источник
9
Вы пытались изменить настройку политики? SET GLOBAL validate_password_policy=LOW;
Рикки
1
SET GLOBAL validate_password.policy=LOW;
Бельгия

Ответы:

430

Вот что я делаю, чтобы удалить плагин проверки пароля:

  1. Авторизуйтесь на сервере MySQL под учетной записью root mysql -h localhost -u root -p
  2. Запустите следующую команду sql: uninstall plugin validate_password;
  3. Если последняя строка не работает (новый выпуск MySQL), вы должны выполнить UNINSTALL COMPONENT 'file://component_validate_password';

Я бы не рекомендовал это решение для производственной системы. Я использовал это решение на локальном экземпляре mysql только для целей разработки.

Рэй Хантер
источник
18
чтобы снова включить его, используйте следующую команду: INSTALL PLUGIN validate_password SONAME 'validate_password.so';
vchrizz
8
Чтобы удалить плагин, вам нужно будет установить безопасный пароль хотя бы один раз через grep 'password' /var/log/mysqld.log | tail -1и затем /usr/bin/mysql_secure_installation. После этого вы можете запустить команды из srayhunter выше, а затем запустить, mysqladmin -u root -p'oldpassword' password newpassчтобы использовать любой пароль, который вы хотите.
specialk1st
2
Плагин называется cracklib_password_checkв текущем MariaDB.
Черни,
27
Примечание. В MySQL 8.0.4 плагин validate_password был переопределен как компонент validate_password. Вместо запроса № 2, приведенного выше, запустите:UNINSTALL COMPONENT 'file://component_validate_password';
Аарон Чикали
4
mysql> SET GLOBAL validate_password_policy = 0;
JREAM
41

Я использую MySQL v 8.0.12, и команда для отключения компонента проверки пароля:

UNINSTALL COMPONENT 'file://component_validate_password';

Чтобы установить его снова, команда:

INSTALL COMPONENT 'file://component_validate_password';

Если вы просто хотите изменить политику плагина проверки пароля:

SET GLOBAL validate_password.policy = 0;   // For LOW
SET GLOBAL validate_password.policy = 1;   // For MEDIUM
SET GLOBAL validate_password.policy = 2;   // For HIGH
Акшай Гаур
источник
34

Основываясь на ответе Sharfi, отредактируйте файл /etc/my.cnf и добавьте только одну строку:

validate_password_policy=LOW

Это должно в достаточной степени нейтрализовать валидацию, как того требует ФП. Возможно, вы захотите перезапустить mysqld после этого изменения. В зависимости от вашей ОС это будет выглядеть примерно так:

sudo service mysqld restart

validate_password_policy принимает либо значения 0, 1 или 2, либо слова LOW, MEDIUM и STRONG, которые соответствуют этим числам. По умолчанию используется значение MEDIUM (1), которое требует, чтобы пароли содержали как минимум одну заглавную букву, одну строчную букву, одну цифру и один специальный символ, а общая длина пароля - не менее 8 символов. Изменение на LOW, как я предлагаю здесь, будет проверять только длину, которая, если она не была изменена с помощью других параметров, будет проверять длину 8. Если вы хотите сократить это ограничение длины, вы также можете добавить validate_password_length в файл my.cnf.

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


Для MySQL 8 свойство было изменено с «validate_password_policy» на «validate_password.policy». Смотрите обновленную документацию MySQL для получения последней информации.

ktbos
источник
6
Если вам нужно только временное изменение, чтобы разрешить установку одного пароля, вы можете использоватьSET GLOBAL validate_password_policy=LOW;
Rikki
1
Это лучшее решение, чем удаление самого модуля.
Mrugesh Mistry
2
mysql: неизвестная переменная 'validate_password_policy = LOW'
Амальговинус
2
Похоже, имя переменной изменилось в последней версии MySQL. @Amalgovinus, попробуйте вместо этого использовать имя переменной «validate_password.policy» и посмотрите, подходит ли это вам. И если это произойдет, я обновлю свой ответ.
ktbos
6

Чтобы отключить проверку паролей в mariadb-10.1.24 (Fedora 24), мне пришлось закомментировать строку в файле /etc/my.cnf.d/cracklib_password_check.cnf :

;plugin-load-add=cracklib_password_check.so

затем перезапустите службу mariadb:

systemctl restart mariadb.service
LAV
источник
4

Вы можете настроить это в файле конфигурации MySQL. Открыть /etc/my.cnfфайл. В этом файле все строки, которые настраивают политику паролей, делают те, что прокомментированы как

#validate-password=FORCE_PLUS_PERMANENT
#validate_password_length=10
#validate_password_mixed_case_count=1
#validate_password_number_count=1
#validate_password_policy=MEDIUM

Раскомментируйте и измените значение свойств, которые вы хотите изменить.

Sharfi
источник
2

Если вы хотите сделать исключения, вы можете применить следующий «взлом». Она требует, чтобы пользователь с DELETEи INSERTпривилегии для mysql.pluginсистемной таблицы.

uninstall plugin validate_password;
SET PASSWORD FOR 'app' = PASSWORD('abcd');
INSTALL PLUGIN validate_password SONAME 'validate_password.so';

Отказ от ответственности в отношении безопасности: подумайте, почему вы делаете свой пароль короче или проще, и, возможно, подумайте о его замене более сложным. Тем не менее, я понимаю моменты «сейчас 3 часа ночи, и ему просто нужно работать», просто убедитесь, что вы не строите систему взломов, чтобы вас самих не взломали

SeanDowney
источник
2

Далее к ответу от ktbos:

Я изменил файл mysqld.cnf, и mysql не запустился. Оказалось, что я изменял не тот файл!

Поэтому убедитесь, что файл, который вы изменяете, содержит теги сегмента, такие как [mysqld_safe] и [mysqld]. Под последним я сделал как предложено и добавил строку:

validate_password_policy=LOW

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

Пол Притчард
источник
1

Удаление:

mysql> uninstall plugin validate_password;

Удаленный плагин не отображается show plugins;

Установка:

mysql> install plugin validate_password SONAME 'validate_password.so';

Отключено по конфигурации:

[mysqld]
validate_password = OFF

Плагин можно отключить по конфигурации, только если он установлен.

Антонио Бардацци
источник
0

У меня была проблема на Ubuntu 18.04 на Mysql. Когда мне нужно было создать нового пользователя, политика всегда была высокой.

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

Авторизуйтесь на сервере MySQL под учетной записью root

mysql -h localhost -u root -p

Установите новый тип проверки

SET GLOBAL validate_password_policy=0; //For Low

Перезапустите MySQL

sudo service mysql restart
vic.py
источник
1
Вы должны написать эту команду "SET ..." в оболочку mysql. Не бить оболочку.
Кодманьяга
0

В некоторых случаях вы не можете выполнить эту команду, пока не сбросите пароль root. Вы не можете сбросить пароль root, пока не выполните эту команду. Классический улов-22.

Одно решение, не упомянутое другими респондентами, состоит в том, чтобы временно отключить плагин через конфигурацию mysql. В любой my.cnf, в [mysqld]разделе, добавьте:

skip-validate_password=1

и перезапустите сервер. Измените пароль и установите значение обратно в 0, и перезапустите снова.

Otheus
источник
это не работает Можете ли вы упомянуть, к какой версии mysql это относится?
Дейв Дога Оз
0

Для ссылок и будущего, следует прочитать документ здесь https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-password-validation.html

Затем вы должны отредактировать ваш mysqld.cnfфайл, например:

vim /etc/mysql/mysql.conf.d/mysqld.cnf

Затем добавьте в часть [mysqld] следующее:

plugin-load-add=validate_password.so
validate_password_policy=LOW

По сути, если вы отредактируете ваш стандарт по умолчанию, он будет выглядеть так:

[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
plugin-load-add=validate_password.so
validate_password_policy=LOW

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

systemctl restart mysql

Если вы забудете эту plugin-load-add=validate_password.soчасть, вы получите ошибку при перезапуске.

Наслаждайтесь !

gabrielstuff
источник
-1

Для mysql 8.0.7, перейдите в каталог mysql и затем используйте:

sudo bin/mysql_secure_installation

настроить опцию пароля.

Дж Тан
источник
-2
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'organizer'@'localhost'  WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'organizer'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

нет необходимости останавливать / запускать MySQL

Pravin
источник