MySQL密码限制?

Jon*_*ron 5 password-management password-generation mysql

我在运行 Ubuntu 14 LTS 的新 VM 上通过apt-get. 在安装过程中,我设置了一个由密码管理器生成的root用户密码。安装后,我无法以 MySQL root 用户身份访问任何功能:

<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)
Run Code Online (Sandbox Code Playgroud)

认为设置 root 密码出了问题,我使用了

<user>@<hostname>:~$ sudo dpkg-reconfigure mysql-server-5.5
Run Code Online (Sandbox Code Playgroud)

重置 root 密码,尽管我将其“重置”为完全相同的密码。我继续收到同样的Access denied错误。

然后我再次使用相同的方法将 root 密码重置为更短且易于打字的密码(即弱密码),仅使用字母数字字符。这有效!我现在可以以 root 用户身份访问 MySQL 函数。

似乎唯一的区别是密码的复杂性。最初的强密码是 18 个字符,包括 ^ \ : ! 等标点符号。不过,只有 ASCII,没有空格。

这个密码是否违反了 MySQL 密码必须遵循的某种规则,无论是长度还是字符集?我已经搜索过,但没有找到任何对此类限制的引用,我认为这些限制会广为人知。如果不是这个,那么还有什么问题?

谢谢!

Tod*_*ton 5

MySQL 软件对 MySQL 密码没有任何限制。就数据库而言,它们可以是您想要的长度,也可以是您想要的复杂程度。但是,有一些警告。

有时,shell 或脚本或其他东西会在将密码传递给数据库之前对其进行解释,如果有任何特殊字符,它们可能会被破坏。例如,如果您的密码是“*”并且您通过命令行传递了它,shell 会将其解释为通配符并填充一堆文件名。您可能必须使用反斜杠(“\”)来转义这样的特殊字符。

另一个警告:如果您的密码包含非 ASCII 字符(例如 Unicode),那么与数据库交互的任何内容都必须告诉数据库即将发生的事情。MySQL 假定 ASCII 并且通常必须以其他方式告知。

不确定其中任何一个是否适用于您的情况。但我想我会按照你的要求回答你的问题。