• 售前

  • 售后

热门帖子
入门百科

MySQL 5.7忘记root暗码后修改的详细教程

[复制链接]
务川冷泉水鱼庄 显示全部楼层 发表于 2021-10-25 19:13:02 |阅读模式 打印 上一主题 下一主题
前言
一直以来,MySQL的应用和学习情况都是MySQL 5.6和之前的版本,也没有去关注新版本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服务
  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)在内里增长下面一段信息:
  1. [mysqld]
  2. skip-grant-tables
复制代码
然后启动MySQL,进入MySQL后,修改root暗码,操作过程中碰到
  1. ERROR 1054 (42S22): Unknown column 'password' in 'field list'
复制代码
,查了一下user表的表结构,发现原来MySQL 5.7下,user表已经没有Password字段。加密后的用户暗码存储于authentication_string字段。
详细操作过程如下所示:
  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. Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  8. Oracle is a registered trademark of Oracle Corporation and/or its
  9. affiliates. Other names may be trademarks of their respective
  10. owners.
  11. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  12. mysql> use mysql;
  13. Reading table information for completion of table and column names
  14. You can turn off this feature to get a quicker startup with -A
  15. Database changed
  16. mysql> update user set password=PASSWORD('Kd8k&dfdl023')
  17. -> where user='root';
  18. ERROR 1054 (42S22): Unknown column 'password' in 'field list'
  19. mysql> update mysql.user set authentication_string=password('Kd8k&dfdl023') where user='root';
  20. Query OK, 1 row affected, 1 warning (0.00 sec)
  21. Rows matched: 1 Changed: 1 Warnings: 1
  22. mysql> flush privileges;
  23. Query OK, 0 rows affected (0.00 sec)
  24. mysql> exit
复制代码

在my.cnf文件中,把刚才参加的那一行“skip-grant-tables”表明或删除掉。 然后重启MySQL服务后需要执行下令
  1. set password=password('newpassword');
复制代码
后,问题搞定。
  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. Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  9. Oracle is a registered trademark of Oracle Corporation and/or its
  10. affiliates. Other names may be trademarks of their respective
  11. owners.
  12. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  13. mysql> use mysql;
  14. ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
  15. mysql> set password=password('Kd8k&dfdl023');
  16. Query OK, 0 rows affected, 1 warning (0.00 sec)
复制代码
背面查询了一下相关资料,发现MySQL 5.7在安全方面有下一些新特性。
1. 用户表 mysql.user 的 plugin字段不答应为空, 默认值是 mysql_native_password,而不是 mysql_old_password,不再支持旧暗码格式;

2. 增长暗码逾期机制,逾期后需要修改暗码,否则大概会被禁用,大概进入沙箱模式; 是否启用暗码逾期由参数default_password_lifetime控制。
  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. mysql>
复制代码
3:增长了暗码安全品级以及暗码复杂度设置。参数如下:
  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 库;
  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. Initializing MySQL database: [ OK ]
  11. Installing validate password plugin: [ OK ]
  12. Starting mysqld: [ OK ]
  13. [root@mytestlnx02 mysql]#
  14. [root@mytestlnx02 mysql]# grep 'temporary password' /var/log/mysqld.log
  15. 2017-05-05T06:10:57.802143Z 1 [Note] A temporary password is generated for root@localhost: w99s(m-q_ML:
  16. mysql> select user ,host from user;
  17. +-----------+-----------+
  18. | user  | host  |
  19. +-----------+-----------+
  20. | mysql.sys | localhost |
  21. | root  | localhost |
  22. +-----------+-----------+
  23. 2 rows in set (0.00 sec)
复制代码
总结
以上就是这篇文章的全部内容了,渴望本文的内容对大家的学习大概工作能带来一定的资助,假如有疑问大家可以留言交换,谢谢大家对草根技术分享的支持。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作