1. 程式人生 > >SQL Server資料庫安全性控制

SQL Server資料庫安全性控制

1. 建立登入名並配置角色及使用者

(1)使用sa登入SQLServer2008;

(2)建立資料庫sa_test,其中建立資料表dbo.saTable;

CREATE DATABASE sa_test

USE sa_test

CREATE TABLE saTable

(

SNO INT PRIMARY KEY,

SNAME CHAR(10),

SSEX CHAR(4),

SAGE INT,

SDEPT CHAR(4));

INSERT INTO saTable VALUES('16121000','張虎','男','18','CS')

INSERT INTO saTable VALUES('16121002','李振','男','20','CS')

INSERT INTO saTable VALUES('16121004','黃颯','男','21','CS')

INSERT INTO saTable VALUES('16121006','曾強','男','19','IS')

INSERT INTO saTable VALUES('16121007','張翠','女','20','IS')

INSERT INTO saTable VALUES('16122005','趙坤','男','23','MA')

INSERT INTO saTable VALUES('15124001','李麗','女','22','IS')

INSERT INTO saTable VALUES('15124003','宋美麗','女','18','IS')

INSERT INTO saTable VALUES('15125006','李銘','男','21','MA')

INSERT INTO saTable VALUES('14253610','司馬穎','女','22','MA')

(3)建立登入名L1,具有dbcreator許可權,影射使用者名稱U1,預設資料庫sa_test,資料庫角色為public;

(4)建立登入名L2,具有dbcreator許可權,影射使用者名稱U2,預設資料庫sa_test,資料庫角色為public。

2. 使用新登入名登入伺服器並驗證許可權

(1)使用L1登入SQLServer2008,驗證是否可以瀏覽表dbo.saTable;

不可以瀏覽表dbo.saTable。

(2)建立資料庫L1_test,使用者名稱預設為dbo,模式預設為dbo;

CREATE DATABASE L1_test

(3)在L1_test中建立資料表dbo.L1Table;

USE L1_test

CREATE TABLE L1Table

(SNAME CHAR(10),

ISBN CHAR(20) PRIMARY KEY,

PRICE FLOAT,

COUNT INT);

INSERT INTO L1Table VALUES('121564','三國演義','52.3','6');

INSERT INTO L1Table VALUES('441148','西遊記','55.5','20');

INSERT INTO L1Table VALUES('414584','紅樓夢','60','12');

INSERT INTO L1Table VALUES('824132','水滸傳','48.5','12');

INSERT INTO L1Table VALUES('524631','西廂記','36.8','25');

INSERT INTO L1Table VALUES('142535','蛙','56.9','50');

INSERT INTO L1Table VALUES('755365','平凡的世界','45.5','16');

INSERT INTO L1Table VALUES('692354','隋唐英雄傳','52.4','20');

INSERT INTO L1Table VALUES('796354','資料庫系統概論','39.6','21');

INSERT INTO L1Table VALUES('452687','資料結構','40.3','18');

(4)使用L2登入SQLServer2008,驗證是否可以瀏覽表dbo.saTable;

不可以瀏覽表dbo.saTable

(5)建立資料庫L2_test,使用者名稱預設為dbo,模式預設為dbo;

CREATE DATABASE L2_test

(6)在L2_test中建立資料表dbo.L2Table。

USE L2_test

CREATE TABLE L2Table

(SNAME CHAR(10),

ISBN CHAR(20) PRIMARY KEY,

PRICE FLOAT,

COUNT INT);

INSERT INTO L2Table VALUES('英語','4145154','20.5','5');

INSERT INTO L2Table VALUES('高數','7445155','23.5','6');

INSERT INTO L2Table VALUES('體育','8442241','32.5','12');

INSERT INTO L2Table VALUES('C#','7241584','56.6','21');

INSERT INTO L2Table VALUES('C++','9541233','58.3','32');

INSERT INTO L2Table VALUES('計算機導論','54142521','49.9','45');

INSERT INTO L2Table VALUES('近代史','41518546','32.2','20');

INSERT INTO L2Table VALUES('Java','45558888','45.6','35');

INSERT INTO L2Table VALUES('安卓開發','71621341','75.3','17');

INSERT INTO L2Table VALUES('PHP設計','44654521','48.7','29');

3. sa使用者對新建使用者授權

(1)使用sa登入SQLServer2008;

(2)設定U1使用者在L2_test中具備public許可權;

