|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
DBaaS解决方案可以降低首次投入成本,对于那些小企业来说,他们往往认为内部部署的数据库成本太高,DBaaS的成本和灵活性优势对小企业吸引力更大,他们是云数据库解决方案的重点客户群体。 拜见:http://forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol#Password_functions
我意译一下,大抵就是以下内容:
4.0版本之前
1、服务器发送随机字符串(scramble_buff)给客户端.
2、客户端把用户明文暗码加密一下,然后将hash加上服务器的随机字符串加密一下酿成新的scramble_buff。(拜见sql/password.c:scramble()).
3、客户端将加密后的scramble_buff值发给服务端.
4、服务器将mysql.user.Password的值加上原始随机字符串举行加密.
5、服务器比对加密后的hash值和服务端送过去的加密后的scramble_buff.
6、假如一样,则考证乐成.
基础就是一个应战机制。可是注重一点:本色上真正意义上的暗码是明文暗码的加密hash值;假如有人晓得了这个用户的mysql.user.Password(而不必晓得原始明文暗码)他就可以间接登录服务端.
4.1今后版本
4.1今后数据库保留的暗码是用SHA1加密的:SHA1(SHA1(password))
1、服务器发送随机字符串(scramble)给客户端.
2、客户端作以下盘算:
stage1_hash=SHA1(明文暗码).
token=SHA1(scramble+SHA1(stage1_hash))XORstage1_hash
3、客户端将token发送给服务端
4、服务端作以下盘算:
stage1_hash=tokenXORSHA1(scramble+mysql.user.Password)
5、服务端比对SHA1(stage1_hash)和mysql.user.Password,假如婚配,则认证准确。
注重:SHA1(A+B)意义是SHA1(A字符串联接B字符串).
此次没上一个版本的缺点了.有了mysql.user.Password和scramble也不克不及取得token。由于他没法取得stage1_hash。
可是假如此人有这用户的mysql.user.Password及收集上截取的一次完全考证数据,他也能依据此次截获的token和scramble反解出stage1_hash的值。而因为stage1_hash是稳定的,因而下次毗连,他猎取了新的scramble后,本人加密一下token,送给服务端也能经由过程考证而毗连到服务器.
最初放一个5.1的认证的抓包了局,注重标红的中央:
server>127.0.0.1.49130:Handshake
127.0.0.1.49130>server:Handshake(newauth)
- server>127.0.0.1.49130:Handshake<proto10ver5.1.41-3ubuntu12.6thd55scramble1EGu9Aq8_UnI_@L<*Y>127.0.0.1.49130>server:Handshake(newauth)<userrootdb(null)token6d2c7025c412b997788525b19a5167c89dafcbemaxpkt16777216>server>127.0.0.1.49130:OK<fields0affectedrows0insertid0warnings0>
复制代码 <Pstyle="TEXT-INDENT:2em">
不可否认,MySQL也是一个很好的关系型数据库,或许在技术上它与其他领先的关系数据库相差并不大,或不具有劣势。但是,对于一些企业环境来说,MySQL显然不具有优势。 |
|