似乎我无意中在MySQL 5.7中加载了密码验证插件。这个插件似乎强制所有密码遵守某些规则。
我想把这个关了。
我已经尝试按照这里的建议更改validate_password_length变量,但没有用。
mysql> SET GLOBAL validate_password_length=4;
Query OK, 0 rows affected (0.00 sec)
mysql> SET PASSWORD FOR 'app' = PASSWORD('abcd');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
我想要么卸载插件或中性它以某种方式。
在MySQL 8中,情况有所不同(但公平地说,技术上是更好的)。我放弃了在本地MacOS安装中删除密码的尝试。所以,我意识到如果你不能打败他们,那就加入他们!
以下是我的快速而肮脏的解决方案:
通过HomeBrew安装MySQL8(默认为不安全安装)
编辑我的~/。zshrc(因为这是我使用的shell。其他人可能使用.bash_profile或其他)
纳米~ / . zshrc
增加2个别名行
别名mysql='mysql -uroot'
别名mysqladmin='mysqladmin -uroot'
推动变化
源~ / . zshrc
所以现在,不用担心使用-u或-p标志,它们会自动用于mysql或mysqladmin命令。
供参考,如果你有密码,这也应该工作。您只需在别名中包含-pPASSWORD即可。
(例如:alias mysql='mysql -uroot -pPASSWORD')
此外,如果您使用任何其他mysql命令,您可以添加额外的别名行。
供参考:不要在生产服务器上执行这些步骤。
我愿意相信这是不言而喻的……但是,以防你不知道。
对于参考文献和未来,你应该阅读这里的文档https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-password-validation.html
然后你应该编辑你的mysqld.cnf文件,例如:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
然后,添加[mysqld]部分,如下所示:
plugin-load-add=validate_password.so
validate_password_policy=LOW
基本上,如果你编辑你的默认,它将看起来像:
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
plugin-load-add=validate_password.so
validate_password_policy=LOW
然后,您可以重新启动:
systemctl restart mysql
如果您忘记了plugin-load-add=validate_password。所以部分,你会在重新启动时出现错误。
享受吧!