修改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、使用mysql -u root -p 登录数据, 密码直接回车;

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

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以后的版本,最后一点重置密码总是无法生效,会出来下面的错误。

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‘) 方法。

mysql> ALTER USER ‘jeffrey‘@‘localhost‘

-> IDENTIFIED WITH mysql_native_password

-> AS ‘authentication_string字段内容‘;

Query OK, 0 rows affected (0.01 sec)

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

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

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

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

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]字段下,增加以下字段

[mysqld]

default_password_lifetime=0

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux系统上安装MySQL 5.7.9的步骤如下: 1. 首先,确保你的Linux系统已经安装了wget工具,如果没有安装,可以通过运行命令`sudo apt-get install wget`来安装。 2. 打开终端,并使用wget命令下载MySQL 5.7.9的安装包。在终端中运行以下命令: ``` wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz ``` 3. 下载完成后,解压安装包。运行以下命令: ``` tar -zxvf mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz ``` 4. 进入解压后的目录: ``` cd mysql-5.7.9-linux-glibc2.5-x86_64 ``` 5. 创建一个MySQL用户和组。运行以下命令: ``` sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql ``` 6. 将解压后的文件复制到MySQL的安装目录下: ``` sudo cp -R . /usr/local/mysql ``` 7. 进入MySQL安装目录: ``` cd /usr/local/mysql ``` 8. 修改文件权限: ``` sudo chown -R mysql . sudo chgrp -R mysql . ``` 9. 初始化MySQL数据目录: ``` sudo bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ``` 10. 启动MySQL服务: ``` sudo bin/mysqld_safe --user=mysql & ``` 11. 设置MySQL root用户密码: ``` sudo bin/mysql_secure_installation ``` 12. 按照提示进行后续的设置和配置,包括输入root密码、移除匿名用户、禁止远程登录等。 13. 完成之后,你就成功地在Linux系统上安装了MySQL 5.7.9版本。你可以使用命令`mysql -u root -p`来登录MySQL

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值