加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL 5.7忘记root密码如何修改?Mysql应用

发布时间:2020-12-12 00:49:45 所属栏目:MySql教程 来源:网络整理
导读:《MySQL 5.7忘记root密码如何修改?Mysql应用》要点: 本文介绍了MySQL 5.7忘记root密码如何修改?Mysql应用,希望对您有用。如果有疑问,可以联系我们。 导读:一直以来,MySQL的应用和学习环境都是MySQL 5.6和之前的版本,也没有去关注新版本MySQL 5.7的变化和

《MySQL 5.7忘记root密码如何修改?Mysql应用》要点:
本文介绍了MySQL 5.7忘记root密码如何修改?Mysql应用,希望对您有用。如果有疑问,可以联系我们。

导读:一直以来,MySQL的应用和学习环境都是MySQL 5.6和之前的版本,也没有去关注新版本MySQL 5.7的变化和新特性.今天帮人处理忘记root密码的... 一直以来,也没有去关注新版本MySQL 5.7的变化和新特性.今天帮人处理忘记root密码的时时候,发现以前的方法不奏效了.具体情况如下所示:



案例环境如下:

??????? 操作系统 : Red Hat Enterprise Linux Server release 6.6 (Santiago)

??????? 数据库版本: 5.7.18 MySQL Community Server (GPL)



忘记密码,输入错误的密码时遇到下面错误信息:

  1. [root@mytestlnx02?~]#?mysql?-u?root?-p?
  2. Enter?password:??
  3. ERROR?1045?(28000):?Access?denied?for?user?'root'@'localhost'?(using?password:?YES)?
  4. [root@mytestlnx02?~]#?

检查MySQL服务是否启动,如果启动,关闭MySQL服务

?MYSQL数据库

  1. [root@mytestlnx02?~]#?ps?-ef?|?grep?-i?mysql?
  2. root?????22972?????1??0?14:18?pts/0????00:00:00?/bin/sh?/usr/bin/mysqld_safe?--datadir=/var/lib/mysql?--socket=/var/lib/mysql/mysql.sock?--pid-file=/var/run/mysqld/mysqld.pid?--basedir=/usr?--user=mysql?
  3. mysql????23166?22972??0?14:18?pts/0????00:00:00?/usr/sbin/mysqld?--basedir=/usr?--datadir=/var/lib/mysql?--plugin-dir=/usr/lib/mysql/plugin?--user=mysql?--log-error=/var/log/mysqld.log?--pid-file=/var/run/mysqld/mysqld.pid?--socket=/var/lib/mysql/mysql.sock?
  4. root?????23237?21825??0?14:22?pts/0????00:00:00?grep?-i?mysql?
  5. [root@mytestlnx02?~]#?service?mysqld?stop?
  6. Stopping?mysqld:??[??OK??]?
  7. [root@mytestlnx02?~]#??

找到MySQL的my.cnf配置文件,在/etc/my.cnf (有些版本是/etc/mysql/my.cnf)在里面增加下面一段信息:

[mysqld]

skip-grant-tables

然后启动MySQL,进入MySQL后,修改root密码,操作过程中遇到ERROR 1054 (42S22): Unknown column 'password' in 'field list',查了一下user表的表结构,发现原来MySQL 5.7下,user表已经没有Password字段.加密后的用户密码存储于authentication_string字段.具体操作过程如下所示:
?MYSQL数据库

  1. [root@mytestlnx02?~]#?service?mysqld?start?
  2. Starting?mysqld:??[??OK??]?
  3. [root@mytestlnx02?~]#?mysql?-u?root??
  4. Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?g.?
  5. Your?MySQL?connection?id?is?4?
  6. Server?version:?5.7.18?MySQL?Community?Server?(GPL)?
  7. ??
  8. Copyright?(c)?2000,?2017,?Oracle?and/or?its?affiliates.?All?rights?reserved.?
  9. ??
  10. Oracle?is?a?registered?trademark?of?Oracle?Corporation?and/or?its?
  11. affiliates.?Other?names?may?be?trademarks?of?their?respective?
  12. owners.?
  13. ??
  14. Type?'help;'?or?'h'?for?help.?Type?'c'?to?clear?the?current?input?statement.?
  15. ??
  16. mysql>?use?mysql;?
  17. Reading?table?information?for?completion?of?table?and?column?names?
  18. You?can?turn?off?this?feature?to?get?a?quicker?startup?with?-A?
  19. ??
  20. Database?changed?
  21. mysql>?update?user?set?password=PASSWORD('Kd8k&dfdl023')?
  22. ????->?where?user='root';?
  23. ERROR?1054?(42S22):?Unknown?column?'password'?in?'field?list'?
  24. mysql>?update?mysql.user?set?authentication_string=password('Kd8k&dfdl023')?where?user='root';?
  25. Query?OK,?1?row?affected,?1?warning?(0.00?sec)?
  26. Rows?matched:?1??Changed:?1??Warnings:?1?
  27. ??
  28. mysql>?flush?privileges;?
  29. Query?OK,?0?rows?affected?(0.00?sec)?
  30. ??
  31. mysql>?exit?

