MySql忘记密码的处理办法

本文章为本人整理的网上主流解决办法,如有雷同,不胜荣幸

方法一;众所周知的skip-grant-tables

首先,如果你用的是MySql5.6版本,则用下面的方法会成功,但是如果是高版本的请用另一种方法,因为在高版本的MySql中移除了一些函数,会使下面的方法失效:

下面的第四步可以代替为修改配置文件的内容

今天重新装了一遍MySQL,因为用的是免安装的,所以需要重新设置密码,然后我一通瞎几把设,结果搞得自己也忘了,没办法,只能重新搞一下,这是网上的方法。亲测可用!

  此处我用的是Mysql5.6写的方法,更高版本的MySQL用这个方法可能会有问题!!!

一.windows下

  1.以系统管理员身份运行cmd.

  2.查看mysql是否已经启动,如果已经启动,就停止:net stop mysql.

  3.切换到MySQL安装路径下:D:\WAMP\MySQL-5.6.36\bin;如果已经配了环境变量,可以不用切换了。

  4.在命令行输入:mysqld -nt --skip-grant-tables

  5.以管理员身份重新启动一个cmd命令窗口,输入:mysql -uroot -p,Enter进入数据库。

  6.如果不想改密码,只是想看原来的密码的话,可以在命令行执行这个语句
	
        select host,user,password from mysql.user;//即可查看到用户和密码

   7.如果要修改密码的话,在命令行下 依次 执行下面的语句
	
use mysql
update user set password=password("new_pass") where user="root";// 'new_pass' 这里改为你要设置的密码
flush privileges;
exit

   8.重新启动MYSQL,输入密码登录即可!

方法二:5.7  5.8版本用alert

与上面不同的是,其会先通过flush privileges操作触发权限表的加载,再使用alter user语句修改root用户的密码,如:
复制代码

# bin/mysql -S /usr/local/mysql57/data/mysql.sock

mysql> alter user 'root'@'localhost' identified by '123';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

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

mysql> alter user 'root'@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)

复制代码
免密码登录进来后,直接执行alter user操作是不行的,因为此时的权限表还没加载。可先通过flush privileges操作触发权限表的加载,再执行alter user操作。

需要注意的是,通过alter user修改密码只适用于MySQL5.7和8.0,如果是MySQL 5.6,此处可写成

update mysql.user set password=password('123456') where host='localhost' and user='root';

最后重启实例

mysql> shutdown;

# bin/mysqld_safe --defaults-file=my.cnf &

需要注意的是,如果在启动的过程中没有指定--skip-networking参数,无需重启实例。但在网上看到的绝大多数方案,都是没有指定该参数,但重启了实例,实在没有必要。

下面对这个方案做个总结:

1. 如果只添加了--skip-grant-tables,修改完密码后,其实无需重启,执行flush privileges即可。

2. 从安全角度出发,建议加上--skip-networking。但因其是静态参数,将其剔除掉需要重启实例。

3. 加上--skip-networking,虽然可以屏蔽掉TCP连接,但对于本地其它用户,只要有socket文件的可读权限,都能无密码登录。还是存在安全隐患。

4. 不建议通过update的方式修改密码,更通用的其实是alter user。

三更优雅的解法

相对于skip-grant-tables方案,我们来看看另外一种更优雅的解法,其只会重启一次,且基本上不存在安全隐患。

首先,依旧是关闭实例

其次,创建一个sql文件

写上密码修改语句

# vim init.sql 
alter user 'root'@'localhost' identified by '123456';

最后,使用--init-file参数,启动实例

# bin/mysqld_safe --defaults-file=my.cnf --init-file=/usr/local/mysql57/init.sql &

实例启动成功后,密码即修改完毕~

如果mysql实例是通过服务脚本来管理的,除了创建sql文件,整个操作可简化为一步。

# service mysqld restart --init-file=/usr/local/mysql57/init.sql 

注意:该操作只适用于/etc/init.d/mysqld这种服务管理方式,不适用于RHEL 7新推出的systemd。

 

Outlook是微软的非常好用的电子邮箱客户端,但是即使是到了2016版本,该客户端还是有两个比较人性化的问题,其一是能开机自启动;其二是点击关闭按钮的时候会直接完全退出而是后台运行,其实非常符合我们的使用情况和理念——我们是需要Outlook一直挂在后台以方便第一时间接收到新的邮件的。今天笔者就在这里向大家介绍一下解决的方法。 首先是如何让Outlook程序自启动。 这个问题我们采用Windows系统最最最传统和古老的方式来解决,复制一个Outlook的快捷方式丢到Windows系统开始菜单的启动文件夹里面即可。但是具体的操作根据Win 7和Win 8/10而有所区别。 Win 7的话首先在开始菜单里面找到Outlook的快捷方式,然后先复制一份到桌面(方便下一步操作)。然后再在开始菜单中找到“启动”文件夹,把刚刚复制的Outlook的快捷方式放进去即可。 Win 8/10会稍微复杂一些,首先也是复制一份Outlook的快捷方式,然后打开此电脑,按照下图的方式显示隐藏的文件夹,依次打开系统盘→用户→你当前登录账户的用户名→AppData→Roaming→Microsoft→Windows→开始菜单→程序→启动。将Outlook的快捷方式复制到文件夹内即可。 然后是比较让人头疼的问题,就是如何保持Outlook后台运行。 这个问题有两个层次的解决方案,首先是管得住自己的手(qi lin bi)的方案。 这个只需要在打开了Outlook的情况下,右键任务栏的图标勾选最小化时隐藏,然后要关闭的时候都点最小化就可以保证Outlook一直在后台运行了。 当然我知道其实你们是管住自己的手的,总是会习惯点“X”(单身了XX年的手速确实可怕)。过也无伤大雅,ReliefJet Quicks™ for Microsoft Outlook插件可以解决这个问题。 首先在http://www.reliefjet.com/Quicks/Features/QuickTweaks下载这个插件,然后关闭Outlook进行安装(笔者清楚未关闭Outlook是否会影响安装,但是为了避免未知错误还是请先关闭Outlook)。安装完成后打开Outlook,可以看见多了一个选项卡,如下图。 然后点击选项卡中的Quicks Options,按照下图找到选项勾选即可,这样Outlook窗口的关闭按钮的功能就变成了最小化。以后需要完全退出的时候右键Outlook的任务栏图标退出即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值