如何修改用户密码_mysql密码修改方式

23次阅读

mysql密码修改有四种方式:已登录时用ALTER USER(8.0+)或SET PASSword(5.7);忘密时跳过授权表重置;用mysqladmin工具快速修改;创建/修改远程用户需匹配host并刷新权限。

如何修改用户密码_mysql密码修改方式

MySQL 用户密码修改有多种方式,具体取决于你当前的权限、MySQL 版本(5.7 / 8.0+)以及是否能正常登录。下面分几种常见场景说明操作方法,重点讲清命令逻辑和注意事项。

通过已登录 MySQL 修改当前用户密码

适用于你已用 root 或其他高权限账号成功登录 MySQL 命令行的情况。注意:MySQL 8.0+ 不再支持 SET PASSWORD = PASSWORD('xxx') 这类旧语法,必须使用新格式。

  • MySQL 8.0+ 推荐写法(安全且兼容):
    ALTER USER CURRENT_USER() IDENTIFIED BY '新密码';
    或指定用户名:
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  • MySQL 5.7 可用(但 8.0 已废弃):
    SET PASSWORD = PASSWORD('新密码');
    或针对特定用户:
    SET PASSWORD for 'root'@'localhost' = PASSWORD('新密码');

忘记 root 密码时重置(跳过授权表)

适用于完全无法登录,需要绕过密码验证来重置 root 密码。操作需有服务器系统级权限(如 linux 的 sudo)。

  • 停止 MySQL 服务:
    sudo systemctl stop mysqldcentos/RHEL)或
    sudo service mysql stopubuntu/debian
  • 以跳过权限检查方式启动:
    sudo mysqld_safe --skip-grant-tables --skip-networking &
  • 另开终端,无密码登录:
    mysql -u root
  • 执行重置(注意:8.0+ 必须先刷新权限):
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  • 重启 MySQL 正常服务:
    先 kill mysqld_safe 进程,再 systemctl start mysqld

使用 mysqladmin 工具快速修改(仅限本地且知道原密码)

适合脚本化操作或临时修改,无需进入 MySQL 命令行。

  • 修改本机 root 密码(需原密码):
    mysqladmin -u root -p password "新密码"
    执行后会提示输入当前密码
  • 修改非 root 用户(如 user1):
    mysqladmin -u root -p password "新密码" -h localhost -P 3306
    再进 MySQL 手动更新 user 表或用 ALTER USER(推荐)

创建或修改远程用户密码(注意 host 和权限)

如果用户允许从其他 IP 登录(如 'user'@'%'),修改密码后还需确认权限是否生效。

  • 先确认用户是否存在及 host 值:
    select User, Host FROM mysql.user WHERE User = '用户名';
  • 修改对应 host 的密码(例如允许所有 IP):
    ALTER USER '用户名'@'%' IDENTIFIED BY '新密码';
  • 刷新权限:
    FLUSH PRIVILEGES;
  • 确保防火墙和 MySQL 绑定地址(bind-address)允许远程连接

密码强度建议使用大小写字母+数字+符号组合,避免空格和特殊字符(如 @ / $ 在 shell 中可能需转义)。修改后可立即用新密码尝试连接验证,不复杂但容易忽略 host 匹配和权限刷新步骤。

text=ZqhQzanResources