MySQL访问权限系统

来源:互联网 发布:java 启动参数 编辑:程序博客网 时间:2024/06/06 04:25

MySQL权限系统的主要功能是验证从给定主机连接的用户,并将该用户与数据库上的权限(如select, insert, update和delete)相关联。附加功能包括维护匿名用户,授予MySQL特定功能(如load data infile)和管理性操作的权限。


MySQL权限系统具有如下限制:

● 不具备用户黑名单功能

不能显式指定拒绝访问的用户列表。也就是说,你不能显式指定一个用户,让MySQL拒绝其连接;


● 建表删表和建库删库的权限紧密相连不可分割

即有权限建表删表就有权限建库删库,有建库删库的权限就有建表删表的权限。也就是说,你不能为用户指定权限,使其可以在数据库中建表删表,但又不能创建或者删除数据库本身;


● 密码只能在全局范围内作用于一个账号

即你不能为特定对象,如数据库,表或例程,赋予密码;


MySQL权限系统的用户接口由SQL语句组成,如create user, grant和revoke


在内部,MySQL将权限信息存储在「mysql」数据库的权限表中。MySQL服务器在启动时将这些权限表的内容读入内存,并基于这些内存副本进行访问控制决策


MySQL权限系统确保所有用户只能执行自各自允许的操作。作为一个用户,当你连接到MySQL服务器时,你的身份由你连接的主机和你指定的用户名决定。当你在连接完成后发出请求时,系统将根据你的身份和你想要执行的操作来赋予权限


MySQL使用主机名和用户名来识别你的身份,因为没有理由相信来自不同主机的相同用户属于同一个人,例如从office.example.com连接的用户joe与从home.example.com连接的用户joe可能不是一个人。MySQL通过对来自不同主机的相同用户进行区分来解决这个问题:你可以对从office.example.com连接的用户joe赋予一组权限,而对从home.example.com连接的用户joe赋予另一组权限。


要查看给定账号的权限,请使用「show grants」语句,例如:



MySQL访问控制包括两个阶段:

① 服务器根据你的身份以及你所提供的密码正确与否,接受或拒绝连接;

② 连接成功后,服务器将检查你所发出的每个语句,以确定你是否有足够的权限执行它。例如,如果你尝试从表中检索行或者从数据库中删除表,则服务器将验证你是否拥有表的select权限或数据库的drop权限;