mysql修改用户密码的方法和mysql忘记密码的解决方法


### MySQL 修改用户密码的方法

要修改 MySQL 用户的密码,您可以使用以下 SQL 命令之一,具体取决于您的 MySQL 版本和您的具体需求。这里提供两种常见方法:

**对于 MySQL 5.7.6 及更新版本**(推荐使用 `ALTER USER` 语句):


ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES; -- 大多数情况下不需要,但如果是修改了权限,则可能需要

请将 `'username'` 替换为您要修改密码的用户名,`'host'` 替换为用户连接的主机名(通常是 `%` 表示任意主机,或 `localhost`),`'new_password'` 替换为您的新密码。

**对于早期版本的 MySQL**(使用 `SET PASSWORD` 语句):


SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');

注意:从 MySQL 5.7.6 开始,`PASSWORD()` 函数被标记为已弃用,并可能在未来的版本中移除。因此,建议在新版本中使用 `ALTER USER` 语句。

### MySQL 忘记密码的解决方法

如果您忘记了 MySQL 的 root 用户或其他用户的密码,您可以通过以下步骤来重置密码:

1. **停止 MySQL 服务**(根据您的操作系统,命令可能有所不同)。

2. **以无密码模式启动 MySQL**(通常是通过修改 MySQL 的启动配置文件或在命令行中指定 `--skip-grant-tables` 选项)。

3. **登录到 MySQL**(由于启用了 `--skip-grant-tables`,您现在可以无需密码登录)。

4. **选择 MySQL 数据库**:


    USE mysql;
    

5. **更新密码**:

对于 MySQL 5.7.6 及更新版本,使用 `ALTER USER`:


    UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='username' AND Host='host';
    FLUSH PRIVILEGES;
    

注意:在 MySQL 5.7.6 及以上版本中,`PASSWORD()` 函数已被弃用,但在这里为了与早期版本的 `SET PASSWORD` 语句保持一致,仍然展示。实际上,您应该使用 `ALTER USER` 语句,并省略 `PASSWORD()` 函数,如之前所示。

对于早期版本,使用 `SET PASSWORD`(但在此情况下,由于以无密码模式启动,您可能无法直接使用 `SET PASSWORD`,而是直接更新 `user` 表的 `password` 字段)。

6. **退出 MySQL 并重启 MySQL 服务**,这次不带 `--skip-grant-tables` 选项。

7. **使用新密码登录**。

**注意**:直接修改 `mysql.user` 表或使用 `--skip-grant-tables` 选项可能会带来安全风险,因为它们允许您绕过 MySQL 的权限系统。请确保在安全的环境中执行这些步骤,并在完成后立即恢复 MySQL 的正常安全设置。