似乎我无意中在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

我想要么卸载插件或中性它以某种方式。


当前回答

使用命令登录到您的MariaDB服务器

mysql -u root

or

mysql -u root -pYOURPASSWORD
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';

and

FLUSH PRIVILEGES;

其他回答

进一步回答ktbos的问题:

我修改了mysqld.cnf文件,mysql无法启动。 原来我修改了错误的文件!

因此,请确保您修改的文件包含像[mysqld_safe]和[mysqld]这样的段标记。在后者下面,我按照建议加了一行:

validate_password_policy=LOW

这很好地解决了我在密码中不需要特殊字符的问题。

在某些安装中,除非重置了根密码,否则无法执行此命令。执行该命令前,不能重置root用户密码。经典的第二十二条军规。

其他响应者没有提到的一个解决方案是通过mysql配置暂时禁用插件。在任何my.cnf,在[mysqld]部分,添加:

skip-validate_password=1

并重新启动服务器。请修改密码并重新设置为0,然后重新启动系统。

在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命令,您可以添加额外的别名行。

供参考:不要在生产服务器上执行这些步骤。 我愿意相信这是不言而喻的……但是,以防你不知道。

我在Ubuntu 18.04的Mysql上遇到了一个问题。当我需要创建一个新用户时,策略总是高的。

我想出了如何禁用的方法,为将来来调查的同事设置为低。

以root用户登录mysql服务器

mysql -h localhost -u root -p

设置新的验证类型

SET GLOBAL validate_password_policy=0; //For Low

重新启动mysql

sudo service mysql restart

使用命令登录到您的MariaDB服务器

mysql -u root

or

mysql -u root -pYOURPASSWORD
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';

and

FLUSH PRIVILEGES;