注意
mysql5.7.9版本之后取消了password字段与password函数,password字段变更为authentication_string字段
windows
思路
(这里使用的是5.7.9版本之前)首先我们要知道mysql中的用户数据是存在mysql数据库中的user表中,
user表中的密码是进行加密过的,所以我们需要用password()函数用来加密我们的密码.(需要了解对应的加密算法,另行百度,我这里就不展开了), root用户的权限是最高的.
然后我们需要分情况讨论
1.如果我们是要使用root用户修改其他用户的密码,那直接登录root用户,然后去mysql数据库下的user表更新数据
update user set password = password(‘你的新密码’) where user = ‘需修改密码的用户’;
2.如果我们是忘记了root的密码,那我们就要使用无验证方式启动mysql服务,去修改root用户的密码
最后修改完密码之后要重新启动mysql服务,更新的密码才会生效
步骤
1 停止mysql服务(需要管理员运行该cmd): cmd – > net stop mysql
2. 使用无验证方式启动mysql服务: mysqld --skip-grant-tables
3. 打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功
4. use mysql;
5. update user set password = password(‘你的新密码’) where user = ‘root’;
6. 关闭两个窗口
7. 打开任务管理器,手动结束mysqld.exe 的进程
8. 启动mysql服务
9. 使用新密码登录
mac
思路
在这里本人使用的是mysql8.0.21版本,思路与windows类似
步骤
1.需要先停止mysql服务(因为我们要以跳过验证的方式启动mysql服务)
sudo /usr/local/mysql/support-files/mysql.server stop:以root权限使用mysql.server命令停止服务
2.sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables:root权限使用mysqld_safe命令以跳过验证的方式启动mysql服务
3.新起一个终端(因为原本的这个终端被使用于启动mysql服务)
mysql -u root:使用mysql命令直接登录mysql
4.查看mysql数据库下user表中的数据
SELECT user, authentication_string FROM mysql.user;
我们的密码就是存在authentication_string字段中以某种方式进行加密,所以我们修改密码的目的就是修改这个字段
注:如果你之前使用了其他语句修改密码,然后输入密码的时候一直报错以下这个错
mysql -u root -p
Enter password: ******
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
如果 你已经这样更改密码,并且导致了无法进入mysql
你要使用该命令清空root的密码
UPDATE user SET authentication_string="" WHERE user='root';
5.然后重启服务,以正常模式启动服务
mysql -u root -p:此时密码为空
进入mysql服务器
然后使用
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "这里填你的密码";
这样即完成了整个密码修改过程