MySQL5.7.12新密码登录方式及密码策略

在Centos6.6上安装MySQL5.7.12时,遇到了一个问题

安装后在/root目录下没有发现有.mysql_secret这个文件,所以没有没法按照官方文档上说的那样使用,这里记录下,

解决方式:

[root@test ~]# mysqld_safe --skip-grant-tables &] ~]# --19T12::.564385Z mysqld_safe Logging to --19T12::.589376Z mysqld_safe Starting mysqld daemon with databases from /var/lib/~]#  -ef |      : pts/    :: /bin/ /usr/bin/mysqld_safe --skip-grant-     : pts/    :: /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-=/usr/lib64/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysqld.log --pid-=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/[root@test ~]# mysql

成功登录MySQL后:

切换到mysql系统库:mysql> use mysql;修改root账户登录密码:mysql> update user set password=password('') where user='root';
ERROR 1054 (42S22): Unknown column 'password' in 'field list'---报错没有password这个数据字段列描述user表mysql> desc user;
...| authentication_string  | text                              | YES  |     | NULL                  |       || password_expired       | enum('N','Y')                     | NO   |     | N                     |       || password_last_changed  | timestamp                         | YES  |     | NULL                  |       || password_lifetime      | smallint(5) unsigned              | YES  |     | NULL                  |       || account_locked         | enum('N','Y')                     | NO   |     | N                     |       |+------------------------+-----------------------------------+------+-----+-----------------------+-------+---没发现password列,但是找到这5个跟密码相关的数据字段查询一下相关的密码信息:mysql> select user,host,authentication_string,password_expired from user;+-----------+-----------+-------------------------------------------+------------------+| user      | host      | authentication_string                     | password_expired |+-----------+-----------+-------------------------------------------+------------------+| root      | localhost | *9AA01F6E2A80A823ACB72CC07337E2911404B5B8 | Y                || mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | N                |+-----------+-----------+-------------------------------------------+------------------+---到这里不难发现root账户的密码已过期,还比5.6多出了一个mysql.sys用户修改密码mysql> update user set authentication_string=password('123abc') where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql> exit

密码修改成功,测试:

/etc/init.d/- is .-enterprise-commercial-mysql (HY000): You must reset your password using     root@ identified   (HY000): Your password does  satisfy the    @ identified   rows affected (             information_schema  mysql               performance_schema  sys                 rows   ( sec)

关于密码策略

mysql> SHOW VARIABLES LIKE 'validate_password%';+--------------------------------------+--------+| Variable_name                        | Value  |+--------------------------------------+--------+| validate_password_dictionary_file    |        || validate_password_length             | 8      || validate_password_mixed_case_count   | 1      || validate_password_number_count       | 1      || validate_password_policy             | MEDIUM || validate_password_special_char_count | 1      |+--------------------------------------+--------+6 rows in set (0.02 sec) mysql> show plugins;+----------------------------+----------+--------------------+----------------------+-------------+| Name                       | Status   | Type               | Library              | License     |+----------------------------+----------+--------------------+----------------------+-------------+| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL                 | PROPRIETARY |...| validate_password          | ACTIVE   | VALIDATE PASSWORD  | validate_password.so | PROPRIETARY |+----------------------------+----------+--------------------+----------------------+-------------+---可以通过在配置文件[mysqld]标签中添加 validate_passwor=off ,来关闭密码策略如下:
...| validate_password          | DISABLED | VALIDATE PASSWORD  | validate_password.so | PROPRIETARY |+----------------------------+----------+--------------------+----------------------+-------------+

总结

1) 安装好mysql后,第一次启动时,root管理密码会在/root/.mysql_secret中随机生成

2) 至5.7后,MySQL的 mysql.user 表中的密码字段由之前的 password 改为 authentication_string

3) 使用--skip-grant-tables 参数启动,跳过MySQL的授权验证,--skip-networking参数,跳过远程登录

4) 修改MySQL密码方式:

法1:update user set authentication_string=password('123abc') where user='root';

法2:set password=password('newpassword');

法3:alter user root@'localhost' identified by 'oracle';

法4:在shell下使用MySQL工具:mysqladmin -uroot -poldpassword pasword "newpassword"

5) 关于MySQL密码策略:

决定是否使用该插件(及强制/永久强制使用)

--validate-password=ON/OFF/FORCE/FORCE_PLUS_PERMANENT

validate_password_dictionary_file           > 插件用于验证密码强度的字典文件路径。

validate_password_length                        > 密码最小长度。

validate_password_mixed_case_count     > 密码至少要包含的小写字母个数和大写字母个数。

validate_password_number_count    > 密码至少要包含的数字个数。

validate_password_policy                         > 密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG

validate_password_special_char_count    > 密码至少要包含的特殊字符数。

其中关于validate_password_policy-密码强度检查等级:

0/LOW    > 只检查长度

1/MEDIUM      > 检查长度、数字、大小写、特殊字符

2/STRONG      > 检查长度、数字、大小写、特殊字符字典文件

后记

经过一段时间后,发现mysql初始密码原来被记录到了日志文件中

