如何修改MySQL用户密码

本文详细介绍了当忘记MySQL ROOT密码时,如何通过编辑配置文件、重启服务、设置新密码等一系列步骤,轻松解决密码遗忘问题。同时提供了多种方法进行密码修改,并强调了配置文件修改与重启服务的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

忘记MySQLROOT密码是在MySQ使用中很常见的问题,可是有很多朋友并不会重置ROOT密码。这时候常会出现:1045-Acess denied for user:'root'@'localhost'(Usingpassword:YES)之类的错误。下面转载的文章说了如何改密码的方法。


1、编辑MySQL的配置文件:my.ini
一般在MySQL安装目录下有my.ini即MySQL的配置文件。
在此配置文件的最后添加如下一行:
skip-grant-tables
保存退出编辑。

2、然后重启MySQL服务
在命令行下执行:
net stop MySQL
net start MySQL

3、设置新的ROOT密码
然后再在命令行下执行:
MySQL -u root -p MySQL或mysql -u root -p
直接回车无需密码即可进入数据库了。
此时,在命令行下执行 use mysql;
现在我们执行如下语句把root密码更新为:
update user set password=PASSWORD("root") where user='root';
(注意:此时不用使用mysqladmin -u root -p password'你的新密码'这条命令修改密码,因为'skip-grant-tables'配置,
不信的话,你可以试用一下,它肯定会报如下所示的错误:
F:\Documents and Settings\long>mysqladmin -u root -ppassword 'root'
Enter password:
Warning: single quotes were not trimmed from the password by yourcommand
line client, as you might have expected.
mysqladmin:
You cannot use 'password' command as mysqld runs
 with grant tables disabled (was started with--skip-grant-tables).
Use: "mysqladmin flush-privileges password '*'" instead)
exit 退出MySQL。

4、还原配置文件并重启服务

然后修改MySQL配置文件把刚才添加的那一行'skip-grant-tables'删除。
再次重起MySQL服务,密码修改完毕。
用新密码root试一下吧,又能登入重新进入mysql了?



附mysql修改密码的一些方法:
1. 用MYSQL的grant语句,例如
mysql -h hostname –u root 命令登录到mysqld server 用grant 命令改变口令:
mysql -h 192.168.1.101 -u root
上边的192.168.1.101 是偶的mysqld 运行机器,你换成自己的,这样登录上去,就可以修改密码了,
其实没必要这么麻烦,直接mysql -u root就可以了。
GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITHGRANT OPTION

2. mysqladmin -u 用户名 -p 旧密码 password 新密码
例1:给root 加个密码root。首先进入cmd中,然后键入
以下命令,至于在CMD下能否使用mysqladmin,
就要看你的Windows环境变量PATH中是否添加“E:\Program Files\MySQL\MySQL Server5.1\bin;”(请改为你自己的安装路径)了。)
mysqladmin -u root password root
注:因为开始时root 没有密码,所以-p 旧密码一项就可以省略了。
例2:再将root 的密码改为admin。
mysqladmin –u root -proot password admin(注意-p 不要和后面的密码分
开写,要写在一起,不然会出错,错误如下所示:
F:\Documents and Settings\long>mysqladmin -u root -proot password admin
Enter password: ****
mysqladmin: Unknown command: 'root')
当然你也可以这样写:mysqladmin –u root -p password admin回车,
然后再输入你的旧密码,这样也是完全也可以的,看你的爱好了.
例3:再将root用户的密码去掉.
F:\Documents and Settings\long>mysqladmin -u root -ppassword  ;
Enter password: root
此时,root用户又没有密码了.可以通过下面的方法设置:
F:\Documents and Settings\long>mysql -u root
mysql>set password for'root'@'localhost'=password('root');(语法:SET PASSWORD FOR '用户名'@'主机'= PASSWORD('密码'))
mysql>set password for'root'@'%'=password('root');
//本条可选,这是在配置mysql数据库,如果你选择了允许root通过远程登录进来时,你在mysql数据库下的user表中,
use mysql;
select * from user;可以看到有两条记录,如果你没有配置这一项的话,只会第一条记录!
Host               User    Password
'localhost', 'root', '*9C9F4927129ECC3209D8550DC8B67156FDBF9418',...
'%', 'root', '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B', ...
通过以上设置,root的密码将变为root这样就完成了根用户root密码的设置工作。

3. use mysql;
 update user set password =password('yourpass')where user='root'

(注:下面的这些方法我本人没有试过,不知对不对,我只是转载了一下:)
下面的方法都在mysql提示符下使用,且必须有mysql的root权限:
方法4
mysql> INSERT INTO mysql.user(Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES
确切地说这是在增加一个用户,用户名为jeffrey,密码为biscuit。
在《mysql中文参考手册》里有这个例子,所以我也就写出来了。
注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES。

方法5
和方法三一样,只是使用了REPLACE语句
mysql> REPLACE INTO mysql.user(Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES

方法6
使用SET PASSWORD语句,
mysql> SET PASSWORD FOR jeffrey@"%" =PASSWORD('biscuit');
你也必须使用PASSWORD()函数,
但是不需要使用FLUSH PRIVILEGES。


方法7
使用GRANT ... IDENTIFIED BY语句
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIEDBY 'biscuit';
这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES。

注:mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,
否则会出现拒绝访问,还有一种方法,就是重新启动mysql服务器,来使新设置生效。
### 修改 MySQL 用户密码的几种方法 MySQL 用户密码修改可以通过多种方式实现,具体方法取决于使用的 MySQL 版本以及操作环境。 在 MySQL 8.0 及以上版本中,`user` 表中取消了 `password` 字段,取而代之的是 `authentication_string` 字段,该字段存储的是加密后的 41 位字符串密码。因此,在修改用户密码时,推荐使用 `ALTER USER` 语句。例如,修改用户 `'username'@'hostname'` 的密码为 `'password'`,可以执行以下命令: ```sql ALTER USER 'username'@'hostname' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` 如果使用的是较旧版本的 MySQL,可以采用 `SET PASSWORD` 语句来修改密码。该方法要求当前用户具有 `UPDATE` 权限,并且需要以 `username@localhost` 的格式指定用户账户。例如: ```sql SET PASSWORD FOR 'username'@'localhost' = PASSWORD('new_password'); ``` 此外,也可以直接通过更新 `mysql.user` 表中的 `authentication_string` 字段来修改密码。例如,将 `root` 用户密码修改为 `123456`: ```sql USE mysql; UPDATE user SET authentication_string = PASSWORD('123456') WHERE user = 'root'; FLUSH PRIVILEGES; ``` 在某些图形化管理工具中,例如 Navicat,修改 MySQL 数据库用户密码的操作更为直观。打开 Navicat 并连接到 MySQL 数据库后,右键点击连接,选择“数据库用户”或“用户和权限”,找到要修改密码用户并双击打开用户属性,在“密码”字段输入新密码后点击“确定”保存更改即可。 无论采用哪种方法修改密码,都应确保操作完成后执行 `FLUSH PRIVILEGES;` 以刷新权限,确保更改立即生效[^1]。 如果 MySQL 服务部署在 Ubuntu 系统上,修改密码后可能还需要重启 MySQL 服务以使更改生效,可以使用如下命令重启服务: ```bash sudo /etc/init.d/mysql restart ``` 在进行密码修改时,应确保新密码的安全性,避免使用过于简单或容易被猜测的密码。同时,定期审查用户权限设置,确保数据库的安全性[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值