当前位置:首页 > 问答 > 正文

MySQL里改密码到底咋写SQL语句,步骤啥的简单说说

说到在MySQL里改密码,这事儿说简单也简单,说麻烦也麻烦,主要是看你的MySQL版本,还有你具体在哪种情况下操作,我下面就把几种常见的情况和对应的SQL语句都给你捋一捋,你照着做基本就没错。

最重要的一点:你得能登录进去

改密码的前提是你得先能连接到MySQL数据库服务器,这通常意味着你需要有足够的权限,比如root用户或者有其他用户管理权限的账户,如果你连密码都忘了,根本进不去,那方法就完全不一样了,那个我们后面再说。

你记得旧密码,正常登录后修改(适用于大多数现代MySQL版本,比如5.7.6及以上)

这是最推荐、最标准的方法,从MySQL 5.7.6版本开始,官方推荐使用ALTER USER语句来修改用户密码,这个语句更符合SQL标准,也更直观。

步骤:

  1. 打开你的MySQL客户端,比如用命令行,输入 mysql -u root -p,然后输入你当前的旧密码,登录成功。

  2. 执行改密码的SQL语句,基本语法长这样:

    ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';
    • '用户名':就是你要改密码的那个账户名,'root'
    • '主机名':这个指定了用户可以从哪里连接,本地连接通常是 'localhost',如果允许从任何主机连接则是 ,你创建用户的时候指定的是什么,这里就写什么,最常见的是 'root'@'localhost'
    • '新密码':就是你想要设置的新密码,要用单引号括起来。

    举个例子,你要把本地root用户的密码改成 MyNewPass123!,就写:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass123!';
  3. 让修改生效,执行完上面那句后,密码立刻就改了,不需要再运行别的命令(像老的FLUSH PRIVILEGES;在这个语句里已经不需要了)。

    MySQL里改密码到底咋写SQL语句,步骤啥的简单说说

比较老的MySQL版本(比如5.7.6之前)

在老版本里,更常用的是SET PASSWORD语句。

步骤:

  1. 同样,先登录到MySQL。
  2. 执行SQL语句,语法是:
    SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');

    注意,这里多了一个PASSWORD()函数,它的作用是把你的明文密码加密成MySQL需要的格式,在老版本里,忘记这个函数是常见的错误。 举个例子,给root@localhost改密码:

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass123!');
  3. 执行完后,通常建议运行一下 FLUSH PRIVILEGES; 来重新加载权限表,让修改立即生效,虽然有时候不刷新也可能行,但刷一下总没错。

你忘记了密码,完全无法登录(Linux系统下常用方法)

这是最棘手的情况,需要“绕过”密码验证来重置,这个方法通常在服务器本机上操作。

MySQL里改密码到底咋写SQL语句,步骤啥的简单说说

步骤(以Linux系统为例):

  1. 停止MySQL服务
    sudo systemctl stop mysql

    或者

    sudo /etc/init.d/mysql stop
  2. 创建一个初始化文件,新建一个文本文件,比如叫/tmp/mysql-init,里面写上改密码的SQL语句,因为这时候我们不需要密码验证,所以可以用最原始的ALTER USER,但不需要旧密码。
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass123!';

    把这句话保存到 /tmp/mysql-init 文件里。

  3. 以特殊方式启动MySQL,告诉它跳过权限表加载,并执行我们这个初始化文件。
    sudo mysqld_safe --skip-grant-tables --init-file=/tmp/mysql-init &
    • --skip-grant-tables:这个参数是关键,它让MySQL启动时不检查密码。
    • --init-file=/tmp/mysql-init:告诉MySQL启动后执行这个文件里的SQL命令。
  4. 等待一下,等MySQL完全启动并执行完文件里的命令后,密码就已经被重置了,然后正常停止MySQL服务
    sudo systemctl stop mysql
  5. 再以正常方式启动MySQL服务
    sudo systemctl start mysql
  6. 清理:删除那个临时文件 /tmp/mysql-init
  7. 你就可以用新密码 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语句,简单又强大。