查找日志位置
[root@test /var/lib/mysql]#  -ef |         : pts/    :: /bin/ /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-=/var/run/mysqld/mysqld.pid --basedir=/usr --user=     : pts/    :: /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-=/usr/lib64/mysql/plugin --user=mysql --log-error=--pid-=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/     : pts/    ::  --/var/lib/mysql]#    /var/log/--17T16::.059632Z  [Note] A temporary password is generated  root@localhost:

原文路径:http://www.cnblogs.com/jonsea/p/5510219.html

转载于:https://blog.51cto.com/as007012/1862244

MySQL5.7.12新密码登录方式及密码策略相关推荐

  1. 腾讯云Windows/Linux服务器登录方式及密码获取方法

    腾讯云服务器操作系统不同登录方式也不同,Windows服务器只能是密码登录,Linux服务器可选密码登录也可以选择SSH密匙登录,腾讯云百科来详细说下腾讯云服务器登录方式及密码查看获取方法: 腾讯云服 ...

  2. SAP750版本设置免输密码登录方式

    采用复杂的密码策略,如: MIN_PASSWORD_DIFFERENCE=8 MIN_PASSWORD_DIGITS=1 MIN_PASSWORD_LENGTH=8 MIN_PASSWORD_LETT ...

  3. C语言实现可写入文件的账号密码登录系统,密码输入时掩盖,登录界面菜单选择,更改密码系统,课设必备。

    账号登录系统在很多系统设计时都时必不可少的,今天这个登录系统功能较全,可以注册,登录,找回密码,修改密码,以及在输入密码时会有*将密码掩盖,还有完善地登录选择界面,废话不多,上代码! 目录 1.头文件 ...

  4. mysql禁止空密码登录_PhpMyadmin空密码登录被禁止登录问题解决办法

    PhpMyadmin默认是不允许空密码登录了,这样如果是在服务器上使用它肯定是非常合理的,但是如果我们只是本地环境测试那么有时会觉得麻烦了,那么要如何解决这个问题呢?下面一聚教程小编给各位整理了解决办 ...

  5. mysql的免密码登录_mysql免密码登录(mysql跳过密码登录)

    mysql免密码登录(mysql跳过密码登录) 2020-05-15 13:07:13 共10个回答 1.用系统管理员登陆windows系统.2.停止MySQL的服务.3.运行cmd进入dos命令窗口 ...

  6. mysql 禁止空密码登录_phpMyAdmin空密码登录被禁止 (参见 允许空密码)

    目前在ubuntu下,需要一个方便点的mysql客户端,Mysql Workbench感觉不是特别方便,于是下载了phpMyAdmin(phpMyAdmin-4.7.9-all-languages.z ...

  7. mysql常见的跳过密码登录方式

    1.在my.cf文件[mysqld]添加如下行: skip-grant-tables 重启mysql: 以systemctl启动的直接:systemctl mysqld restart 以/opt/a ...

  8. vagrant开启Xshell使用密码登录方式

    1.登录vagrant 2.vi /etc/ssh/sshd_config 3.把PermitRootLogin yes前面的"#"去掉 4.把PasswordAuthentica ...

  9. python注册用户名和密码登录_Python_36用户名密码登录注册的例子

    def panduan (username,passwd):#验证用户米明码是否存在 with open('G:\liumang.txt','r+',encoding='utf-8')as f: fo ...

最新文章

  1. 广告片断大收集+穿帮镜头
  2. GPB编辑部招聘启事 2019 Impact Factor破7;CiteScore破10
  3. Python Day03
  4. el表达式 循环_EL表达式+JSTL+Ajax 047
  5. 山东建筑大学计算机期末试题,2018年山东建筑大学计算机科学与技术学院900计算机专业综合之计算机操作系统考研基础五套测试题...
  6. c#后的完整cookie
  7. 商标注册流程与注意事项
  8. Ubuntu下面安装MySQL shell
  9. PHP在线教育平台源码 网课小程序源码
  10. LaTex符号大全(LaTeX_Symbols)
  11. Live2d vue 插件 将live2d引入vue工程 在网页上添加live2d模型
  12. cups支持的打印机列表_更完整的CUPS打印机状态原因列表
  13. SEO优化外包 避坑指南
  14. 上周热点回顾(8.18-8.24)
  15. 《嵌入式-STM32开发指南》第三部分 外设篇 - 第4章 超声波测距
  16. STM32--vs1053 WAV录音实现(保存在SD卡)
  17. 用c语言解参数积分,C语言求定积分的通用函数
  18. 【Unity】Obi插件系列(三)—— Collisions
  19. 自己做的一个c#超大浮点数bigFloat
  20. 机器学习与R之朴素贝叶斯分类器

热门文章

  1. LIbGDX 示例Tests详解一:AccelerometerTest
  2. Windows Mobile 获取基站信息(LAC,CellID)
  3. Common FileUpload组件的简单使用
  4. Mybatis和Spring整合
  5. 实现和调用API接口
  6. 【CodeForces】960 F. Pathwalks 主席树+动态规划
  7. 使用MMC管理windows机器
  8. 关于for中思维卡机的小悲剧
  9. linux第一天的简单整理
  10. 使用eclipse集成开发环境开发第一个嵌入式Linux驱动