修改MySQL 5.7.9版本的root密码方法以及一些新变化整理

MySQL 5.7版本开始,增强密码验证机制,网上说安装的时候会在/root/.mysql_secret  文件中生成默认密码,这一点自 5.7.6版本以后也去掉了。

针对如果生成默认密码,网上有一个版本,内容如下:

1、修改配置文件,一般在 /etc/my.cnf, 在[mysqld]字段下增加skip-grant-tables 字段,用以忽略权限验证;

2、重启MySQL服务器,CentOS 7.0操作命令是:


1

systemctl restart mysqld.service

3、使用mysql -u root -p 登录数据, 密码直接回车;

4、修改mysql数据库(名称),user表的authentication_string字段,修改命令如下:


1

2

3

mysql> update mysql.user set authentication_string=password(‘new_password‘) where user=‘root‘ and Host =‘localhost‘;

mysql> flush privileges;

mysql> quit;

5、修改配置文件,去掉skip-grant-tables,恢复成原来的样子, 然后重新MySQL服务器。

6、使用第4步设置的密码,登录mysql服务器。

7、通过 set password=password(‘new_password‘); 命令重新设置密码;



以上的方法,在MySQL 5.7早期版本时,还是很好用的,但在MySQL 5.7.6以后的版本,最后一点重置密码总是无法生效,会出来下面的错误。


1

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

同时,无法进行其它的操作。

这是因为,自MySQL 5.7开始,密码存在有效期的概念, 同时因为安全等级的问题,需要使用使用其它的方式进行设置。另一个需要注意的点是, 自5.7.6开始废弃了password()函数,同时无法设置old_password=1, 这真的是一件比较曲折的探索过程。

那么,先把MySQL 5.7.9版本以上的密码设置方法整理一下。

大部分和上面整理的内容相同,关键在第4步后,把authentication_string 里写入的值记一下(这是因为password()函数已废弃)

通过使用以下命令,代替第7步的, set password=password(‘new_password‘) 方法。


1

2

3

4

mysql> ALTER USER ‘jeffrey‘@‘localhost‘

    -> IDENTIFIED WITH mysql_native_password

    -> AS ‘authentication_string字段内容‘;

Query OK, 0 rows affected (0.01 sec)

其实上面的命令有一个简化版本,命令如下


1

2

3

mysql> ALTER USER USER() IDENTIFIED BY ‘news_password‘;

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

之所以会出现上面的错误信息,这和密码的安全等级相关,查看安全等级命令如下


1

2

3

4

5

6

7

8

9

10

11

mysql> SHOW VARIABLES LIKE ‘validate_password%‘;

+--------------------------------------+--------+

| Variable_name                        | Value  |

+--------------------------------------+--------+

| validate_password_dictionary_file    |        |

| validate_password_length             | 8      |

| validate_password_mixed_case_count   | 1      |

| validate_password_number_count       | 1      |

| validate_password_policy             | MEDIUM |

| validate_password_special_char_count | 1      |

+--------------------------------------+--------+

通过  SET GLOBAL  validate_password_policy=‘LOW‘;  命令,降低安全等级后,就可以直接使用,限制是必须8个字符以上;

关于安全等级更详细的介绍如下

  • LOW 政策只测试密码长度。 密码必须至少有8个字符长。
  • MEDIUM 政策的条件 密码必须包含至少1数字字符,1 大写和小写字符,和1特别 (nonalphanumeric)字符。
  • STRONG 政策的情况 密码子字符串长度为4的或更长时间不能匹配 单词在字典文件中,如果一个人被指定。

最后,为了解决密码失效的问题, 最后在配置文件的[mysqld]字段下,增加以下字段


1

2

[mysqld]

default_password_lifetime=0

也可以通过命令行进行设置


1

ALTER USER ‘script‘@‘localhost‘ PASSWORD EXPIRE NEVER

关于密码有效期相关的更多信息,可以参考 http://dev.mysql.com/doc/refman/5.7/en/password-expiration-policy.html

好了,希望上面的信息能够对大家所有帮助。

时间: 2024-10-08 06:05:44

修改MySQL 5.7.9版本的root密码方法以及一些新变化整理的相关文章