(3)設定U2使用者在L1_test中具備public許可權;

(4)授權U1在dbo.saTable上的select許可權;

USE sa_test

GRANT SELECT

ON dbo.saTable

TO U1

WITH GRANT OPTION

(5)授權U2在dbo.saTable上的insert許可權。

USE sa_test

GRANT INSERT 

ON saTable

TO U2

4. 新建使用者之間授權

(1)使用L1登入SQLServer2008,驗證是否可以瀏覽表dbo.saTable中的資料,是否可以插入資料;

USE sa_test

SELECT *

FROM saTable/*可以*/

INSERT INTO saTable VALUES('151250','李民','男','21','MA')/*不可以*/

(2)授權U2在dbo.L1Table上的select許可權和insert許可權;

GRANT SELECT,INSERT 

ON L1Table

TO U2

(3)授權U2在L1_test中建立表的許可權;

GRANT CREATE TABLE 

TO U2

(4)授權U2在L1_test中建立模式的許可權。

GRANT CREATE SCHEMA 

TO U2

 

5. 驗證使用者許可權並對指定屬性授權

(1)使用L2登入SQLServer2008,驗證是否可以瀏覽表dbo.saTable中的資料,是否可以插入資料;

USE sa_test

SELECT *

FROM saTable/*不可以*/

INSERT INTO saTable VALUES('1512510','李三民','男','21','MA')/*可以*/

(2)驗證是否可以瀏覽表dbo.L1Table中資料,是否可以插入資料;

USE L1_test

SELECT *

FROM L1Table/*可以*/

USE L1_test

INSERT INTO L1Table

VALUES('175236','三國群英傳','55.3','6');/*可以*/

USE L1_TEST

UPDATE L1TABLE SET SNAME='414584';/*不可以*/

USE L1_TEST

DELETE FROM L1TABLE WHERE(SNAME='414584');/*不可以*/

(3)建立U2使用者的資料庫模式UU,驗證是否成功;

CREATE SCHEMA "UU" AUTHORIZATION U2/*該模式存在登入名L1下的L1_test*/

(4)建立資料表UU.Test,驗證是否成功(語句建立成功);

              CREATE TABLE UU.Test(COL1 INT PRIMARY KEY,

COL2 CHAR(10));/*存在於L2下的L1_test*/

(5)驗證U2是否具備UU.Test的全部許可權,如drop;

 USE L1_test

SELECT *

FROM UU.Test;

 USE L1_test

   DROP UU.Test;

 USE L1_test

INSERT INTO UU.Test VALUES('12','QQQQQ');/*全部都可以*/

(6)授權U1在dbo.L2Table上的select許可權和修改指定列的許可權。

USE L2_TEST

GRANT SELECT,UPDATE(PRICE)

ON L2Table

TO U1

 

6. 收回許可權並驗證

(1)使用L1登入SQLServer2008,驗證是否可以瀏覽dbo.L2Table中資料,是否可以修改指定的列;

USE L2_test

SELECT *

FROM L2Table/*可以*/

USE L2_test

UPDATE L2Table SET PRICE='0'/*可以*/

(2)收回U2在dbo.L1Table上的insert許可權;

USE L1_test

REVOKE INSERT

ON L1Table

FROM U2/*收回成功*/

(3)使用L2登入SQLServer2008,驗證是否可以瀏覽表uu1.L1Table中資料,是否可以插入資料。

USE L2_test

SELECT *

FROM UU.L1Table

 USE L2_test

INSERT INTO L1Table VALUES('12564','三國','52.3','6');/*都不可以*/

7. 建立角色並授權

(1)使用L1登入SQLServer2008,在L1_test中建立資料表dbo.L1Table2;

USE L1_test

CREATE TABLE L1Table2

(SNAME CHAR(10),

ISBN CHAR(20) PRIMARY KEY);

INSERT INTO L1Table2 VALUES('英語','40145154');

INSERT INTO L1Table2 VALUES('高數','74045155');

INSERT INTO L1Table2 VALUES('體育','84402241');

INSERT INTO L1Table2 VALUES('C#','72415804');

INSERT INTO L1Table2 VALUES('C++','95412303');

INSERT INTO L1Table2 VALUES('計算機導論','054142521');

INSERT INTO L1Table2 VALUES('近代史','415180546');

INSERT INTO L1Table2 VALUES('Java','455588088');

