How to fix mysql error 1396 — create or drop user failed

Как исправить ошибку MySQL ERROR 1819 (HY000): в Linux

База данных MySQL поставляется с подключаемым модулем validate_password, который при включении применяет политику проверки пароля. Плагин применяет 3 уровня политики проверки пароля.

  • LOW (НИЗКИЙ): позволяет пользователям устанавливать пароль из 8 или менее символов.
  • MEDIUM (СРЕДНИЙ): позволяет пользователям устанавливать пароль из 8 или менее символов со смешанными регистрами и специальными символами.
  • STRONG (СИЛЬНЫЙ): позволяет пользователям устанавливать пароль, который имеет все атрибуты пароля среднего уровня с включением проверки по файлу словаря.

По умолчанию для политики паролей установлено значение MEDIUM (СРЕДНИЙ). Вы можете подтвердить уровень политики паролей, выполнив команду:

SHOW VARIABLES LIKE 'validate_password%';

Для выполнения этой команды войдите в mysql (чтобы появилось приглашение командной строки «mysql>»). Это относится и ко всем последующим командам.

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

Чтобы включить плагин validate_password, выполните следующие команды.

select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';
install plugin validate_password soname 'validate_password.so';

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

select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';

Вы должны получить результат, показанный ниже:

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

Однако, если вы всё ещё настаиваете на своём, вот что вы можете сделать.

Пользователи и их права в MySQL на примерах

Написано 2 Июнь, 2011 в категории MySQL,Wordpress,Разработка ПО

1. Создаем пользователя.

 mysql> CREATE USER 'stasyak'@'localhost';

2. Задаем пароль для данного пользователя.

 mysql> SET PASSWORD FOR 'stasyak'@'localhost' = PASSWORD("pa1SS2WORD");

3. Даем права пользователю.

 mysql> GRANT ALL ON wordpress.* TO 'stasyak'@'localhost';

Итог: мы создали пользователя stasyak для сервера с именем localhost, затем установили для него пароль pa1SS2WORD, затем дали возможность этому пользователю видеть и редактировать таблицы базы данных wordpress. Люди, хорошо знакомые с mysql заметят, что это не самый короткий путь создания пользователя с определенными правами. Согласен, есть более короткий вариант:

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'stasyak'@'localhost' IDENTIFIED BY 'secret';

Разница между длинным и коротким вариантами в том, что команда GRANT работает «тихо», т.е. если пользователя нет, то она создаст его и установит ему пароль и права, но если пользователь есть, то GRANT просто сменит у него пароль и права. Какие же проблемы это может доставить? Представьте, что под mysql работают более дюжины разных сайтов с разными базами, при установке нового сайта, ему создается своя база и свой пользователь. Вездесущий человеческий фактор может привести к тому, что при попытке создать нового (как мы предполагаем) пользователя с помощью команды GRANT мы затрем пароль и права старого пользователя. И что самое страшное даже этого не заметим. Придирчивый читатель может указать на методологическую ошибку — внимательный программист должен, во-первых, знать такую особенность mysql, а во-вторых проверить существование пользователя в базе с помощью команды

mysql> select User from mysql.user

В жизни же получается, что даже самые внимательные из нас теряют бдительность. Наверное «золотой» серединой будет такая последовательность: 1. Создаем пользователя.

 mysql> CREATE USER 'stasyak'@'localhost';

Если такой пользователь уже существует, то MySQL поругается на вас вот в таких выражениях:

 mysql> create user 'stasyak'@'localhost';
ERROR 1396 (HY000): Operation CREATE USER failed for 'stasyak'@'localhost'

Ошибка не очень информативная, к сожалению. Об этом, кажется, сожалею не только яhttp://bugs.mysql.com/bug.php?id=28331 2. Даем права пользователю и устанавливаем пароль.

 mysql> GRANT ALL ON wordpress.* TO 'stasyak'@'localhost' IDENTIFIED BY 'secret';

Приятного программирования и поменьше ошибок!

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: