我们在访问一个网页时,只需要点击链接就可以轻松浏览,当然这只是访问在用户界面的一个展现。我们学习python的时候,更多的倾向于内部的搭建和原理的理解。有没有小伙伴对mysql的访问产生兴趣呢?这里的访问跟我们之前提到的浏览界面访问有所不同,接下来就数据库mysql的访问控制和其中的两个阶段一起进行深入探索。
MySQL访问控制分为两个阶段:
用户连接检查阶段
执行SQL语句时检查阶段
1、用户连接时的检查
1)当用户连接时,MySQL服务器首先从user表里匹配host, user, password,匹配不到则拒绝该连接2)接着检查user表的max_connections和max_user_connections,如果超过上限则拒绝连接3)检查user表的SSL安全连接,如果有配置SSL,则需确认用户提供的证书是否合法只有上面3个检查都通过后,服务器才建立连接,连接建立后,当用户执行SQL语句时,需要做SQL语句执行检查。
2、执行SQL语句时的检查
1)从user表里检查max_questions和max_updates,如果超过上限则拒绝执行SQL下面几步是进行权限检查:2)首先检查user表,看是否具有相应的全局性权限,如果有,则执行,没有则继续下一步检查3)接着到db表,看是否具有数据库级别的权限,如果有,则执行,没有则继续下一步检查4)最后到tables_priv, columns_priv, procs_priv表里查看是否具有相应对象的权限从以上的过程我们可以知道,MySQL检查权限是一个比较复杂的过程,所以为了提高性能,MySQL的启动时就会把这5张权限表加载到内存。
关于mysql的一些补充:
在windows中MySql以服务形式存在,在使用前应确保此服务已经启动,未启动可用net start mysql命令启动。
而Linux中启动时可用"/etc/rc.d/init.d/mysqld start”命令,注意启动者应具有管理员权限。
MySql默认包含一个含空密码的root帐户和一个匿名帐户,应把匿名帐户删除、 root帐户设置密码。
以上就是关于mysql访问控制两个阶段的介绍,本篇不涉及代码的运行,只要理解的基础的mysql访问控制原理就好了,没看明白的小伙伴们可以多研究一下。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试