<center id="qkqgy"><optgroup id="qkqgy"></optgroup></center>
  • <menu id="qkqgy"></menu>
    <nav id="qkqgy"></nav>
    <xmp id="qkqgy"><nav id="qkqgy"></nav>
  • <xmp id="qkqgy"><menu id="qkqgy"></menu>
    <menu id="qkqgy"><menu id="qkqgy"></menu></menu>
    <tt id="qkqgy"><tt id="qkqgy"></tt></tt>

  • 數據庫用戶:隸屬于服務器登錄名;屬于某組數據庫角色以獲取操作數據庫的權限

    如果,添加登錄名的時候,用戶映射那里,同時選擇了一個數據庫。并且該數據庫的角色,勾選了db_ower或更高權限。那么SqlServer會自動給該數據庫添加一個和登錄名同名的數據庫用戶,隸屬于登錄名myloginname。(注意:刪除登錄名時候,不會刪除和該登錄名關聯的用戶。所以,當下一次創建同名登錄名給相同數據庫分配角色時候。SQL會自動給該數據庫添加同名的數據庫用戶名,但是數據庫的用戶中,已經存在該用戶名,所以,會報錯。解決方案有2中,一,先刪除數據庫中的用戶名,在添加,同時映射。或者二:先不要映射數據庫,這樣能添加成功。然后,在去數據庫刪除老用戶名,重新添加,指向登錄名myloginname)

    <>sa這個登錄名對應的用戶名是dbo而不是sa就行了

    <>服務器登錄名、服務器角色 、數據庫用戶名、 數據庫角色、數據庫架構

    登錄名只是具有連接到SQLSERVER的權限,而沒有訪問SQLSERVER上數據庫的權限,所以要為該登錄名在指定的
    數據庫中創建用戶名,使其可以訪問那個數據庫中的數據.一個登錄名可以在多個數據庫中創建用戶名,以使這個登錄名能夠訪問多個數據庫(在登錄連接的字符串
    中指定默認的數據庫名稱),但是一個登錄名在一個數據庫中只能創建一個對應的用戶名

    服務器登錄名Server Login,服務器角色Server Role,數據庫用戶DB User,數據庫架構DBSchema,數據庫角色DB Role 。
    應該從服務器與數據庫來區分,服務器【SQL】包含一到多個數據庫,其中:
    服務器登錄名,指有權限登錄到某服務器的用戶;
    服務器角色,指一組固定的服務器用戶,默認有9組;服務器角色不容許更改
    登錄名一定屬于某些角色,默認為public
    登錄后也不一定有權限操作數據庫,如果沒有用戶映射,是無法登錄數據庫的
    數據庫用戶,指有權限能操作數據庫的用戶;不一定屬于角色
    數據庫角色,指一組固定的有某些權限的數據庫角色;數據庫角色可以添加,可以定制不同權限
    數據庫架構,指數據庫對象的容器;類似于數據庫對象的命名空間,用戶通過架構訪問數據庫對象

    * 服務器登錄名屬于某組服務器角色; 一定屬于某個角色
    * 服務器登錄名需要于數據庫的用戶映射后才擁有操作數據庫的權限 必須用戶映射,才能操作對應的數據庫
    * 數據庫用戶屬于某組數據庫角色以獲取操作數據庫的權限
    * 數據庫角色擁有對應的數據庫架構,數據庫用戶可以通過角色直接擁有架構
    * 數據庫用戶有默認架構,寫SQL語句可以直接以“對象名”訪問
    6. 非默認架構則要以“架構名.對象名”訪問
    <>刪除登錄名 用戶名

    drop user  登錄名
    drop login  用戶名

    <>sp_addlogin

    sp_addlogin [ @loginame = ] ‘login’
    [ , [ @passwd = ] ‘password’ ]
    [ , [ @defdb = ] ‘database’ ]
    [ , [ @deflanguage = ] ‘language’ ]
    [ , [ @sid = ] sid ]
    [ , [ @encryptopt = ] ‘encryption_option’ ]
    參數
    [@loginame =] ‘login’
    登錄的名稱。login 的數據類型為 sysname,沒有默認設置。

    [@passwd =] ‘password’

    登錄密碼。password 的數據類型為 sysname,默認設置為 NULL。sp_addlogin 執行后,password 被加密并存儲在系統表中。

    [@defdb =] ‘database’

    登錄的默認數據庫(登錄后登錄所連接到的數據庫)。database 的數據類型為 sysname,默認設置為 master。
    【默認數據庫 一般是master ,如你你改動,必須 該用戶可以訪問你該的默認數據庫,不然不能登錄成功】

    [@deflanguage =] ‘language’

    用戶登錄到 SQL Server 時系統指派的默認語言。language 的數據類型為 sysname,默認設置為 NULL。如果沒有指定
    language,那么 language 被設置為服務器當前的默認語言(由 sp_configure 配置變量 default language
    定義)。更改服務器的默認語言不會更改現有登錄的默認語言。language 保持與添加登錄時所使用的默認語言相同。

    [@sid =] sid

    安全標識號 (SID)。sid 的數據類型為 varbinary(16),默認設置為 NULL。如果 sid 為 NULL,則系統為新登錄生成
    SID。盡管使用 varbinary 數據類型,非 NULL 的值也必須正好為 16 個字節長度,且不能事先存在。SID 很有用,例如,如果要編寫 SQL
    Server 登錄腳本,或要將 SQL Server 登錄從一臺服務器移動到另一臺,并且希望登錄在服務器間具有相同的 SID 時。

    [@encryptopt =] ‘encryption_option’

    指定當密碼存儲在系統表中時,密碼是否要加密。encryption_option 的數據類型為 varchar(20),可以是下列值之一。

    向該用戶授予訪問某數據庫的權限
    use 數據庫名
    exec sp_grantdbaccess ‘用戶名’ -----映射

    –首先使用sp_addlogin添加登錄 exec sp_addlogin ‘用戶名’,‘密碼’,默認數據庫 ------添加用戶
    –然后向該用戶授予訪問某數據庫的權限 use 數據庫名 exec sp_grantdbaccess ‘用戶名’ -----映射
    –最后授予該用戶的具體權限,比如可以對某個表進行select操作,這要根據該用戶需要的權限來設定
    use 數據庫名 grant select on 表名 to 用戶名
    比如要新建帳戶appuser,密碼為pass,并允許該用戶對appdb數據庫的test表有select 和update權限,那么依次執行
    exec sp_addlogin ‘appuser’,‘pass’,‘appdb’
    go
    use appdb exec sp_grantdbaccess ‘appuser’
    go
    use appdb
    grant select,update on test to appuser
    go
    GRANT 名稱 GRANT — 賦予一個用戶,一個組或所有用戶訪問權限 語法
    GRANT privilege [, …] ON object [, …] TO
    {
    PUBLIC | GROUP group | username
    }
    輸入 privilege 可能的權限有:
    SELECT 訪問聲明的表/視圖的所有列/字段.
    INSERT 向聲明的表中插入所有列字段.
    UPDATE 更新聲明的表所有列/字段.
    DELETE 從聲明的表中刪除所有行.

    GROUP group 將要賦予權限的組 group .
    username 將要賦予權限的用戶名.
    PUBLIC 是代表所有用戶的簡寫.

    創建角色,用戶,權限
    /–示例說明
    示例在數據庫pubs中創建一個擁有表jobs的所有權限、擁有表titles的SELECT權限的角色r_test
    隨后創建了一個登錄l_test,然后在數據庫pubs中為登錄l_test創建了用戶賬戶u_test
    同時將用戶賬戶u_test添加到角色r_test中,使其通過權限繼承獲取了與角色r_test一樣的權限
    最后使用DENY語句拒絕了用戶賬戶u_test對表titles的SELECT權限。
    經過這樣的處理,使用l_test登錄SQL Server實例后,它只具有表jobs的所有權限。
    –/
    USE pubs
    –創建角色 r_test
    EXEC sp_addrole ‘r_test’
    –授予 r_test 對 jobs 表的所有權限
    GRANT ALL ON jobs TO r_test
    –授予角色 r_test 對 titles 表的 SELECT 權限
    GRANT SELECT ON titles TO r_test
    –添加登錄 l_test,設置密碼為pwd,默認數據庫為pubs
    EXEC sp_addlogin ‘l_test’,‘pwd’,‘pubs’
    –為登錄 l_test 在數據庫 pubs 中添加安全賬戶 u_test
    EXEC sp_grantdbaccess ‘l_test’,‘u_test’
    –添加 u_test 為角色 r_test 的成員
    EXEC sp_addrolemember ‘r_test’,‘u_test’
    –拒絕安全賬戶 u_test 對 titles 表的 SELECT 權限
    DENY SELECT ON titles TO u_test
    /–完成上述步驟后,用 l_test 登錄,可以對jobs表進行所有操作,但無法對titles表查詢,雖然角色 r_test
    有titles表的select權限,但已經在安全賬戶中明確拒絕了對titles的select權限,所以l_test無titles表的select權限–/
    –從數據庫 pubs 中刪除安全賬戶
    EXEC sp_revokedbaccess ‘u_test’
    –刪除登錄 l_test
    EXEC sp_droplogin ‘l_test’
    –刪除角色 r_test
    EXEC sp_droprole ‘r_test’
    sp_adduser:可以理解為增加User,
    和sp_grantdbaccess:理解為授予連接權限。
    使用sp_adduser為一個數據庫增加一個用戶,

    其實sp_grantdbaccess存儲過程能增加用戶,是因為在其中也使用sp_adduser,但是在安全性上要比sp_adduser好,因為它能建立一個安全性連接。如果僅僅從添加的用戶來說,兩者創建的用戶沒有設么本質的區別

    技術
    下載桌面版
    GitHub
    百度網盤(提取碼:draw)
    Gitee
    云服務器優惠
    阿里云優惠券
    騰訊云優惠券
    華為云優惠券
    站點信息
    問題反饋
    郵箱:ixiaoyang8@qq.com
    QQ群:766591547
    關注微信
    巨胸美乳无码人妻视频