INSERT INTO L1Table2 VALUES('安卓開發','716211341');

INSERT INTO L1Table2 VALUES('PHP設計','446054521');

(2)建立資料庫角色R1;

CREATE ROLE R1/*在L1登入名下L1_test角色裡*/

(3)將在dbo.L1Table表上的查詢和插入許可權授予角色R1,將dbo.L1Table2表上的查詢許可權和修改指定列許可權授予角色R1;

GRANT SELECT,INSERT 

ON dbo.L1Table

TO R1

GRANT SELECT,UPDATE(SNAME)

ON dbo.L1Table2

TO R1

(4)將使用者新增到角色R1中;

EXEC SP_ADDROLEMEMBER R1,U2

(5)使用L2登入SQLServer2008,驗證對L1_test中資料表的操作許可權。

USE L1_test

SELECT *

FROM L1Table/*可以*/

USE L1_test

INSERT INTO L1Table

VALUES('1752306','三國群雄傳','55.3','6');/*可以*/

USE L1_TEST

UPDATE L1TABLE SET SNAME='1752306';/*不可以*/

USE L1_TEST

DELETE FROM L1TABLE WHERE(SNAME='1752306');/*不可以*/

8. 收回角色的許可權

(1)使用L1登入SQLServer2008,收回角色R1在dbo.L1Table表上的插入許可權;

REVOKE INSERT

ON L1Table FROM R1

(2)1使用L2登入SQLServer2008,驗證對L1_test中資料表的操作許可權。

USE L1_test

SELECT *

FROM L1Table/*可以*/

USE L1_test

INSERT INTO L1Table

VALUES('1752306','三國群雄傳','55.3','6');/*不可以*/

USE L1_TEST

UPDATE L1TABLE SET SNAME='1752306';/*不可以*/

USE L1_TEST

DELETE FROM L1TABLE WHERE(SNAME='1752306');/*不可以*/

相關推薦

SQL Server資料庫安全性控制

1. 建立登入名並配置角色及使用者 (1)使用sa登入SQLServer2008; (2)建立資料庫sa_test,其中建立資料表dbo.saTable; CREATE DATABASE sa_test USE sa_test CREATE TABLE saTabl

Microsoft SQL Server資料庫安裝:找不到資料庫引擎啟動控制代碼

一種可能是在安裝時選擇賬戶出現問題,在賬戶選擇時,要選擇Administrator。解決方法:在不解除安裝的情況下,重新開啟安裝包進行安裝,選擇按安裝。    一直點下一步執行到選擇賬戶,選擇Administrator,如果沒有可以自己手動輸入。最後進行預設選擇安裝即可。 

Sql server資料庫連線Oracle庫的步驟

本地使用環境 作業系統: win10 64  ,SQL Server 2012 ,Oracle  Server 11g 第一步:安裝好oracle客戶端,並配置好TNS資訊 ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = T

SQL Server資料庫基礎

