【转载】正确重置 MySQL 密码

谁都不想弄丢家门钥匙,但不管多么小心,时间长了,这样的事情总会发生几次。MySQL密码也是一样,把它写在文档上不太安全,记在脑子里又难免会忘记。
如果你忘记了MySQL密码,如何重置它呢?

下面是错误答案:
首先停止MySQL服务,然后使用skip-grant-tables参数启动它:

shell> /etc/init.d/mysql stop
shell> mysqld_safe --skip-grant-tables &

此时无需授权就可以进入到MySQL命令行,使用SQL重置MySQL密码:

UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...' AND Host= '...';
FLUSH PRIVILEGES;

为什么说它是错误答案?因为在单纯使用skip-grant-tables参数启动服务后,除非数据库服务器屏蔽了外网访问,否则除了自己,其它别有用心的人也可能访问数据库,尽管重置密码所需的时间很短,但俗话说不怕贼偷就怕贼惦记着,任何纰漏都可能酿成大祸。

下面是正确答案:

关键点是:在使用skip-grant-tables参数的同时,还要加上skip-networking参数:

shell> mysqld_safe --skip-grant-tables --skip-networking &

接着使用SQL重置密码后,记得去掉skip-networking,以正常方式重启MySQL服务:

shell> /etc/init.d/mysqld restart

上面的方法需要重启两次服务,实际上还能更优雅一点,重启一次即可:
首先需要把用到的SQL语句保存到一个文本文件里(/path/to/init/file):

UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...' AND Host= '...';
FLUSH PRIVILEGES;

接着使用init-file参数启动MySQL服务,

shell> /etc/init.d/mysql stop
shell> mysqld_safe --init-file=/path/to/init/file &

此时,密码就已经重置了,最后别忘了删除文件内容,免得泄露密码。
提示:本文用到的参数都是通过命令行mysqld_safe传递的,实际上也可以通过my.cnf。

时间: 2024-11-05 16:37:25

【转载】正确重置 MySQL 密码的相关文章

Linux下重置MySQL密码

Linux下重置MySQL密码 据有关资料显示,人能记住的密码一般不多,很多时候人都是多账户同密码的办法来设置密码的.但一般来说,经常需要接触的账户密码是不会忘记的.但偏偏也有可能有忘记的时候,下面就介绍下在Linux环境下忘记MySQL密码的解决方法.其实很简单,只需要六个步骤就可以解决问的.不多说闲话,进入话题: 1.关闭MySQL服务: service mysqld stop 2.执行下面命令,跳出安全模式,当然,这条命令大概只在localhost的时候有效. /usr/local/mys

重置MySQL密码

  在使用skip-grant-tables参数的同时,还要加上skip-networking参数: shell> mysqld_safe --skip-grant-tables --skip-networking & 接着使用SQL重置密码后,记得去掉skip-networking,以正常方式重启MySQL服务: shell> /etc/init.d/mysqld restart 上面的方法需要重启两次服务,实际上还能更优雅一点,重启一次即可: 首先需要把用到的SQL语句保存到一个文

Windows环境下重置mysql密码操作命令_Mysql

本地环境:Windows XP系统.xampp集成环境. xampp安装目录:d:/xampp 1.首先停止正在运行的MySQL进程 复制代码 代码如下: >net stop mysql 如未加载为服务,可直接在进程管理器或者服务中进行关闭. 2.以安全模式启动MySQL 进入mysql目录在命令行下运行 复制代码 代码如下: >d: >cd xampp/mysql/bin >mysqld.exe --skip-grant-tables 3.完成以后就可以不用密码进入MySQL了

mysql关闭skip-grant-tables快速重置mysql密码

首先,很荣幸你找到了这篇文章... 如果你忘记了mysql的密码不妨试试以下这个方法. 1.打开my.ini  代码如下 复制代码     [mysqld]     port=3306     #skip-grant-tables 在最后添加skip-grant-tables 2.重启mysql服务,进入控制台(bin目录直接点下mysql.exe最快了) 到了Enter Password: 直接回车进入 3.使用命令修改密码  代码如下 复制代码 use mysql; update user

CentOS下重置MySQL的root密码的教程_Mysql

本人在CentOS6.4上安装万mysql后,无法通过root进入,因为安装的时候,并没有设置root密码,似乎有个初始随机密码,但是不记得了,太麻烦,直接重置root密码. 首先,你必须要有操作系统的root权限了.要是连系统的root权限都没有的话,先考虑root系统再走下面的步骤. PS:赋予用于root权限 方法一: 修改 /etc/sudoers 文件,找到%wheel一行,把前面的注释(#)去掉 ## Allows people in group wheel to run all c

如何找回mysql密码(linux/windows)

Like *UNIX 版本: 下面是错误答案: 首先停止MySQL服务,然后使用skip-grant-tables参数启动它:  代码如下 复制代码 shell> /etc/init.d/mysql stop shell> mysqld_safe --skip-grant-tables &此时无需授权就可以进入到MySQL命令行,使用SQL重置MySQL密码:UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...'

Linux下快速重置MySQL用户(root)密码方法

方法一:最简单的方法,也是安装完MySQL后,系统提示的方法.使用mysqladmin来完成.shell> mysqladmin -u root password "newpwd" shell> mysqladmin -u root -h host_name password "newpwd"password后面的双引号不是必须的,不过如果密码包含空格或者一些特殊的符号,需要用引号.方法二:利用mysql里面的SET PASSWORD命令来完成,注意必须

ubuntu系统下mysql 密码重置问题

问题描述 ubuntu系统下mysql 密码重置问题 在执行mysql -uroot -p连接mysql时出现: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)可密码忘了 在ubuntu系统下重置mysql root用户的密码 解决方案 Ubuntu下重置MySQL的root密码

Mac 安装mysql密码重置问题

问题描述 Mac 安装mysql密码重置问题 第一次安装mysql,我的mac version:10.11.5.mysql版本:5.7.12. 在安装过程中生成了个临时密码,结果我没有记.在用Mysql Workbench登录时,用户名root,密码需要临时密码.导致登录不了mysql.于是我重新安装mysql,但是安装过程中不在反馈给我临时密码.我就参考了一些文档:比如重置root密码.但是在terminal里输入cd /user/local/mysql/bin/ 后显示-bash: cd: