windows下重置mysql的root密码方法介绍

作者:woider 时间:2024-01-17 18:37:35 

今天发现 WordPress 连接不上数据库,登录 window server 服务器查看,所有服务均运行正常。

使用 root 账号登录 mysql 数据库,结果提示密码不匹配。我突然意识到,服务器可能遭受到 SQL注入 攻击了……

至于事故发生的原因和之后所做的补救措施,以后有机会我会聊一聊的。这里我主要讲一下 mysql 用户密码的重置步骤。

重置 root 密码
在忘记 root 密码的情况下,可以进入 mysql 的安全模式,重置 root 密码。

1. 停止 MySQL 服务

打开命令提示符窗口,输入 net stop mysql 关闭 MySQL 服务。


C:\Users\Administrator>net stop mysql57
MySQL57 服务正在停止..
MySQL57 服务已成功停止。

↑ 服务名称不一定都是 mysql,比如我的就是 mysql57,57代表版本号为5.7

当然你也可以通过计算机管理面板关闭 MySQL 服务。

windows下重置mysql的root密码方法介绍

2. 切换到 bin 目录

在命令提示符窗口中,通过 cd 命令切换到 mysql 安装目录下的 bin 目录。


C:\Users\Administrator>
cd C:\Program Files\MySQL\MySQL Server 5.7\bin
C:\Program Files\MySQL\MySQL Server 5.7\bin>

↑ 默认安装目录为 C:\Program Files\MySQL\MySQL Server

3. 进入安全模式

在 bin 目录下输入 mysqld --skip-grant-tables ,跳过权限检查启动 mysql。

如果你配置了 my.ini 文件,则需要将其引入: mysqld --defaults-file="../my.ini" --skip-grant-tables


[mysqld]

basedir = "C:\ProgramData\MySQL\MySQL Server 5.7"
datadir = "C:\ProgramData\MySQL\MySQL Server 5.7\Data"

↑ 我在 my.ini 文件中指定了数据的存放路径,如果不引入配置文件,则会提示 No such file or directory 错误。

4. 重置账户密码

打开另一个命令提示符窗口(别关闭安全模式窗口),同样切换到 mysql \ bin 目录,输入 mysql 跳过权限验证连接数据库。


C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql
Server version: 5.7.16 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

↑ 也可以指定连接参数 mysql -u <用户名> -p <密码> -h <连接地址> -P <端口号> -D <数据库>

执行 update mysql.user set authentication_string="" where user="root"; 重置 root 用户的密码(5.7 之前为 password 字段)。


mysql> update mysql.user set authentication_string="" where user="root";
Query OK, 1 row affected (0.00 sec)

mysql> select user,authentication_string from mysql.user\G
*************************** 1. row ***************************
        user: root
authentication_string:
*************************** 2. row ***************************
        user: mysql.sys
authentication_string: *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE

2 rows in set (0.00 sec)

↑ root 用户的 authentication_string 字段已经被清空了

5. 刷新权限表

执行 flush privileges; 命令刷新权限表,密码已经重置完成,输入 quit 退出。


mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
mysql> quit
Bye

关闭所有命令提示符窗口,通过任务管理器结束 mysqld.exe 进程。重启 MySQL 服务,之后就可以直接登录 root 账号了。

修改 root 密码

出于安全考虑,root 密码不宜为空,所以需要在密码重置之后,再重新设置一个密码。

方法一:SET PASSWORD

SET PASSWORD FOR "username"=PASSWORD("new password");

以 root 身份登录 mysql,再使用 set password 命令修改密码:


mysql> set password for root@localhost = password("pswd");
Query OK, 0 rows affected, 1 warning (0.00 sec)

方法二:mysqladmin

mysqladmin -u "username" -p password "new password"

执行该命名之后会提示输入原密码,输入正确后即可修改。


C:\Program Files\MySQL\MySQL Server 5.7\bin> mysqladmin -u root -p password pswd
Enter password: ****

mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

方法三:UPDATE TABLE

UPDATE mysql.user SET authentication_string=PASSWORD("new password") WHERE user="username";

在重置 root 密码的同时,也可以设置默认密码。不过密码不能为明文,必须使用 password() 函数加密。


mysql> update mysql.user set authentication_string=password("pswd") where user="root";
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

总结

MySQL数据库设计之利用Python操作Schema方法详解

mysql中使用instr进行模糊查询方法介绍

MySQL中or语句用法示例

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

来源:http://www.cnblogs.com/woider/p/6725867.html

标签:重置mysql,root密码
0
投稿

猜你喜欢

  • python中map()与zip()操作方法

    2023-11-11 08:09:29
  • 快速实现基于Python的微信聊天机器人示例代码

    2022-05-30 19:22:50
  • Matplotlib中rcParams使用方法

    2022-12-14 03:41:46
  • 如何基于Python实现电子邮件的发送

    2022-03-16 11:49:16
  • driver = webdriver.Chrome()报错问题及解决

    2023-04-09 21:03:16
  • SQL 2008邮件故障排除:发送测试电子邮件

    2008-12-02 14:28:00
  • python连接、操作mongodb数据库的方法实例详解

    2024-01-12 13:44:40
  • Python全栈之学习JS(1)

    2021-09-30 03:43:23
  • 如何导出python安装的所有模块名称和版本号到文件中

    2022-07-26 15:38:59
  • Python 有可能删除 GIL 吗?

    2023-02-12 15:52:21
  • 解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题

    2021-06-03 06:31:22
  • 详解Linux下安装php环境并且配置Nginx支持php-fpm模块

    2023-11-11 02:02:50
  • PHP简易延时队列的实现流程详解

    2023-05-29 23:02:48
  • SQL Server SQL Agent服务使用教程小结

    2024-01-25 20:35:13
  • JavaScript 与 ActionScript 3.0 交互的一些问题

    2008-01-27 12:20:00
  • 修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)

    2024-06-05 09:44:31
  • Python selenium把歌词评论做成词云图

    2022-12-29 10:17:35
  • 详解vscode使用git所遇到的坑

    2023-12-25 11:17:48
  • 基于Python函数和变量名解析

    2022-10-26 13:49:56
  • c#使用FreeSql生产环境时自动升级备份数据库

    2024-01-22 15:56:01
  • asp之家 网络编程 m.aspxhome.com