/*
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