扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章将为大家详细讲解有关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会监控到挂起,就重新加载配置文件,对线上业务是没有任务影响的,不会出现闪断之类的情况出现.
关于“mysql用户名root密码遗忘怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流