管理员 修改MySQL 5.7.9 新版本的root密码方法以及一些新变化整理

MySQL 5.7版本开始,增强密码验证机制,网上说安装的时候会在/root/.mysql_secret  文件中生成默认密码,这一点自 5.7.6版本以后也去掉了. 针对如果生成默认密码,网上有一个版本,内容如下: 1.修改配置文件,一般在 /etc/my.cnf, 在[mysqld]字段下增加skip-grant-tables 字段,用以忽略权限验证: 2.重启MySQL服务器,CentOS 7.0操作命令是: systemctl restart mysqld.service 3.使用mys

MySQL 5.7.6 以上版本的 root 密码重置

最近升级了 MySQL 至 5.7.11 版本,root 密码忘记了,按照之前的方式 mysqld_safe --skip-grant-tables 不管用了,因为从 5.7.6 版本开始默认是不安装 mysqld_safe 了,如下: 下面为 MySQL 5.7.6 版本以上重置 root 密码的方法: 1,停止 mysql 服务 [[email protected] usr]# systemctl stop mysqld 2,设置 mysqld 选项 --skip-grant-tables

windows下重置mysql的root密码方法介绍(转)

自己在内网操作的,遇到了一些的问题,其中一个是需要重置密码的,所以网上找了两篇文章,都有一些借鉴的地方. 版本mysql5.7.2,linux系统 除了参考文章还有几点说明: service mysqld status 查看mysql是否在运行 service mysqld stop 关闭mysql,进入安全模式(修改)前要先关闭mysql 修改密码使用update前建议先查看一下mysql.user表的结构,确认密码存在那个字段 mysql查看表结构命令(https://www.cnblogs

指定mysql的数据库保存路径及忘记root密码的解决方法

在mysql安装目录下的data目录中发现有几个系统目录,把my.ini文件中的datadir值设为此目录. 更改后的主要配置为: [mysqld]basedir=C:/databases/mysqldatadir=D:/databases/mysql/data basedir: 为你数据库程序放置目录 datadir :为你数据库数据目录 重新安装服务,启动服务之后,登录成功. 注:如果想把datadir指定到其他目录,则需要把安装目录下的data目录下的文件与目录拷贝到你所指定的目录下. 总

ubuntu -server 忘记root 密码方法

允许 su 到 root 非常简单,只需要重新设置下密码即可.下面是设置的方法: 1 [email protected]:~$ sudo passwd 2 密码:<--- 输入安装时那个用户的密码3 输入新的 UNIX 密码:<--- 新的Root用户密码4 重新输入新的 UNIX 密码:<--- 重复新的Root用户密码5 passwd:已成功更新密码 6 [email protected]:~$ su 7 密码:<--输入重置的新密码 8 [email protected]:/

Linux中修改MySQL ROOT密码方法

使用mysqladmin # ./mysqladmin -u root password 'newpassword' # ./mysqladmin -u root -h host_name password 'newpassword' Usually mysqladmin's path is /usr/bin, host_name is your real host name, e.g. localhost.localdomain. password后面的引号不是必须的,不过如果密码包含空格或者

mysql数据库修改root密码方法

Window下修改mysql超级管理员root密码的方法 1停止服务 开始->运行->输入cmd,打开命令提示符窗口,然后输入  net stop mysql  ,停止mysql相关服务 2在命令提示符窗口进去mysql安装目录的bin目录 若是其他盘,请先切换到其他盘 例如 输入 D: 回车即可:然后输入cd 文件路径 例如 cd D:\wamp\bin\mysql\mysql5.5.20\bin 即可进入该文件夹下 3进入mysql安全模式(这样就不需要输入密码就可以进入mysql数据库了

MySQL修改数据库root密码方法

方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 方法2:用mysqladmin mysqladmin -u root password "newpass" 如果root已经设置过密码,采用如下方法 mysqladmin -u root password oldpass "newpass" 方法3: 用UPDA

mysql 5.7 设置root密码方法

操作系统: [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.1.1503 mysql 版本5.7.9 mysql> select version() -> ; +-----------+ | version() | +-----------+ | 5.7.9 | +-----------+ 1 row in set (0.00 sec) 安装mysql的yum repo 源: rpm -ivh http