建庫建表: if DB_id('TicketManager ')is not null --判斷資料庫是否已經存在 drop database TicketManager --移除已經存在的資料庫 go create database TicketManager --新建資料庫 on (

SQL Server資料庫mdf檔案中了勒索病毒.sicck。副檔名變為sicck

SQL Server資料庫mdf檔案中了勒索病毒sicck。副檔名變為sicck SQL,資料庫,勒索病毒,mdf檔案中毒,sicck 副檔名如下: [[email protected]]***.mdf.sicck [[email protected]]***.ldf.sicck

Sql Server資料庫資料恢復成功案例

故障描述: 5塊2T硬碟組建RAID5,劃分LUN供windows伺服器使用。在windows伺服器內裝有Sql Server2008資料庫。儲存空間內共有三個邏輯分割槽,大小分別為500G、800G、2.3T。資料庫檔案丟失,主要涉及五個資料庫,表個數約為6000個左右。丟失原因未知,且不能確

SQL Server資料庫mdf檔案中了勒索病毒Goat4444。副檔名變為Goat4444

SQL,資料庫,勒索病毒,mdf檔案中毒,Rooster4444 *SQL Server資料庫mdf檔案中了勒索病毒.mdf.Rooster4444。副檔名變為Rooster4444 SQL Server資料庫mdf檔案中了勒索病毒Rooster4444。副檔名變為Rooster4444 常見的副檔名如

SQL Server資料庫mdf檔案中了勒索病毒no_more_ransom。副檔名變為no_more_ransom

SQL,資料庫,勒索病毒,mdf檔案中毒,no_more_ransom  SQL Server資料庫mdf檔案中了勒索病毒.mdf.no_more_ransom。副檔名變為no_more_ransom SQL Server資料庫mdf檔案中了勒索病毒no_more_ransom。副

SQL Server資料庫mdf檔案中了勒索病毒[email p

SQL,資料庫,勒索病毒,mdf檔案中毒,[email protected]_email *SQL Server資料庫mdf檔案中了勒索病毒[email protected]_email。副檔名變為[email protected]_email SQL Serv

SQL Server資料庫mdf檔案中了勒索病毒Rat4444 。副檔名變為Rat4444

SQL,資料庫,勒索病毒,mdf檔案中毒,Rat4444 *SQL Server資料庫mdf檔案中了勒索病毒.mdf.Rat4444。副檔名變為Rat4444 SQL Server資料庫mdf檔案中了勒索病毒Rat4444。副檔名變為Rat4444 常見的副檔名如下:.ALCO .BIP .COMBO

SQL Server資料庫log shipping 災備

https://www.cnblogs.com/Aldj/p/8605163.html SQL Server資料庫log shipping 災備(Part1 ) 1.概述Log Shipping為SQL Server提供的資料庫備份過程。它可以將資料庫整個複製到另一臺伺服器上。在這種情況下,交易日誌也會定

SQL Server資料庫級別觸發器

禁止修改表結構和加表  CREATE TRIGGER [Object_Change_Trigger_DDL] ON DATABASE FOR ALTER_TABLE,DROP_TABLE,CREATE_TABLE,CREATE_INDEX,ALTER_INDEX

Matlab連線Sql server資料庫

作業系統:64位win7.0 軟體版本:Matlab R2016a SQL Sever 2012 一、建立資料庫和相應的表 建立好資料庫和其中的表,步驟不做詳細介紹。 二、配置ODBC  ODBC(Open Database Conne

【學習記錄】第一章 資料庫設計-《SQL Server資料庫設計和開發基礎篇視訊課程》

一、課程筆記 1.1  軟體開發週期   (1)需求分析階段   分析客戶的業務和資料處理需求。 (2)概要設計階段   設計資料庫的E-R模型圖,確認需求資訊的正確和完整。 /*   E-R圖:實體-關係圖(Entity Relationship Diagram),提供了

SQL Server 資料庫修復步驟

SQL Server 資料庫修復步驟 1. ALTER DATABASE 資料庫名稱 SET EMERGENCY 2. ALTER DATABASE 資料庫名稱 SET SINGLE_USER 3. DBCC CheckDB (資料庫名稱 , REPAIR_ALLOW_DATA

SQL Server資料庫教程

第一章.SQL Server 2008的安裝 1)處理器:1.4GHz處理器,建議使用2.0GHz或更快的處理器     記憶體:最小:512MB,建議使用1GB或者更大的記憶體     磁碟容量:至少2.0GB有可用磁碟空間    

mybatis學習筆記之——連線SQL server資料庫(IDEA)

我們新建一個普通的專案,File --> New --> Project -->Java --> Java EE。然後新建專案即可。 專案完成後我們新建一個conf資料夾,用來存放配置資訊,新建一個lib資料夾,用來存放jar包。 我們將mybatis的jar包,連線

BCP工具的使用以及C++,SQL server資料庫中呼叫命令列的方法

BCP工具使用: BCP是由SYBASE公司提供的,專門用於資料庫表一級資料備份的工具。 主要引數如下: 基本用法: 遠端地址1的資料庫表student 匯出到本地(遠端ip1(10.189.1.1) ): bcp run.dbo.student out "c:\student

SQL Server 資料庫部分常用語句小結(二)

9. 查詢備份還原資料庫的進度。 select command ,percent_complete ,est_time_to_go=convert(varchar,(estimated_completion_time/3600000))+' hour, ' +convert(varchar,(estimat

SQL Server 資料庫調整表中列的順序操作

SQL Server 資料庫中表一旦建立,我們不建議擅自調整列的順序,特別是對應的應用系統已經上線,因為部分開發人員,不一定在程式碼中指明瞭列名。表是否可以調整列的順序,其實可以自主設定,我們建議在安裝後設置為禁止。 那麼,如果確實需要調整某一列的順序,我們是怎麼操作的呢? 下面,我們就要演示一下怎麼取消這