数据库授权(怎样通过在数据库中的表来定义权限和授权)
大家好,今天给各位分享数据库授权的一些知识,其中也会对怎样通过在数据库中的表来定义权限和授权进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
数据库的唯一权限是什么
数据库的权限是指允许特定用户访问特定数据库或数据库表的授权。按照降序范围,数据库的权限主要有三种类型:数据库、系统和对象。
1.数据库权限:
执行特定类型的SQL语句;
访问其他用户的对象;
控制计算资源的使用;
不适用于数据库管理员(DBA)。
2.系统权限:
对特定类型的对象执行活动,如创建、更改、删除等;
例如,增加或删除某个数据库任何表格的行与列。
3.对象权限:
对特定表、函数或包执行特定操作的权限;
例如,删除某个表格中的行;
允许用户插入、删除、更新或选择数据库对象中的数据;
对象的所有者拥有该对象的所有对象权限,并且这些权限不能被撤销;
对象的所有者可以将该对象的对象权限授予其他数据库用户;
具有管理员权限的用户可以向用户授予和撤销对象权限,该用户无授予权限的对象。
针对数据库的权限有对应的权限命令,在多用户数据库环境中加强数据库安全。权限命令主要有三个:
1. GRANT命令:提供用户对数据库对象的访问权限,还允许用户向其他用户授予访问权限。该命令的基本语法是:
GRANT SELECT ON<table1> to<user1>授予user1对table1的SELECT操作权限
2. REVOKE命令:删除用户对数据库对象的访问权限。该命令的基本语法是:
REVOKE DELETE ON<table1> FROM<user1>删除user1对table1的DELETE操作权限
3. DENY命令:拒绝对对象的权限,并阻止主体基于组或角色中的成员身份获得GRANT权限。该命令的基本语法是:
DENY UPDATE ON<table1> to<user1>拒绝user1对table1的UPDATE操作权限
如何设置数据库的权限
1、首先用管理员进入数据库级中的安全性,点击登录名,点击新建登录名。
2、在界面中,创建登录名,并设置默认的数据库的密码。
3、然后勾选需要设置的数据库,完成创建。
4、然后就可以对数据库中的User表进行权限的设置了,右键“属性”。
5、依次点击“添加”,浏览”,“选择对象”。
6、然后就可以下面的列表中找到对应的权限授予进行设置。
怎样通过在数据库中的表来定义权限和授权
权限管理,最简单的就是两个表,一个权限表,就是权限字段
再有一个是授权表就是用户、权限
通过一个界面,把用户能拥有的权限通过挑勾等方式选上,然后加入到授权表中
运行程序功能时,判断该用户对应权限在授权表中有没有记录,没有说明没权限,给个提示,退出这个功能,有记录就正常使用
通过这种方式,可以进行按钮级授权、菜单级授权
更细致的字段级也能做,只不过数据就太多了,最好不用这种结构
mysql怎么授予创建数据库的权限
MySQL命令行能否实现新建用户呢?答案无疑是肯定的。而且在使用使用MySQL命令行新建用户后,还可以为用户授予权限。
首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。
注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。
用户:phplamp
用户数据库:phplampDB
1.MySQL命令行新建用户
//登录MYSQL
@>mysql-u root-p
@>密码
//创建用户
mysql> insert into mysql.user(Host,User,Password) values('localhost','phplamp',password('1234'));
//刷新系统权限表
mysql>flush privileges;
这样就创建了一个名为:phplamp密码为:1234的用户。
//退出后登录一下
mysql>exit;
@>mysql-u phplamp-p
@>输入密码
mysql>登录成功
2.MySQL命令行为用户授权
//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@>mysql-u root-p
@>密码
//首先为用户创建一个数据库(phplampDB)
mysql>create database phplampDB;
//授权phplamp用户拥有phplamp数据库的所有权限
@>grant all privileges on phplampDB.* to phplamp@localhost identified by'1234';//这里需要注意,如果发现找不到用户,需要执行命令 flush privilieges;
//刷新系统权限表
mysql>flush privileges;
mysql>其它操作
//如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on phplampDB.* to phplamp@localhost identified by'1234';
//刷新系统权限表。
mysql>flush privileges;
mysql> grant权限1,权限2,…权限n on数据库名称.表名称 to用户名@用户地址 identified by‘连接口令’;
权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。
例如:
mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。
mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。
mysql>grant all privileges on*.* to joe@10.163.225.87 identified by‘123′;
给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
mysql>grant all privileges on*.* to joe@localhost identified by‘123′;
给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
好了,文章到此结束,希望可以帮助到大家。