MySQL数据库的权限管理

来源:互联网 发布:dsdt editor mac 编辑:程序博客网 时间:2024/06/05 20:01

1.MySQL的权限管理是通过系统数据库mysql中的表来进行的,所以管理权限最直接的方法就是修改相应表的数据

columns_priv表:                                   在字段一级上实现权限管理。


用户User可以通过Host主机访问数据库DbTable name 表,对其中的Column name字段有Column_priv的访问权限。

每当用户执行操作时,就会比对此表,看用户是否有相应的权限。

db表:                                                  在数据库一级上实现表的管理

用户User在主机Host上对数据库Db有访问权限,下面的字段定义了都允许什么样的权限。

host表:                             在主机的级别上定义操作权限






主机Host有对数据库Db的如下访问权限。

tables_priv表:                                          在数据库一级上定义操作权限。


procs_priv表:                                     定义是否有存储过程的编写权限。


user表:                                                    用于对用户的权限管理


定义了用户User在主机Host的密码Password和允许的权限。

2.MySQL权限管理的执行流程。

当用户发起连接时,首先检查user表,判断主机,用户名,密码是否正确,不正确直接拒绝登陆,正确则成功登入数据库。
对于用户的操作请求,数据库系统依次检查表db---------host----------tables_priv-----------columns_priv所定义的权限,满足db则直接执行,不满足则检查host,    满足host则直接执行,不满足则继续检查tables_priv,依此类推。

3.MySQL用户管理

3.1 添加用户
使用MySQL命令:    create user fei identified by '120406191';
直接向user表中添加一条记录:insert into user(host,user,password) values('%','xiang',password('120406191'));  这种方法添加用户需要重启数据库,不建议采用,但这种方法更容易从原理上明白权限管理的实际意义。
3.2 删除用户
使用MySQL命令:  drop user fei;
直接删除user表的相关记录:delete from user where user='fei';

4.MySQL权限管理

4.1 权限关键字

all                                                                            除grant option的所有权限
select                                                                     查询记录权限
insert                                                                      插入记录权限
delete                                                                     删除记录权限
update     更新记录权限
create user 创建用户权限
create view 创建视图权限
create table  创建表权限
create temporary tables                                     创建临时表的权限
lock tables  锁定数据表的权限
drop 删除表权限
alter  修改数据表的权限
show view 查看视图的权限
show databases 查看数据表的权限
reload  重新装载授权表的权限
shutdown 重启数据库的权限
grant option  授予别的用户权限的权限
-----------------------------------------------------------------------------------------
process  线程管理权限
references 引用外键的权限
index  获得索引的权限
alter routine 更改或取消已存储的子程序的权限
super  获得超级用户的权限
execute 执行存储过程的权限
replication slave  复制主服务器的权限
replication client  复制从服务器的权限
file  允许用户select.....into outfile和       load  data infile
usage  无任何权限

4.2.权限管理


4.2.1 为新创建的用户分配全部权限


grant all privileges on *.* to 用户名@'%';

*.*的含义是在任意数据库的任意表,*代指所有,%代表任意主机,可以根据实际需要用具体的值代替,但是这样分配的权限不包括将自己获得的权限再分配给别人的权限,如果想要再获得授予别人,上面的语句应该改为;

grant all privileges on *.* to 用户名@'%'  with grant


还可以用grant创建新用户并授予权限:

grant all privileges on *.* to 用户名@‘%’  identified by 'password' with grant option;


限定字段的访问权限:

grant insert(columnname) on dbname.tablename to username@'hostname' identified by 'password' with grant option ;

表示用户usernamame 对 列 columnname 有insert权限

执行存储过程的权限:

grant execute on procedure dbname.tablename  to username@'%';

执行函数的权限:

grant execute on function dbname.tablename  to username@'%';

4.2.2查看权限


查看自己的权限:show grants;

查看其它用户的权限: show grants for username;

4.2.3 回收权限


revoke insert(olumnname) on dbname.tablename from username;

revoke insert on dbname.tablename from username;

revoke all privileges,grant option from username;

0 0
原创粉丝点击