mysql 5.7 密码问题

为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log。

一般可通过log_error设置

mysql> select @@log_error;
+---------------------+
| @@log_error         |
+---------------------+
| /var/log/mysqld.log |
+---------------------+
1 row in set (0.00 sec)

可通过# grep "password" /var/log/mysqld.log 命令获取MySQL的临时密码

2016-01-19T05:16:36.218234Z 1 [Note] A temporary password is generated for [email protected]: waQ,qR%be2(5

用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:

mysql> select user();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

如果只是修改为一个简单的密码,会报以下错误:

mysql>  ALTER USER USER() IDENTIFIED BY ‘12345678‘;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这个其实与validate_password_policy的值有关。

validate_password_policy有以下取值:

Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。

必须修改两个全局参数:

首先,修改validate_password_policy参数的值

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定。

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          8 |
+----------------------------+
1 row in set (0.00 sec)

validate_password_length参数默认为8,它有最小值的限制,最小值为:

validate_password_number_count
+ validate_password_special_char_count
+ (2 * validate_password_mixed_case_count)

其中,validate_password_number_count指定了密码中数据的长度,validate_password_special_char_count指定了密码中特殊字符的长度,validate_password_mixed_case_count指定了密码中大小字母的长度。

这些参数,默认值均为1,所以validate_password_length最小值为4,如果你显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4。如下所示:

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          8 |
+----------------------------+
1 row in set (0.00 sec)

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          4 |
+----------------------------+
1 row in set (0.00 sec)

如果修改了validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一个值,则validate_password_length将进行动态修改。

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          4 |
+----------------------------+
1 row in set (0.00 sec)

mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
|                                    1 |
+--------------------------------------+
1 row in set (0.00 sec)

mysql> set global validate_password_mixed_case_count=2;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
|                                    2 |
+--------------------------------------+
1 row in set (0.00 sec)

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          6 |
+----------------------------+
1 row in set (0.00 sec)

当然,前提是validate_password插件必须已经安装,MySQL5.7是默认安装的。

那么如何验证validate_password插件是否安装呢?可通过查看以下参数,如果没有安装,则输出将为空。

mysql> SHOW VARIABLES LIKE ‘validate_password%‘;
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file    |       |
| validate_password_length             | 6     |
| validate_password_mixed_case_count   | 2     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
6 rows in set (0.00 sec)
时间: 2024-11-08 17:29:21

mysql 5.7 密码问题的相关文章

MySQL忘记root密码后修改

MySQL忘记root密码后可以使用下面的方法修改. 1.登录MySQL所在的服务器,手工kill掉MySQL进程 kill `cat $mysql_data_dir/hostname.pid` $mysql_data_dir/hostname.pid为MySQL数据目录,它记录了MySQL服务的进程号. [[email protected] ~]# ps -ef |grep mysql root      6602     1  0 21:39 ?        00:00:00 /bin/s

Linux下使用MySQL——忘记root密码及修改MySQL默认编码

概述: 本博客不再对MySQL的语法进行讲解和说明,想了解或熟悉的朋友请自行百度或Google学习.本博客主要是针对MySQL除语法之外的总结,希望能够也能帮助到你. 1.CentOS6.x下MySQL忘记root密码解决方法 Ⅰ. 修改MySQL的登录设置 # vim /etc/my.cnf 在[mysqld]段中加上一句:skip-grant-tables Ⅱ. 重启服务 # service mysqld restart Ⅲ. 登录Mysql,修改密码信息 # mysql mysql> US

Mac平台重新设置MySQL的root密码

Mac OS X - 重置 MySQL Root 密码 您是否忘记了Mac OS 的MySQL的root密码? 通过以下4步就可重新设置新密码: 1.  停止 mysql server.  通常是在 '系统偏好设置' > MySQL > 'Stop MySQL Server' 2.  打开终端,输入: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables 3.  打开另一个新终端,输入: sudo /usr/local/mysql/

mysql 忘记root密码

一,widows下 1.首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行,使用命令: 开始->菜单->cmd->net stop mysql打开第一个cmd1窗口,切换到mysql的bin目录.切换方法:首先找到mysql目录,我的目录是C:\Program Files (x86)\MySQL\MySQL Server 6.0\bin然后运行命令:cd C:\Program Files (x86)\MySQL\MySQL Server 6.0\bin 切换成功

修改XAMPP中mysql数据库的密码

修改XAMPP中MySQL数据库的密码 XAMPP只为开发者服务,不可将其用于生产环境.首先,MySQL管理员(root)未设置密码,用户可以直接通过phpmyadmin访问mysql服务器,修改数据库中的数据,或者通过网络访问. 为确保MySQL数据库的安全,必须为MySQL管理员(root)设置密码,其方法如下: 以root用户的身份登录phpmyadmin,在phpmyadmin的权限中设置root用户的密码,操作界面如下: 图1 图2 更改MySQL数据库密码之后,还要更改phpmyad

LAMP搭建20:MySQL重置root密码

默认情况下安装完成后mysql没设root密码,可以直接登录: [[email protected] ~]# mysql -uroot Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 9 Server version: 5.1.49 MySQL Community Server (GPL) Copyright (c) 2000, 2010, Oracle and/or it

linux下mysql忘记root密码解决方案

1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息.可以采用将MySQL对 外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全 状态.最安全的状态是到服务器的Console上面操作,并且拔掉网线. 2.修改MySQL的登录设置: # vi /etc/my.cnf 在[mysqld]的段中加上一句:sk

Mysql的Root密码忘记,查看或修改的解决方法

Mysql的Root密码忘记,查看或修改的解决方法:1.首先启动命令行2.在命令行运行:taskkill /f /im mysqld-nt.exe3.继续在命令行运行:mysqld-nt --skip-grant-tables4.新开一个命令行运行:mysql -u root (如果没有配置mysql的bin环境变量的话需要切换到bin目录下执行此语句) 如果不想改密码,只是想看原来的密码的话.可以在命令行执行这个语句 select host,user,password from mysql.u

linux下mysql忘记root密码怎么办

Linux下MySQL忘记root密码怎么办? Linux下MySQL忘记root密码怎么办? 1. 修改MySQL配置文件 默认MySQL的配置文件为/etc/my.cnf,在[mysqld]下面添加一行 1.skip-grant-tables 2. 保存配置文件,重启MySQL服务 1.service mysqld restart 3. 再次进入MySQL 1.[[email protected] mysql]$ mysql -u root -p2.Enter password: #此处直接

Windows如何修改MySQL用户root密码

转:http://jingyan.baidu.com/article/495ba841ef412d38b30edeb2.html MySQL 是一个关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一.搭配 PHP 和 Apache 可组成良好的开发环境.因此用的很广泛.很多人都会遇到MySQL需要修改密码的情况,比如密码太简单.忘记密码等等.这里我就教大家几