MySQL password restrictions?

I installed MySQL 5.5 on a fresh VM running Ubuntu 14 LTS through apt-get, During installation, I set a root user password generated by a password manager. After installation, I could not access any functions as the MySQL root user:

<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)

Thinking something went wrong setting the root password, I used

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

to reset the root password, though I "reset" it to the exact same password. I continued to receive the same Access denied ошибка.

I then reset the root password again, using the same method, to something shorter and easily typable (ie, weak), using only alphanumeric characters. Это сработало! I can now access MySQL functions as the root user.

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

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

Спасибо!

1 ответ

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

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

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

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

Другие вопросы по тегам