Как исправить ошибку 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';
Приятного программирования и поменьше ошибок!