MySQL пароль ограничения?

726
JonahHuron

Я установил MySQL 5.5 на новую виртуальную машину с Ubuntu 14 LTS apt-get. Во время установки я установил пароль пользователя root, сгенерированный менеджером паролей. После установки я не смог получить доступ ни к каким функциям пользователя root MySQL:

<user>@<hostname>:~$ mysql -u root -p Enter password: <root user pw set at installation> ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 

Думая, что что-то пошло не так, установив пароль root, я использовал

<user>@<hostname>:~$ sudo dpkg-reconfigure mysql-server-5.5 

сбросить пароль root, хотя я «сбрасываю» его на тот же пароль. Я продолжал получать ту же Access deniedошибку.

Затем я снова сбрасываю пароль root, используя тот же метод, на что-то более короткое и легко вводимое (то есть слабое), используя только буквенно-цифровые символы. Это сработало! Теперь я могу получить доступ к функциям MySQL от имени пользователя root.

Кажется, единственное отличие - сложность пароля. Первоначальный надежный пароль состоял из 18 символов и включал знаки пунктуации, такие как ^ \:! И т. Д. Только ASCII, но без пробелов.

Нарушал ли этот пароль какое-то правило, которому должны следовать пароли MySQL, с точки зрения длины или набора символов? Я искал и не нашел никаких ссылок на такие ограничения, которые, я думаю, были бы хорошо обнародованы. Если не это, то в чем еще проблема?

Спасибо!

3
Вы можете просто попытаться получить доступ к экземпляру MySQL из `127.0.0.1`, используя такой синтаксис, как ..............` mysql -u root -p -h 127.0.0.1`, а затем посмотрим что получится Возможно, `localhost` не разрешен для установленного` --skip-name-resol` или просто наличия явного правила, позволяющего root только подключаться с хоста `127.0.0.1`. Pimp Juice IT 5 лет назад 0

1 ответ на вопрос

0
Todd Walton

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

Иногда оболочка, сценарий или что-то еще интерпретирует пароль перед его передачей в базу данных, и при наличии каких-либо специальных символов они могут быть искажены. Например, если ваш пароль «*» и вы передали его через командную строку, оболочка интерпретирует его как символ подстановки и заполнит несколько имен файлов. Возможно, вам придется экранировать такие специальные символы с обратной косой чертой ("\").

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

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

Похожие вопросы