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

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

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

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

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

  2. centos7版本以上root密码破解

    centos7版本以上root密码破解 主讲内容: 1.centos7版本以上root密码破解   一.centos7版本以上root密码破解 重启服务器,按键盘的方向键(上 下) 按e 进入紧急救援 ...

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

    自己在内网操作的,遇到了一些的问题,其中一个是需要重置密码的,所以网上找了两篇文章,都有一些借鉴的地方. 版本mysql5.7.2,linux系统 除了参考文章还有几点说明: service mysq ...

  4. MySQL密码忘了怎么办?MySQL重置root密码方法

    本文主要介绍Windows和Linux系统下忘记密码重置root密码的方法,需要的朋友可以参考下. MySQL有时候忘记了root密码是一件伤感的事.这里提供Windows 和 Linux 下的密码重 ...

  5. MySql登陆密码忘记了怎么办?MySQL重置root密码方法

    本文主要介绍Windows和Linux系统下忘记密码重置root密码的方法,需要的朋友可以参考下. MySQL有时候忘记了root密码是一件伤感的事.这里提供Windows 和 Linux 下的密码重 ...

  6. 【转】CentOS6下安装mysql后,重置root密码方法

    本文转自:CentOS6下安装mysql后,重置root密码方法 centos下安装mysql,居然不知道root用户密码,本想重装,不过还是先度娘了一些,发现这篇文章,刚好解决我的燃眉之急,太赞了. ...

  7. MySQL 8.0 以上版本重置 root 用户密码的终极办法

    1. 在 /etc/my.cnf 文件末尾追加 skip-grant-tables [root@abdefg mysql]# vim /etc/my.cnf [mysql] # 设置mysql客户端默 ...

  8. MySQL修改数据库root密码方法

    方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...

  9. mysql笔记一——安装和设置root密码

    1. mysql 5.6安装包下载. MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提 ...

随机推荐

  1. Mongodb 3.4 + Centos6.5 配置 + mysql.sql转为csv 或 json导入和导出Mongo (64位系统)

    Centos下通过yum安装步骤如下: 声明:相对比那些用源码安装,少了配置和新建log和data目录,这种简单粗暴, ,创建仓库文件, vi /etc/yum.repos.d/mongodb-org ...

  2. java类的继承的一些细节

    类的继承是java面向对象体系的一个重要方面(封装.继承.多态),对于java类的继承,需要注意如下细节. 1.构造函数. 如果一个类没有任何构造函数,系统会默认分配一个无参的构造函数给它,这个构造函 ...

  3. Elasticsearch常用基础操作

    1.获得集群中的节点列表: curl 'localhost:9200/_cat/nodes?v' 2.获得所有索引: curl 'localhost:9200/_cat/indices?v' 3.创建 ...

  4. 在windows平台使用Apache James搭建邮件服务器以及使用C#向外网发送邮件

    首先环境搭建: 1.下载安装JDK,并且配置环境变量 2.下载Apache James ,下载解压之后的目录如图 双击bin下边的run.bat批处理文件安装James 服务,提示如下信息说明安装成功 ...

  5. ES6之Set方法与Map方法

    ES6提供了新的数据结构--Set与Map,Set本身是一个构造函数且成员的值是唯一的,没有重复的值!!!Set()是一个存储已排序的无重复元素的数据而Map()是一对数据Map()使用关键值Key来 ...

  6. 【Netty】源码分析目录

    前言 为方便系统的学习Netty,特整理文章目录如下. [Netty]第一个Netty应用 [Netty]Netty核心组件介绍 [Netty]Netty传输 [Netty]Netty之ByteBuf ...

  7. 最长回文子序列(LPS)

    问题描述: 回文是正序与逆序相同的非空字符串,例如"civic"."racecar"都是回文串.任意单个字符的回文是其本身. 求最长回文子序列要求在给定的字符串 ...

  8. 最全linux命令

    arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI ...

  9. Python 项目实践二(下载数据)第四篇

    接着上节继续学习,在本节中,你将下载JSON格式的人口数据,并使用json模块来处理它们.Pygal提供了一个适合初学者使用的地图创建工具,你将使用它来对人口数据进行可视化,以探索全球人口的分布情况. ...

  10. Linux第六节随笔 输入输出重定向 、管道、通配符、wc / grep / tr / sort / cut / which /whereis /locate /find /

    三期第五讲 -高级文件管理1.输入输出重定向 ls -l /dev/stdin -> /proc/self/fd/0 标准输入 设备:键盘 标记:0 ls -l /dev/stdout -> ...