mysql8 修改账号密码

MySQL 8.0 密码找回
本文详细介绍了在Windows 10环境下,如何解决MySQL 8.0.20版本忘记root密码的问题。包括暂停服务、越权操作及修改密码的具体步骤。

一、前言

    很久没使用mysql,由于项目需要配置了一遍发现以前正常使用的mysql账号密码无法登陆了,于是网上一顿操作陷入了真真假假中的尝试,一个小时的忙活终于搞定了。由于搭建的环境为win10,mysql版本为mysql-8.0.20-winx64,以下运用都是在这个环境中适用。

二、差异性

   在遗忘的密码的情况下进行密码修改,常规的操作基本是越权,使用命令修改root的密码,在8.0版本中mysql修改了这2个操作的命令。

    越权命令:旧的命令为mysqld –skip-grant-tables,新的命令为mysqld --console --skip-grant-tables --shared-memory。

    密码字段:旧的字段为password,新的字段为authentication_string。

 三、操作

1、暂停mysql服务

    通过管理员权限打开cmd,输入net mysql stop命令。

    打开电脑服务,找到MYSQL服务停止服务。

    打开进程找到mysql结束进程。

    以上三种操作都是可以暂停mysql服务。

2、越权操作

    打开cmd进入到mysql文件的bin目录,执行 mysqld --console --skip-grant-tables --shared-memory。

3、修改root密码

    打开新的cmd,输入mysql直接进入mysql,输入修改root账号update user set authentication_string='' where user='root';然后退出mysql。关闭越权命令的cmd,在服务中启动mysql服务。打开cmd进入到mysql文件的bin目录,进行登录mysql操作,mysql -uroot -p,此时不用输入密码直接回车,root的密码为空。进入mysql后输入ALTER user 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'root';。密码就会被修改成root,退出再次进入mysql就可以正常使用了。

MySQL修改 `root` 用户的密码可以通过多种方式实现,具体取决于是否知道当前的密码以及 MySQL 的版本。以下是几种常见方法: ### 1. 知道当前密码时修改 root 密码 #### 使用 `mysqladmin` 命令 如果知道当前的密码,可以使用 `mysqladmin` 命令来修改密码。命令格式如下: ```bash mysqladmin -u root -p password "new_password" ``` 执行该命令后,系统会提示输入当前的密码。输入正确后,`root` 用户的密码将被修改为 `"new_password"` [^2]。 #### 使用 SQL 命令 登录到 MySQL 后,可以使用 `ALTER USER` 或 `SET PASSWORD` 命令来修改密码。例如: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` 或者: ```sql SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password'); ``` 执行完上述命令后,需要使用 `FLUSH PRIVILEGES;` 来刷新权限 [^4]。 ### 2. 忘记密码时修改 root 密码 #### 使用 `--skip-grant-tables` 参数启动 MySQL 如果忘记了 `root` 用户的密码,可以通过 `--skip-grant-tables` 参数启动 MySQL,从而跳过授权验证。步骤如下: 1. 停止 MySQL 服务。 2. 使用 `--skip-grant-tables` 参数启动 MySQL: ```bash mysqld_safe --skip-grant-tables & ``` 3. 登录到 MySQL修改 `root` 用户的密码: ```sql UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root'; FLUSH PRIVILEGES; ``` 4. 重启 MySQL 服务以恢复正常运行 [^3]。 #### 使用 `--init-file` 选项启动 MySQL 另一种方法是通过 `--init-file` 选项启动 MySQL,该选项允许在启动时执行一个包含 SQL 命令的文件。步骤如下: 1. 停止 MySQL 服务。 2. 创建一个包含修改密码命令的 SQL 文件,例如 `mysql-init-file.txt`,内容如下: ```sql UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root'; FLUSH PRIVILEGES; ``` 3. 使用 `--init-file` 选项启动 MySQL: ```bash mysqld --init-file=mysql-init-file.txt & ``` 4. 重启 MySQL 服务以恢复正常运行 [^4]。 ### 3. 使用 MySQL 8.0 新特性 在 MySQL 8.0 中,`PASSWORD()` 函数已被移除,因此修改密码的命令略有不同。例如: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` 此外,MySQL 8.0 引入了更强的密码策略,可以通过 `validate_password` 插件进行配置 [^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值