Home >Database >Mysql Tutorial >Mysql权限系统工作原理_MySQL

Mysql权限系统工作原理_MySQL

WBOY
WBOYOriginal
2016-06-01 13:55:291064browse

MySQL权限系统保证所有的用户可以严格地做他们假定被允许做的事情。当你连接一个MySQL服务器时, 你的身份由你从那连接的主机和你指定的用户名来决定,系统根据你的身份和你想做什么来授予权限。

MySQL在认定身份中考虑你的主机名和用户名字,是因为有很小的原因假定一个给定的用户在因特网上属于同一个人。例如,用户从whitehouse.gov连接的bill不必和从mosoft.com连接bill是同一个人。 MySQL通过允许你区分在不同的主机上碰巧有同样名字用户来处理它:你可以对从whitehouse.gov连接授与bill一个权限集,而为从microsoft.com的连接授予一个不同的权限集。

MySQL存取控制包含2个阶段:

阶段1:服务器检查你是否允许连接。

阶段2:假定你能连接,服务器检查你发出的每个请求。看你是否有足够的权限实施它。例如,如果你从数据库中一个表精选(select)行或从数据库抛弃一个表,服务器确定你对表有select权限或对数据库有drop权限。

服务器在存取控制的两个阶段使用在mysql的数据库中的user、db和host表,在这些授权表中字段如下:

表名称  user  db  host 
范围字段  Host  Host  Host 
User  Db  Db 
Password  User  
权限字段  Select_priv  Select_priv  Select_priv 
Insert_priv  Insert_priv  Insert_priv 
Update_priv  Update_priv  Update_priv 
Delete_priv  Delete_priv  Delete_priv 
Index_priv  Index_priv  Index_priv 
Alter_priv  Alter_priv  Alter_priv 
Create_priv  Create_priv  Create_priv 
Drop_priv  Drop_priv  Drop_priv 
Grant_priv  Grant_priv  Grant_priv 
Reload_priv   
Shutdown_priv   
Process_priv   
File_priv   

对存取控制的第二阶段(请求证实),如果请求涉及表,服务器可以另外参考tables_priv和columns_priv表。这些表的字段如下:

表名称 tables_priv  columns_priv 
范围字段  Host  Host 
Db  Db 
User  User 
Table_name  Table_name 
  Column_name 
权限字段  Table_priv  Column_priv 
Column_priv  
其他字段  Timestamp  Timestamp 
Grantor  

每个授权表包含范围字段和权限字段。

范围字段决定表中每个条目的范围,即,条目适用的上下文。例如, 一个user表条目的Host和User值为''thomas.loc.gov''和''bob''将被用于证实来自主机thomas.loc.gov的bob对服务器的连接。同样,一个db表条目的Host、User和Db字段的值是''thomas.loc.gov''、''bob''和''reports''将用在bob从主机联接thomas.loc.gov存取reports数据库的时候。 tables_priv和columns_priv表包含范围字段,指出每个条目适用的表或表/列的组合。

对于检查存取的用途,比较Host值是忽略大小写的。User、Password、Db和Table_name值是区分大小写的。Column_name值在MySQL3.22.12或以后版本是忽略大小写的。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn