全部博文(2065)
分类: 数据库开发技术
2010-10-02 12:30:17
SQLServer中角色与用户
时间:2010-1-2
在 SQL Server 2000 中,安全管理可分为数据库安全管理和服务器安全管理,数据库的管理主要涉及到用户对数据库的权限,服务器的管理主要是用户对整个服务器的操作权限。在这些权限管理中,使用基于角色的方式使管理配置变得非常简单。当我们新建一个数据库后,会在数据库中看到两个容器:用户和角色,数据库用户通过验证后对于数据库有操作权限,数据库角色是预置数据库权限的对象,有些类 似于安全组,但是比组更加灵活,例如数据库角色 db_backupoperator 拥有对于数据库的备份操作权限,这样我们只需把这个角色赋给指定用户,用户即有了备份数据库权限。
用户截图
角色截图
1. 修改某个用户的角色
具体配置方法很简单:
在企业管理器中,双击用户容器,通过右键菜单打开指定用户的属性,可以看到数据库角色列表,选中想要赋予用户的角色,点击确定。
也可以打开角色容器,通过双击,打开想赋予的角色的属性,点击添加,把指定用户加入这个角色,点击确定。
PS:一个用户是能够归属于多个角色的。
缺省的数据库角色有:
db_accessadmin
db_backupoperator
db_datareader
db_datawriter
db_ddladmin
db_denydatareader
db_denydatawriter
db_owner
db_securityadmin
可以参考上面的截图。就是缺省的用户角色!
当然我们也可以创建一些用户角色去管理这个数据库的东西。
在数据库中角色容器,单击右健,选择新建数据库角色,指定角色名称和角色包括的用户,点击确定.再次打开这个角色时,单击权限给角色配置数据库权限,包括 对数据表,视图,存储过程的 select , insert , update , delete , exec , dri 权限.我们可以把创建的数据库角色加入到缺省数据库角色中,来给新数据库角色赋权,但是缺省数据库角色的权限不能修改.
说明:我们能够对某个角色进行权限的配置。包括某个表视图存储过程的单独修改。
2、理解用户、角色和权限这几个概念
要对这几个概念讲得很明白,需要很大的篇幅,本文只作简要介绍。
要想访问SQL Server必须是它的一个用户,如果要访问某个数据库,必须赋予该用户访问此数据库的权限。角色就是一系列权限的集合。用户和角色的关系就像Windows系统中的用户和用户组的关系。
PS:SQLSERVER里面没有组的概念而是用角色来替代了。可以给角色赋不同的权限。然后一个角色里面是有许多个不同的用户。
sa是SQL Server的默认超级用户,就像系统的administrator用户一样。实际做管理系统时并不需要用户有那么大的权限,一般只要能访问自己建的库就行了。可以新建个用户,只给此用户有限的权限,这样安全系数应该高些,从这个思路出发看看如何实现。
注意:这个思想其实与MYSQL的一样。把用户的权限尽量地减小。
1)、新建aaa用户
如图17,新建登录后出现图18界面,输入用户名aaa,在输入个强壮的密码。
图17
图18
2)、设置权限
如图18,在“服务器角色”选项中什么也不选,如图19,在“数据库访问”选项中只选“xyz”库,也就是说只让aaa用户访问xyz库。“数据库角色中允许”只选默认的“public”。
图19
图20
3)、测试
设置好后,用aaa用户登陆“SQL 查询分析器”,如图21,执行exec xp_cmdshell 'net user user1 /add',出现了期待的结果,没有权限执行。
图21
结论:按照这个操作步骤。一个数据库把其角色明确好。然后再配置一个登录用户就行了!在程序里面就使用这个登录用户来实施就行了。
二、PHP来连接MSSQL的方法
2.1. 使用ODBC的方法
配置好数据源其它的就好办多了$conn=odbc_connect('radius','hkebao','hkebao'); 就OK了!
2.2. 使用mssql_connect 这种办法来连接
修改php.ini文件中
1 extension=php_mssql.dll
2 mssql.secure_connection = On
然后就可以使用了:
$myServer = "127.0.0.1"; //主机
$myUser = "hkebao"; //用户名
$myPass = "hkebao"; //密码
$myDB = "hnebony"; //MSSQL库名
$s = @mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer");
if($s)
{
echo "连接成功";
}
mssql_select_db("hnebony");
注意:一开始的时候我是用localhost来连接的结果就不成功。得用IP来连接才行!