admin 管理员组

文章数量: 887021

    有时mysql的root密码容易忘记,这时候可以通过进入mysql的安全模式–skip-gratn-tables来修改密码,步骤依次如下。

1、设置root密码, 并授予权限

    1)进入mysql的bin目录

cd D:\DBtools\mysql_5_7_33_winx64\bin

    2)用管理员打开一个CMD黑框框A,如图(1)所示, 输入如下命令,来关闭mysql服务

## 切换为CMD模式
cmd

## 禁用mysql服务
net stop mysql
图(1)以管理员身份启动PowerShell,再输入CMD,切换到cmd模式

    3) 进入mysql安全模式

mysqld -nt --skip-grant-tables

   如图(2)所示:

图(2) 关闭MySQL服务,并进入安全模式

    4)再用管理员权限重新打开一个CMD黑框框B,依次输入如下命令,如图(3)所示。
//方法一,适用于5.7.31以下的版本

mysql -uroot
use mysql;
flush privileges;
-- 对所有的数据库,都有读写权限(方法一) 
grant all privileges on *.* to 'root'@'localhost' identified by '你的密码' with grant option;

-- 只针对的TestDB数据库,有读写权限(方法二) 
grant all privileges on TestDB.* to 'root'@'localhost' identified by '你的密码' with grant option;
flush privileges;
exit;

//方法二:适用于5.7.32以上(5.7.32 ~ 8.x)的版本

mysql -uroot
use mysql;
flush privileges;
alter user 'root'@'localhost' identified by '你的密码'; 
flush privileges;
exit;
图(3) 再打开一个DOS窗口,设置新的密码,并授予权限

   5)授予权限
    授权root@localhost用户,对某某数据库的读写权限,这一步很关键,如果没有权限,则会报“Access denied for user ‘root’@‘localhost’”错误。同时,要保证该密码与第4步保持一致。

mysql -uroot
use mysql;
flush privileges;
-- 对所有的数据库,都有读写权限(方法一) 
grant all privileges on *.* to 'root'@'localhost' identified by '你的密码' with grant option;

-- 只针对的TestDB数据库,有读写权限(方法二) 
grant all privileges on TestDB.* to 'root'@'localhost' identified by '你的密码' with grant option;
flush privileges;
exit;

    6) 在黑框框A中按Ctrl+C退出安全模式,然后,启动mysql数据库服务,依次输入如下命令:

net start mysql
mysql -uroot -p
Enter password: 你的密码
show databases;

2、查看root密码

    从MySQl v5.7之后,root密码是以其MD5格式保存到mysql/user表格里的,将这个MD5数值解码就得到真实的密码,如图(4)所示:

-- 查看root密码
select user,authentication_string from user;
图(4) 将MD5解码,得到root密码

    MD5解码地址: cmd5解码

3、修改Navicat链接里的密码

    由于MySQL数据库的密码已经更新,则Navicat链接里的密码也要手动更新,否则也会报“Access denied for user ‘root’@‘localhost’”错误。先关闭当前的Navicat链接 --》点击[修改] --》链接即可。

图(5) Navicat链接的密码也要随之更改

    有时候DB密码已更新,但客户端缓存并没有清掉,仍使用老密码造成"Access denied for user ‘root’@‘localhost’"错误,这时,只需要更新对应的数据库conf配置文件、xml代码,再重启客户端或者网页服务器即可。

参考文献

    1)参考地址: 官网MySQL 5.7使用手册

    2)常用的MySQL命令

-- 查看MySQL的版本
select version();

-- 查看user表里所有的属性
show columns from user;

-- 刷新数据库
flush privileges;

-- 查看所有的DB
show databases;

-- 查看所有的表
show tables;

-- 使用某个数据库
user XXX;

-- 退出MySQL
exit;

    3)root密码修改的执行流程

-- 修改root密码,需要打开2个DOS黑框框 --------------------------
-- 1) A黑框框
-- 关闭MySQL,并进入安全模式
net stop mysql
mysqld -nt --skip-grant-tables


-- 2) B黑框框
mysql -u root -p 
Enter password: 直接回车
use mysql;
flush privileges;
update user set authentication_string=password('你密码') where user='root';
flush privileges;
grant all privileges on *.* to 'root'@'localhost' identified by '你的密码' with grant option;
flush privileges;
exit;

-- 3)Ctrl+C 关闭A黑框框
按Ctrl+C 关闭A黑框框

-- 4)启动MySQL
net start mysql

本文标签: 密码 MySQL root