zoukankan      html  css  js  c++  java
  • 登录名与用户名

    16:20 2013-04-09 登录名与用户名
    通过sp_addlogin创建登录名

    1 execute sp_addlogin 'loginame','password' --loginame只能use master

    指定登录名为loginame,并且创建test数据库中的用户nameindb

    1 use test
    2 execute sp_grantdbaccess 'loginame','nameindb' --test库下生成nameiddb用户及架构,loginame能use test

    设置所有操作授权

    1 exec sp_addrolemember 'db_owner','nameindb' --更改数据库成员角色身份
    2 exec sp_addrolemember 'db_backupoperator','bakuser'--管理数据库备份,BACKUP DATABASE和BACKUP LOG语句

    设置具体操作权限

    1 grant select,insert,update,delete to nameindb  --授予nameindb对所有用户表的操作权限
    2 grant select,update on tb to nameindb          --授予nameindb select,update到具体的表
    3 grant select,update on tb(id,col) to nameindb  --授予nameindb select,update到具体的表和列
    4 grant create table,create view,create proc to nameindb  --授予nameindb具有创建表、视图、存储过程等的操作权限

    不能使用revoke drop table to nameindb。nameindb创建了table,再revoke create table权限,但还是可以删除自己创建的table
    --exp1:

    1 grant exec on usp_inserttable to nameindb   --授予nameindb对具体存储过程的执行权限
    2 deny exec on usp_inserttable to nameindb    --禁止nameindb对具体存储过程的执行权限
    3 revoke exec on usp_inserttable to nameindb  --删除nameindb对具体存储过程的执行权限
    View Code

    删除登录用户

    1 exec sp_revokedbaccess 'nameindb'             --移除用户对数据库的访问权限
    2 exec sp_droprolemember 'db_owner','nameindb'  --移除数据库成员角色身份
    3 exec sp_droplogin 'loginame'                  --删除登录用户

    SQL Server将数据库的用户名映射到登录名

    --步骤1:列出当前数据库的孤立用户
    exec sp_change_users_login 'REPORT'
    --步骤2:自动将用户名所对应的同名登录添加到syslogins中
    exec sp_change_users_login 'AUTO_FIX','用户名'
    --步骤3:将用户名映射为指定的登录名
    exec sp_change_users_login 'UPDATE_ONE','用户名','登录名'--更新库下用户的sid成登录名的sid

    --exp2:

    1 --通过sp_addlogin 创建与用户名相同的登录名
    2 execute sp_addlogin 'test','123'
    3 exec sp_change_users_login 'REPORT'
    4 exec sp_change_users_login 'AUTO_FIX','test'
    5 exec sp_change_users_login 'UPDATE_ONE','test','test'
    View Code

    实际应用
    16:06 2013-07-15 数据库errorlog中发现下面信息
    The activated proc '[dbo].[sp_syspolicy_events_reader]' running on queue 'msdb.dbo.syspolicy_event_queue' output the following: 'Cannot execute as the database principal because the principal "##MS_PolicyEventProcessingLogin##" does not exist, this type of principal cannot be impersonated, or you do not have permission.'
    网上找到问题原因及解决方法
    Just check if the principle is valid on master and msdb securables.
    If they found to orphaned users fix them using sp_change_users_login.

    1 --解决方法
    2 use master
    3 select * from sys.database_principals where [name]='##MS_PolicyEventProcessingLogin##'
    4 use msdb
    5 select * from sys.database_principals where [name]='##MS_PolicyEventProcessingLogin##'
    6 exec sp_change_users_login 'UPDATE_ONE','##MS_PolicyEventProcessingLogin##','##MS_PolicyEventProcessingLogin##'
  • 相关阅读:
    Tar命令用法详解
    一次Linux系统被攻击的分析过程
    企业系统安全管理和强化的十点建议
    中型企业的IT运维策略
    企业邮件服务器被列入RBL,申请撤销PBL指控
    Xshell远程连接Ubuntu
    LeetCode 7: Reverse Integer
    LeetCode 14: Longest Common Prefix
    LeetCode 203:Remove Linked List Elements
    数据挖掘之处理分类自变量与处理时间变量
  • 原文地址:https://www.cnblogs.com/Uest/p/3585321.html
Copyright © 2011-2022 走看看