MySQL 5.7忘记root密码如何修改?



在my.cnf文件中,把刚才加入的那一行“skip-grant-tables”注释或删除掉. 然后重启MySQL服务后需要执行命令set password=password('newpassword');后,问题搞定.
?MYSQL数据库

  1. [root@mytestlnx02?~]#?service?mysqld?start?
  2. Starting?mysqld:??[??OK??]?
  3. [root@mytestlnx02?~]#?mysql?-u?root?-p?
  4. Enter?password:??
  5. Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?g.?
  6. Your?MySQL?connection?id?is?4?
  7. Server?version:?5.7.18?
  8. ??
  9. Copyright?(c)?2000,?Oracle?and/or?its?affiliates.?All?rights?reserved.?
  10. ??
  11. Oracle?is?a?registered?trademark?of?Oracle?Corporation?and/or?its?
  12. affiliates.?Other?names?may?be?trademarks?of?their?respective?
  13. owners.?
  14. ??
  15. Type?'help;'?or?'h'?for?help.?Type?'c'?to?clear?the?current?input?statement.?
  16. ??
  17. mysql>?use?mysql;?
  18. ERROR?1820?(HY000):?You?must?reset?your?password?using?ALTER?USER?statement?before?executing?this?statement.?
  19. mysql>?set?password=password('Kd8k&dfdl023');?
  20. Query?OK,?0?rows?affected,?1?warning?(0.00?sec)?

后面查询了一下相关资料,发现MySQL 5.7在安全方面有下一些新特性(参考MySQL 5.7版本新特性连载(三))



1. 用户表 mysql.user 的 plugin字段不允许为空,默认值是 mysql_native_password,而不是 mysql_old_password,不再支持旧密码格式;

MySQL 5.7忘记root密码如何修改?



2. 增加密码过期机制,过期后需要修改密码,否则可能会被禁用,或者进入沙箱模式; 是否启用密码过期由参数default_password_lifetime控制.
?MYSQL数据库

  1. mysql>?show?variables?like?'default_password_lifetime';?
  2. +---------------------------+-------+?
  3. |?Variable_name?????????????|?Value?|?
  4. +---------------------------+-------+?
  5. |?default_password_lifetime?|?0?????|?
  6. +---------------------------+-------+?
  7. 1?row?in?set?(0.00?sec)?
  8. ??
  9. mysql>?

3:增加了密码安全等级以及密码复杂度设置.参数如下:
?MYSQL数据库

  1. mysql>?show?variables?like?'validate_password%';?
  2. +--------------------------------------+--------+?
  3. |?Variable_name????????????????????????|?Value??|?
  4. +--------------------------------------+--------+?
  5. |?validate_password_check_user_name????|?OFF????|?
  6. |?validate_password_dictionary_file????|????????|?
  7. |?validate_password_length?????????????|?8??????|?
  8. |?validate_password_mixed_case_count???|?1??????|?
  9. |?validate_password_number_count???????|?1??????|?
  10. |?validate_password_policy?????????????|?MEDIUM?|?
  11. |?validate_password_special_char_count?|?1??????|?
  12. +--------------------------------------+--------+?
  13. 7?rows?in?set?(0.00?sec)?

4. 使用 mysql_install_db 初始化时,默认会自动生成随机密码,随机密码放在/var/log/mysqld.log中,并且不创建除 root@localhost和mysql.sys@localhost 外的其他账号,也不创建 test 库;
?MYSQL数据库

  1. [root@mytestlnx02?mysql]#?yum?localinstall?mysql-community-{server,client,common,libs}-*??
  2. [root@mytestlnx02?mysql]#?rpm?-qa?|?grep?-i?mysql?
  3. mysql-community-client-5.7.18-1.el6.i686?
  4. mysql-community-libs-5.7.18-1.el6.i686?
  5. perl-DBD-MySQL-4.013-3.el6.x86_64?
  6. mysql-community-server-5.7.18-1.el6.i686?
  7. mysql-community-common-5.7.18-1.el6.i686?
  8. mysql-community-libs-compat-5.7.18-1.el6.i686?
  9. [root@mytestlnx02?mysql]#?service?mysqld?start?
  10. ??
  11. Initializing?MySQL?database:??[??OK??]?
  12. Installing?validate?password?plugin:??[??OK??]?
  13. Starting?mysqld:??[??OK??]?
  14. [root@mytestlnx02?mysql]#??
  15. [root@mytestlnx02?mysql]#?grep?'temporary?password'?/var/log/mysqld.log?
  16. 2017-05-05T06:10:57.802143Z?1?[Note]?A?temporary?password?is?generated?for?root@localhost:?w99s(m-q_ML:?
  17. ??
  18. mysql>?select?user?,host?from?user;?
  19. +-----------+-----------+?
  20. |?user??????|?host??????|?
  21. +-----------+-----------+?
  22. |?mysql.sys?|?localhost?|?
  23. |?root??????|?localhost?|?
  24. +-----------+-----------+?
  25. 2?rows?in?set?(0.00?sec)?

?MYSQL数据库

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读