yl1993

 

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

 

分类:

技术点:

相关文章:

  • 2021-08-29
  • 2021-07-16
  • 2021-12-05
  • 2021-12-24
  • 2021-12-13
  • 2021-06-17
  • 2021-12-02
  • 2021-07-24
猜你喜欢
  • 2021-07-08
  • 2021-11-18
  • 2021-04-12
  • 2021-12-16
  • 2022-02-07
  • 2021-12-26
  • 2022-01-14
相关资源
相似解决方案