mysql用户名root密码遗忘怎么办

61次阅读
没有评论

共计 2012 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 mysql 用户名 root 密码遗忘怎么办,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

  讲到用户了, 就先说说 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 密码遗忘怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-26发表,共计2012字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)