MySQL数据库的权限管理
来源:互联网 发布:dsdt editor mac 编辑:程序博客网 时间:2024/06/05 20:01
1.MySQL的权限管理是通过系统数据库mysql中的表来进行的,所以管理权限最直接的方法就是修改相应表的数据
columns_priv表: 在字段一级上实现权限管理。
用户User可以通过Host主机访问数据库Db的Table 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
- MySQL数据库的权限管理
- mysql数据库权限管理
- MySQL 数据库权限简单管理
- mysql的权限管理
- mysql的权限管理
- MYSQL数据库管理之权限管理
- MYSQL数据库管理之权限管理
- MYSQL数据库管理之权限管理
- MYSQL数据库管理之权限管理
- MYSQL数据库管理之权限管理
- MYSQL数据库管理之权限管理
- MYSQL数据库管理之权限管理
- MYSQL数据库管理之权限管理
- MYSQL数据库管理之权限管理
- MYSQL数据库管理之权限管理
- MYSQL数据库管理之权限管理
- MYSQL数据库管理之权限管理
- mysql管理数据库用户和访问权限
- 存储过程的输出是游标(列表)
- 第五讲Matlab 计算结果的可视化
- Git学习系列(二)——git的基本命令
- 很好的一本javascript | 《悟透javascript》
- [转]VS编程中找不到Microsoft.Office.Core、Microsoft.Office.Interop.Excel、VBIDE
- MySQL数据库的权限管理
- JQGrid的用法解析(列编辑,添加行,删除行)
- 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
- XP停摆让中国2亿PC“裸奔”
- 广告:飞机突降四川北川马路上:“空中悍马”试飞
- IOS开发判断在字符串中是否包含相应的字符
- TeamViewer(TV)锁屏后黑屏无法远程的解决方法
- C语言每日小练(一)——3n+1问题
- 鼠标悬浮注释