设为首页 加入收藏

TOP

MySQL5.6的密码存放方式基础知识
2017-04-21 10:22:59 】 浏览:6795
Tags:MySQL5.6 密码 存放 方式 基础知识

环境:


MySQL 5.6社区版


wKioL1jzAKXwopJiAAAewk9cLng337.png


selectuser,host,password from mysql.user where user = 'rpl';


+------+------+-------------------------------------------+


| user | host |password                                 |


+------+------+-------------------------------------------+


| rpl  | %   | *624459C87E534A126498ADE1B12E0C66EDA035A3|


+------+------+-------------------------------------------+


查阅文档发现MySQL的密码加密算法如下:


MySQL实际上是使用了两次SHA1夹杂一次unhex的方式对用户密码进行了加密。


具体的算法可以用公式表示:password_str= concat('*', sha1(unhex(sha1(password))))


实验验证:


select password('rpl'),concat('*',sha1(unhex(sha1('rpl'))));


wKioL1jzAL_hQkIsAAAj3RlCFQ4640.png


可以看到二者计算出的密码是一致的。


MySQL5.6密码的安全性


实验发现在5.6.34上面,执行create user abc@'%' identified by 'Abcd@1234'; 这种语句在binlog里面不会显示明文密码的。


wKioL1jzANeTbzruAAAsEMKTvBo704.png


官方说明中,如下的几种那个授权策略都不会记录下明文密码了。


CREATE USER …IDENTIFIED BY …


GRANT … IDENTIFIED BY…


SET PASSWORD …


SLAVE START …PASSWORD = … (as of 5.6.4)


CREATE SERVER …OPTIONS(… PASSWORD …) (as of 5.6.9)


ALTER SERVER …OPTIONS(… PASSWORD …) (as of 5.6.9)


但是,如果留心的话,会发现在配置主从环境时候,从节点执行类似下面:


CHANGE MASTER TO


MASTER_HOST='192.168.2.11', 


MASTER_USER='rpl',


MASTER_PASSWORD='rpl',


MASTER_PORT=3306,


MASTER_LOG_FILE='mysql-bin.000012',


MASTER_LOG_POS=500,


时候会有warning提示。


这是因为 change master to 这个操作还是记录的明文密码的。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇CentOS 6.5 i386 安装MySQL 5.7.1.. 下一篇MySQL同实例下复制表的2种方法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目