我在运行 Ubuntu 14 LTS 的新虚拟机上通过 安装了 MySQL 5.5 apt-get
。在安装过程中,我设置了根由密码管理器生成的用户密码。安装后,我无法以 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)
我以为设置 root 密码时出了问题,所以我使用了
<user>@<hostname>:~$ sudo dpkg-reconfigure mysql-server-5.5
重置 root 密码,尽管我将其“重置”为完全相同的密码。我继续收到相同的Access denied
错误。
然后,我使用相同的方法再次重置了 root 密码,将其改为更短、更易于输入(即弱密码),仅使用字母数字字符。这有效!我现在可以以 root 用户身份访问 MySQL 函数。
似乎唯一的区别就是密码的复杂性。原始强密码为 18 个字符,包含标点符号,如 ^ \ : ! 等。但只有 ASCII,没有空格。
这个密码是否违反了 MySQL 密码必须遵循的某种规则,无论是长度还是字符集?我搜索过,没有找到任何关于此类限制的参考资料,我认为这些限制应该广为人知。如果不是这个,那么问题可能是什么?
谢谢!
答案1
MySQL 软件对 MySQL 密码没有任何限制。就数据库而言,密码可以任意长,任意复杂。不过,也有一些注意事项。
有时,shell 或脚本或其他程序会在将密码传递到数据库之前对其进行解释,如果密码中包含任何特殊字符,则可能会将其弄乱。例如,如果您的密码是“*”,并且您通过命令行传递了该密码,则 shell 会将其解释为通配符并填写一堆文件名。您可能需要使用反斜杠(“\”)转义此类特殊字符。
另一个警告:如果您的密码包含非 ASCII 字符(例如 Unicode),那么与数据库交互的任何内容都必须告诉数据库即将出现的内容。MySQL 假定为 ASCII,通常必须另行告知。
不确定这两种情况是否适用于你的情况。但我想我会给你一个问题的答案。