MySQl 忘记密码怎么办?

本文介绍了一种忘记MySQl密码后的解决方案,通过修改my.ini文件中的配置跳过权限验证,重启服务后无需密码即可登录。之后,可以通过更新users表中的authentication_string字段来重设密码。

MySQl忘记密码怎么办?

我们在安装使用MySQl 时,有时可能避免不了忘记密码,如果你忘记密码,可以按照如下方案进行操作:

  1. 找到my.ini 文件
    my.ini 文件为 MySQl 设置文件, 如果你是默认的安装地址,文件在
    C:\ProgramData\MySQL\MySQL Server 5.7 下
    但是ProgramData 常规状态下是隐藏的

  2. 设置权限认证跳过
    也就是在 [mysqld] 下 加上 skip-grant-tables

   skip-grant-tables
  • 1

lchh

  1. 重启 mysql 服务
    这里可以直接在命令行中连续输入 或者在服务里找到mysql 服务重启
 	net stop mysql
 	net start mysql
  • 1
  • 2

lchh

重启后, 以 mysql -uroot -p 登陆
会发现我们可以不需要密码就可以登陆

    mysql -uroot -p
  • 1

lchh

  1. 重新设置密码
    首先先选择 mysql 数据库
   use mysql
  • 1

然后更新 password

   update user set authentication_string = password ( 'new-password' ) where user = 'root' ; 
  • 1

lchh
注:这里要更改的是 authentication_string, 而不是password 字段
输入

   update user  set Password=password('new-password') where user='root'
  • 1

会报错: ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’;
lchh

原因是 mysql 数据库下已经没有password 字段了,password 字段改成了 authentication_string

  1. 在 my.ini 文件中去掉 加上的 skip-grant-tables
  2. 重启 mysql 服务
  3. 以新密码登陆
    lchh
忘记 MySQL 的 `root` 用户密码的情况下,可以通过使用 `init-file` 参数来重置密码。该方法利用了 MySQL 启动时读取初始化文件的功能,通过在初始化文件中写入修改密码的 SQL 命令,从而实现密码的重置。以下是具体步骤: 1. 创建一个文本文件,并在其中写入以下 SQL 命令,用于修改 `root` 用户的密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; FLUSH PRIVILEGES; ``` 其中 `'新密码'` 需要替换为用户希望设置的新密码。 2. 将该文件保存为 MySQL 服务可以访问的路径,例如 `/tmp/reset_password.sql`。 3. 编辑 MySQL 的配置文件(通常是 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`),在 `[mysqld]` 部分添加或修改 `init-file` 参数,指定上一步创建的文件路径: ```ini [mysqld] init-file=/tmp/reset_password.sql ``` 4. 重启 MySQL 服务以应用更改。具体的重启命令取决于操作系统和 MySQL 的安装方式,通常可以使用以下命令之一: ```bash sudo systemctl restart mysqld ``` 或者 ```bash sudo service mysql restart ``` 5. MySQL 服务重启后,会自动执行初始化文件中的 SQL 命令,从而将 `root` 用户的密码修改为指定的新密码。 6. 修改完成后,建议删除或重命名初始化文件,以防止其被再次执行,从而避免潜在的安全风险[^1]。 此外,如果需要临时以跳过权限检查的方式启动 MySQL 服务,可以通过添加 `--skip-grant-tables` 参数来实现。这种方式适用于无法通过 `init-file` 方法重置密码的情况。具体操作步骤如下: 1. 停止 MySQL 服务。 2. 使用 `--skip-grant-tables` 参数启动 MySQL 服务: ```bash sudo mysqld_safe --skip-grant-tables & ``` 3. 使用 `mysql` 命令行工具连接到 MySQL 服务器,此时无需密码验证。 4. 执行以下 SQL 命令修改 `root` 用户的密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; FLUSH PRIVILEGES; ``` 5. 停止 MySQL 服务,并正常重启以恢复权限检查[^2]。 需要注意的是,上述方法适用于本地环境或具有服务器管理权限的情况。对于托管在云平台上的 MySQL 实例,可能需要遵循云平台提供的特定流程来重置密码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值