sql 登陆名及用户名配置

 

/*
sys.sql_logins  系统登陆名表
 */

/*
创建数据库登陆名
创建数据库登录名密码可选参数
hashed                    表示该密码已经经过hash加密处理  如 password = 0x12324124123 hashed,
must_change        表示用户首次登陆时必须更改用户密码 必须启用 check_policy
check_expiration    表示该用户密码采用密码过期策略  必须启用 check_policy
check_policy            表示该用户密码强制采取windows密码策略
*/
create login testlogin
with
        password =  '123' must_change,
        check_expiration = on,
        check_policy = on,
        default_database = inews

/*查看当前登陆名列表*/
select * from sys.sql_logins

go

/*修改登录名信息*/
alter login testlogin
with 
        name = testlogin,
        password = '123456'

/*停用该登陆名*/
alter login testlogin disable

/*启用该登陆名*/
alter login testlogin enable

select * from sys.sql_logins

go

/*
不同的固定服务器角色表示不同权限的用户组
可以通过系统定义的存储过程来控制用户的服务器角色归属
sp_addsrvrolemember        添加到服务器角色
sp_helpsrvrolemember        查看服务器角色成员表
sp_dropsrvrolemember        从角色中删除
is_srvrolemember                判断成员是否隶属于指定角色
*/
sp_addsrvrolemember 'testlogin' , 'securityadmin';
exec sp_helpsrvrolemember 'securityadmin';

/*至此登录名 weblearner 完成对数据库的映射以及权限分配,在此之前,仅有登陆权限*/

sp_dropsrvrolemember 'testlogin' , 'securityadmin';

/* select  is_srvrolemember('securityadmin' , 'testlogin'); */

go
 
 /*关于user的操作*/

 /*
 为什么建议用user设置登陆名的权限而不是使用角色设置登录名权限?
 因为角色的权限是全局的  即一旦分配角色  该登陆名就拥有数据库服务器里所有数据库的权限
 这是不合理的   使用user设置权限可以有效的避免权限的过度授予
 */

 /*启用guest 架构*/
 grant connect to guest
 /*为指定的登录名在指定的数据库内创建用户映射*/
 create user testuser from login testlogin with default_schema = guest

 --用户名修改
 alter user testuser
 with
    name = testuser
go

 /*删除用户名*/
drop user testuser

/*删除数据库登陆名*/
drop login testlogin

/*查询指定数据库中用户名表*/
select * from inews..sysusers
select * from sys.database_principals

/*查询数据库登陆名表*/
select * from sys.sql_logins

go

 

posted on 2014-07-12 21:32  yl1993  阅读(284)  评论(0)    收藏  举报