我们先来重新认识一下 mysql.user 表中关于密码过期的字段,
password_expired:从 MySQL 5.6.6 版本开始,添加了 password_expired 功能,它允许设置用户的过期时间。
password_last_changed:密码最后一次修改的时间。
password_lifetime:该用户密码的生存时间,默认值为 NULL,除非手动修改此用户密码过期机制,否则都是 NULL。
另外解释一个参数:
default_password_lifetime:从 MySQL 5.7.4 版本开始,此全局变量可以设置一个全局的自动密码过期策略。
1.设置密码永不过期
2.手动设置该用户密码为 30 day(它会自动覆盖密码过期的全局策略)
3.设置密码立马过期
1.设置全局密码过期时间:
2.创建用户:
注:很多人一看这个 password_lifetime 为什么没有变,不应该变成 90 吗,是不是 mysql 的 bug,其实不然。
它的工作方式如下:
有一个全局系统变量 default_password_lifetime,它为使用默认密码生存期的所有帐户指定策略。在系统表中这将存储一个 NULL。NULL 值被用作一个标志,表明所涉及的帐户没有每个用户密码的特殊生存期。通过 ALTER USER password EXPIRE NEVER(将列设置为0)或 ALTER USER password EXPIRE INTERVAL N DAY(将列设置为 N)设置每个用户的特殊密码生存期。
因此,没有设置特定密码生存期的所有用户的所有密码生存期都将跟随全局变量的值。
修改密码:复制代码代码如下:
//选择数据库
use mysql
//修改密码
update user set password=password('新密码') where user='root'
//立即生效
flush privileges
忘记管理员密码:
在my.ini的[mysqld]字段下面加入:
复制代码代码如下:
skip-grant-tables
重启mysql服务,这时的mysql不需要密码即可登录数据库
然后进入mysql
复制代码代码如下:
use mysqlupdate user set password=password('新密码') where user='root'
flush privileges
运行之后最后去掉my.ini中的skip-grant-tables,重启mysql即可。
MySQL有时候忘记了root密码是一件伤感的事。这里提供Windows 和 Linux 下的密码重置方法。Windows:
1.以系统管理员身份登陆系统。
2.打开cmd-----net start 查看mysql是否启动。启动的话就停止net stop mysql.
3.我的mysql安装在d:\usr\local\mysql4\bin下。
4.跳过权限检查启动mysql.
d:\usr\local\mysql\bin\mysqld-nt --skip-grant-tables
5.重新打开cmd。进到d:\usr\local\mysql4\bin下:
d:\usr\local\mysql\bin\mysqladmin -u root flush-privileges password "newpassword"
d:\usr\local\mysql\bin\mysqladmin -u root -p shutdown 这句提示你重新输密码。
6.在cmd里net start mysql
7.搞定了。
Linux:
MySQL root密码的恢复方法之一
如果忘记了MySQL root密码,可以用以下方法重新设置:
1.KILL掉系统里的MySQL进程;
killall -TERM MySQLd
2.用以下命令启动MySQL,以不检查权限的方式启动;
safe_MySQLd --skip-grant-tables &
3.然后用空密码方式使用root用户登录 MySQL;
MySQL -u root
4.修改root用户的密码;
MySQL>update MySQL.user set password=PASSWORD('新密码') where User='root'
MySQL>flush privileges
MySQL>quit
重新启动MySQL,就可以使用新密码登录了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)