MySQL里改密码到底咋写SQL语句,步骤啥的简单说说
- 问答
- 2026-01-01 15:30:16
- 4
说到在MySQL里改密码,这事儿说简单也简单,说麻烦也麻烦,主要是看你的MySQL版本,还有你具体在哪种情况下操作,我下面就把几种常见的情况和对应的SQL语句都给你捋一捋,你照着做基本就没错。
最重要的一点:你得能登录进去
改密码的前提是你得先能连接到MySQL数据库服务器,这通常意味着你需要有足够的权限,比如root用户或者有其他用户管理权限的账户,如果你连密码都忘了,根本进不去,那方法就完全不一样了,那个我们后面再说。
你记得旧密码,正常登录后修改(适用于大多数现代MySQL版本,比如5.7.6及以上)
这是最推荐、最标准的方法,从MySQL 5.7.6版本开始,官方推荐使用ALTER USER语句来修改用户密码,这个语句更符合SQL标准,也更直观。
步骤:
-
打开你的MySQL客户端,比如用命令行,输入
mysql -u root -p,然后输入你当前的旧密码,登录成功。 -
执行改密码的SQL语句,基本语法长这样:
ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';
'用户名':就是你要改密码的那个账户名,'root'。'主机名':这个指定了用户可以从哪里连接,本地连接通常是'localhost',如果允许从任何主机连接则是 ,你创建用户的时候指定的是什么,这里就写什么,最常见的是'root'@'localhost'。'新密码':就是你想要设置的新密码,要用单引号括起来。
举个例子,你要把本地
root用户的密码改成MyNewPass123!,就写:ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass123!';
-
让修改生效,执行完上面那句后,密码立刻就改了,不需要再运行别的命令(像老的
FLUSH PRIVILEGES;在这个语句里已经不需要了)。
比较老的MySQL版本(比如5.7.6之前)
在老版本里,更常用的是SET PASSWORD语句。
步骤:
- 同样,先登录到MySQL。
- 执行SQL语句,语法是:
SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');注意,这里多了一个
PASSWORD()函数,它的作用是把你的明文密码加密成MySQL需要的格式,在老版本里,忘记这个函数是常见的错误。 举个例子,给root@localhost改密码:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass123!'); - 执行完后,通常建议运行一下
FLUSH PRIVILEGES;来重新加载权限表,让修改立即生效,虽然有时候不刷新也可能行,但刷一下总没错。
你忘记了密码,完全无法登录(Linux系统下常用方法)
这是最棘手的情况,需要“绕过”密码验证来重置,这个方法通常在服务器本机上操作。

步骤(以Linux系统为例):
- 停止MySQL服务。
sudo systemctl stop mysql
或者
sudo /etc/init.d/mysql stop
- 创建一个初始化文件,新建一个文本文件,比如叫
/tmp/mysql-init,里面写上改密码的SQL语句,因为这时候我们不需要密码验证,所以可以用最原始的ALTER USER,但不需要旧密码。ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass123!';
把这句话保存到
/tmp/mysql-init文件里。 - 以特殊方式启动MySQL,告诉它跳过权限表加载,并执行我们这个初始化文件。
sudo mysqld_safe --skip-grant-tables --init-file=/tmp/mysql-init &
--skip-grant-tables:这个参数是关键,它让MySQL启动时不检查密码。--init-file=/tmp/mysql-init:告诉MySQL启动后执行这个文件里的SQL命令。
- 等待一下,等MySQL完全启动并执行完文件里的命令后,密码就已经被重置了,然后正常停止MySQL服务。
sudo systemctl stop mysql
- 再以正常方式启动MySQL服务。
sudo systemctl start mysql
- 清理:删除那个临时文件
/tmp/mysql-init。 - 你就可以用新密码
MyNewPass123!登录了。
在安装过程中或者第一次安装后,使用mysql_secure_installation命令
这个不是SQL语句,但是一个非常常见的场景,当你第一次安装MySQL后,运行 sudo mysql_secure_installation 命令,它会引导你进行一系列安全设置,其中最重要的一步就是为root用户设置密码,你只需要跟着提示输入新密码就行,非常方便,这个方法本质上是调用了MySQL内部的机制来修改密码。
总结一下要点和避坑指南:
- 看版本:先搞清楚你的MySQL版本是不是5.7.6以上,这决定了你用
ALTER USER还是SET PASSWORD。 - 别忘主机名:改密码时一定要写上
'用户名'@'主机名',只写用户名会报错,你不知道主机名是啥的话,可以登录后查mysql.user表看看。 - 老版本用PASSWORD()函数:如果用
SET PASSWORD,一定记得加上PASSWORD()函数。 - 密码复杂度:设置一个足够复杂的密码,别用简单的
123456。 - 忘记密码别慌:按照“跳过权限表”的流程走,一步步来,基本都能解决,Windows系统下原理类似,但停止和启动服务的方式不同。
基本上,把这几种情况搞明白,你在MySQL里改密码就不会有什么大问题了,最常用的就是第一种情况,直接用ALTER USER语句,简单又强大。
本文由帖慧艳于2026-01-01发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/72528.html
