MySQL重置密码
可能由于各种原因,我们不小心丢掉了MySQL密码,要用的时候无法登陆了,只能重置密码了!该配置修改文档是在Linux Ubunt环境下进行的,其他操作系统亦可作为参考,原理一样!
1) 修改MySQL的配置文件,跳过登录时的权限验证
CentOS是在 /etc/my.cnf
Ubunt的mysql配置文件路径:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
#在[mysqld]下追加上 skip-grant-tables
[mysqld]
...
skip-grant-tables
2) 重启mysql服务使配置生效
sudo service mysql restart
3) 重启完mysql服务之后我们再次执行mysql登录命令,会发现不用输入密码即可登录.
mysql -u root -p
#回车完会提示输入密码,不用输密码直接回车即可登录
4) 重置root账户密码
#重置root密码为空
update mysql.user set authentication_string="" where user="root";
#重置 root 用户的密码为空(5.7 之前为 password 字段)
#修改root密码
update mysql.user set authentication_string=password("pswd") where user="root";
#在重置 root 密码的同时,也可以设置默认密码。不过密码不能为明文,必须使用 password() 函数加密
5) 刷新权限表
flush privileges;
重置root密码,刷新权限表之后退出mysql命令行,将刚在配置文件中添加的跳过权限验证的配置命令删除.最后重启mysql服务即可用root用户密码登录!
6) 删除添加的跳过权限验证配置命令,重启mysql服务
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
#删除或注释刚才在[mysqld]下追加 skip-grant-tables
[mysqld]
...
#skip-grant-tables
重启mysql服务
sudo service mysql restart
出于安全考虑我们不会让MySQL用户无密码即可登录,要在重置完密码后为root账户设置密码
设置密码要把配置文件中的跳过权限验证命令去掉以后重启mysql服务登录设置才行,不然会提示没有验证,无权限操作
方法1:
以 root 身份登录 mysql后,再使用 set password 命令修改密码:
set password for root@localhost = password("new_password");
方法2:
mysqladmin -u root -p password "new_password"
#执行该命名后会提示输入原密码,输入正确后即可修改。
方法3:
update mysql.user set authentication_string=password("pswd") where user="root";
#在重置 root 密码的同时,也可以设置默认密码。不过密码不能为明文,必须使用 password() 函数加密
使用该方法之后需刷新权限列表:
flush privileges;