授权机制的基本作用是给某个主机上的用户对某个数据库以select,insert,update和detete的权限。而其额外的功能还包括是否允许匿名使用数据库,使用MysQL的一些特定函数,如:LOAD DATA INFILE之类。在这里请注意,MySQL中的用户名和Unix系统中的用户名并没有什么关系。虽然许多客户端程序允许你可以用当前的用户名进行登录,但是最标准的做法还是通过--user的选项。
2、授权机制是如何进行运作的?
在MySQL中主机和用户的联合视为唯一标志。比如说,在主机1和主机2上的用户lee实际上是不同的,他们对MySQL的使用权限也可以是有差别的。而整个授权机制的核心问题就是要解决授予从某个主机上登录的某个用户对某个数据库的使用权限。你可以通过脚本mysqlaccess测试一个主机上用户的对数据库操作的权限。而所有的授权信息都被存储在数据库mysql的user、host和db表中。我们可以通过mysql mysql的指令连接到这个数据库中,并且通过select * from user(或者db,host)显示每个数据表中的内容。user表中所授予的权限是整个授权机制的基本授权,也就是说,user中的定义对于任何一个用户 主机来说都是适用的,除非在db表中另外有所定义,因此,对于用户来说最好是就某个数据库为基础进行授权。而host表的主要目的是维护一个“安全”服务器的列表。而在具体考虑某个用户/主机对某个数据库的权限的的时候,我们还需要研究一下授权机制的的匹配搜索机制:
shell> mysql mysql. mysql> insert into user (host,user,password) values('localhost','custom',password('stupid')); mysql> insert into user (host,user,password) values('server.domain','custom',password('stupid')); mysql> insert into user (host,user,password) values('whitehouse.gov','custom',password('stupid'));
mysql> insert into db (host,db,user,Select_priv,Insert_priv,Update_priv,Delete_priv, Create_priv,Drop_priv) values ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y'); mysql> insert into db (host,db,user,Select_priv,Insert_priv,Update_priv,Delete_priv, Create_priv,Drop_priv) values ('%','customers','custom','Y','Y','Y','Y','Y','Y');
3、授权数据表
授权数据表对表的行操作包括select,insert,update和delete,对表和数据库的操作包括create和drop。其它的授权还包括如LOAD DATA INFILE和SELECT INTO OUTFILE和管理命令:shutdown, reload, refresh 和process.三个授权数据表的结构如下所示: user表 字段 类型 健 默认值 Host char(60) PRI "" User char(16) PRI "" Password char(16) - "" Select_priv enum('N','Y') - N Insert_priv enum('N','Y') - N Update_priv enum('N','Y') - N Delete_priv enum('N','Y') - N Create_priv enum('N','Y') - N Drop_priv enum('N','Y') - N Reload_priv enum('N','Y') - N Shutdown_priv enum('N','Y') - N Process_priv enum('N','Y') - N File_priv enum('N','Y') - N
db表 字段 类型 健 默认值 Host char(60) PRI "" Db char(64) PRI "" User char(16) PRI "" Select_priv enum('N','Y') - N Insert_priv enum('N','Y') - N Update_priv enum('N','Y') - N Delete_priv enum('N','Y') - N Create_priv enum('N','Y') - N Drop_priv enum('N','Y') - N
host 表只有在db的数据项中出现host为空的情况下使用。 字段 类型 健 默认值 Host char(60) PRI "" Db char(64) PRI "" Select_priv enum('N','Y') - N Insert_priv enum('N','Y') - N Update_priv enum('N','Y') - N Delete_priv enum('N','Y') - N Create_priv enum('N','Y') - N Drop_priv enum('N','Y') - N