mysql用户名(root)密码遗忘修复(有黑科技)


mysql用户名(root)密码遗忘修复(有黑科技)

    讲到用户了,就先说说mysql的用户权限吧.5.7开始,有了很多改变:
 
   
    1.用户长度变了.5.7.8以后的用户长度为32个字符,5.7.8以前的用户长度为16个字符,5.6我记得好像是8? 忘了.咳咳
    2. mysql_native_password插件默认启用,且password以后将慢慢移除.在mysql.user里面password字段已经木有了,转而通过plugin字段的加密算法将密码加密后的字符存储在authentication_string字段;
    3.5.7.4以后用户的密码可以设置有效期,在有效期到了之后,会要求重新设置密码;
    4.5.7.6开始,create和alter user可以锁定用户,锁定后,用户将不能访问mysql.如:ALTER USER 'jeffrey'@'localhost' ACCOUNT LOCK;
    5.5.7.5开始,mysql提供了ssl和RSA通信证书, auto_generate_certs和sha256_password_auto_generate_rsa_keys参数控制,但必须在启动之前设置;
    6.5.7的初始化与之前的比也有了变化.删除匿名用户,初始化的时候只保留了root@'localhost'mysql.sys@'localhost'两个用户.且也没有了test这个库;
    7.5.7.8开始增加了一个super_read_only的参数, 目的是除了root用户的supper用户都设为只读;
    8.以前grant可以将没有的用户直接新增创建并赋权,在5.7默认模式(sql_mode)下,是不能通过grant来新增新用户,必须先create user之后在grant权限;
    
    
     参考官方手册:http://dev.mysql.com/doc/refman/5.7/en/security.html
    
    
     普通用户修改,就不细说了,登陆拥有super用户的直接如下语句修改:
     alter user user_name@'host' identified by 'password';
    
     主要说下root密码的修复,2种方法:
     1.常规方法:
       在启动的时候在my.cnf加上skip-grant-tables参数,或者启动选项--skip-grant-tables,然后进入mysql修改mysql密码,在重启mysql服务即可;网上这种帖子很多,不细说;
      
     2.黑科技(不停机修改):
       这种方法不推荐,但绝对好用,是跟某位大牛那学来的.
       mysql到目前5.7的mysql.user表都是myisam引擎(据说8.0以后就是innodb了).提到myisam引擎,大家都知道myisam的表的数据都是放在.MYD里面的.所以,黑科技来啦;
       1.进入data/mysql目录,复制user表的3个文件到另外的库,cp -a user* ../databasename1/
       2.需要有操作databasename1库中表权限的用户,连上databasename1库,直接更改root用户密码为空:update user set entication_string='' where user='root';  最后检查一下select user,host,entication_string from databasename1 where user='root';
       3.在将databasename1目录的user的3个文件覆盖原mysql库下面的文件. cp -a data/databasename1/user* data/mysql/
       4.这个时候还不能直接登录,因为修改用户密码后,需要flush privileges讲新密码刷进内存.我们已经没有super用户来flush了,而且也不能停机,这可怎么办??? 大招来了,kill -HUP pid,在操作系统执行该命令,注意pid是mysql的pid不是ppid,别把父进程给挂起了.具体HUP的功能,百度吧.不细说.
       到这就大功告成了,这个时候就可以用root以无密码状态登陆,在进去修改root的密码.ok.收工!
       这个方法的知识点:首先myisam是的数据是存储在文件里面的,而且是可以通过复制直接将表结构,数据,索引都copy利用,所以这也是一个安全隐患点,mysql目录的权限一定得控制好啊.其次就是kill -HUP pid 发起一个挂起信号,然后mysqld_safe会监控到挂起,就重新加载配置文件,对线上业务是没有任务影响的,不会出现闪断之类的情况出现. 
    
    
    
    
    
    
    

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20892230/viewspace-2127454/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20892230/viewspace-2127454/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值