⑴ sqlserver中怎樣獲取名稱許可權
使用SQL語句。
使用SQL語句獲取SQLServer資料庫登錄用戶許可權。
資料庫用戶是資料庫級別的主體,被用於訪問資料庫層面的對象。每一個資料庫用戶都必須要一個與之對用的登錄名。資料庫用戶的信息存在資料庫中,而登錄名存在實例級別的Master資料庫中(但SQL SERVER2012的Contained Database允許將登錄名也存在資料庫級別)。通常來說,資料庫層級的用戶可以和映射的登錄名不一致,但由於這種做法會引起混淆,因此並不推薦。
⑵ 怎麼設置SQL資料庫用戶許可權
設置SQL資料庫用戶許可權的方法如下: 點擊進入資料庫級別的「安全性」、「登錄名」、「新建登錄名」;在「常規」選項卡中,創建登陸名,並設置默認的資料庫;在「用戶映射」選項卡中,勾選需要設置的資料庫,並設置「架構」,點擊「確認」按鈕,完成創建用戶的操作;在「許可權」選項卡中,依次點擊「添加」、「瀏覽」、「選擇對象」;點擊「確認」按鈕後即可。
⑶ sql server 查看 賬號 擁有哪些許可權
1.把你的用戶自定義資料庫放入一個系統提供的資料庫。系統提供的資料庫有:db_owner,db_accessadmin,db_securityadmin,db_ddladmin,db_backupoperator,db_datareader,db_datawriter,db_denydatareader和db_denydatawriter。
2.把用戶自定義資料庫添加到將作為開發環境的db_datareader和db_datawriter中。如果已經有一個可以添加和/或刪除用戶自定義資料庫對象的開發環境,就只需要取消這個許可權或是把用戶自定義資料庫添加到db_ddladmin系統資料庫中。
3.把資料庫用戶作為資料庫成員添加到你的用戶自定義資料庫中。
4.取消所有的公共許可權。
不要向公共用戶發出DENY命令。如果你向公共用戶發出了DENY命令,用戶將不能讀取用戶自定義資料庫的對象。用REVOKE命令代替DENY命令來取消讀取公共資料庫的許可權。這樣設置後,資料庫的用戶就是用戶自定義資料庫的成員了。用戶自定義資料庫具有讀取用戶自定義資料庫對象的許可權。因此這個用戶自定義資料庫允許資料庫用戶讀取用戶自定義資料庫的對象。
⑷ sql 2000如何查詢用戶許可權
用戶許可權是保存在master表中的,
可以使用系統存儲過程查詢用戶許可權,
通常你需要有master表的許可權(如:sa),例:
sp_helpuser
報告有關當前資料庫中 Microsoft�0�3 SQL Server�6�4 用戶、Microsoft Windows NT�0�3 用戶和資料庫角色的信息。
語法sp_helpuser [ [ @name_in_db = ] 'security_account' ]參數[@name_in_db =] 'security_account'
當前資料庫中 SQL Server 用戶、Windows NT 用戶或資料庫角色的名稱。security_account 必須存在於當前的資料庫中。security_account 的數據類型為 sysname,默認值為 NULL。如果沒有指定 security_account,
系統過程將報告當前資料庫中的所有用戶、Windows NT 用戶以及角色的信息。當指定 Windows NT 用戶時,請指定該 Windows NT 用戶在資料庫中可被識別的名稱(用 sp_grantdbaccess 添加)。
返回代碼值0(成功)或 1(失敗)注釋使用 sp_helpsrvrole 及 sp_helpsrvrolemember 返回固定伺服器角色的信息。
為資料庫角色執行 sp_helpuser 等價於為該資料庫角色執行 sp_helpgroup。
許可權執行許可權默認授予 public 角色。
示例
A. 列出所有用戶
下面的示例列出當前資料庫中所有的用戶。
EXEC sp_helpuser
B. 列出單個用戶的信息
下面的示例列出用戶 dbo 的信息。
EXEC sp_helpuser 'dbo'
C. 列出某個資料庫角色的信息
⑸ sql語句server中怎麼查詢用戶的角色和許可權
SQL Server中查詢用戶的對象許可權和角色的方法
-- 查詢用戶的object許可權
exec sp_helprotect NULL, 'UserName'
-- 查詢用戶擁有的role
exec sp_helpuser 'UserName'
-- 查詢哪些用戶擁有指定的系統role
exec sp_helpsrvrolemember 'sysadmin'
-- 可查詢嵌套role
WITH tree_roles as
(
SELECT role_principal_id, member_principal_id
FROM sys.database_role_members
WHERE member_principal_id = USER_ID('UserName')
UNION ALL
SELECT c.role_principal_id,c.member_principal_id
FROM sys.database_role_members as c
inner join tree_roles
on tree_roles.member_principal_id = c.role_principal_id
)
SELECT distinct USER_NAME(role_principal_id) RoleName
FROM tree_roles
-- 其他許可權相關基本表
select * from sysusers
select * from syspermissions
-- Who has access to my SQL Server instance?
SELECT
name as UserName, type_desc as UserType, is_disabled as IsDisabled
FROM sys.server_principals
where type_desc in('WINDOWS_LOGIN', 'SQL_LOGIN')
order by UserType, name, IsDisabled
-- Who has access to my Databases?
SELECT
dp.name as UserName, dp.type_desc as UserType, sp.name as LoginName, sp.type_desc as LoginType
FROM sys.database_principals dp
JOIN sys.server_principals sp ON dp.principal_id = sp.principal_id
order by UserType
select * from sys.database_principals
-- Server Roles
select
p.name as UserName, p.type_desc as UserType, pp.name as ServerRoleName, pp.type_desc as ServerRoleType
from sys.server_role_members roles
join sys.server_principals p on roles.member_principal_id = p.principal_id
join sys.server_principals pp on roles.role_principal_id = pp.principal_id
where pp.name in('sysadmin')
order by ServerRoleName, UserName
-- Database Roles
SELECT
p.name as UserName, p.type_desc as UserType, pp.name as DBRoleName, pp.type_desc as DBRoleType, pp.is_fixed_role as IfFixedRole
FROM sys.database_role_members roles
JOIN sys.database_principals p ON roles.member_principal_id = p.principal_id
JOIN sys.database_principals pp ON roles.role_principal_id = pp.principal_id
where pp.name in('db_owner', 'db_datawriter')
-- What can these users do?
SELECT
grantor.name as GrantorName, dp.state_desc as StateDesc, dp.class_desc as ClassDesc, dp.permission_name as PermissionName ,
OBJECT_NAME(major_id) as ObjectName, GranteeName = grantee.name
FROM sys.database_permissions dp
JOIN sys.database_principals grantee on dp.grantee_principal_id = grantee.principal_id
JOIN sys.database_principals grantor on dp.grantor_principal_id = grantor.principal_id
where permission_name like '%UPDATE%'
⑹ sql語句server中怎麼查詢用戶的角色和許可權
SQL Server中查詢用戶的對象許可權和角色的方法 x0dx0ax0dx0a-- 查詢用戶的object許可權x0dx0aexec sp_helprotect NULL, 'UserName'x0dx0a-- 查詢用戶擁有的rolex0dx0aexec sp_helpuser 'UserName'x0dx0a-- 查詢哪些用戶擁有指定的系統rolex0dx0aexec sp_helpsrvrolemember 'sysadmin'x0dx0a-- 可查詢嵌套rolex0dx0aWITH tree_roles asx0dx0a(x0dx0aSELECT role_principal_id, member_principal_idx0dx0aFROM sys.database_role_membersx0dx0aWHERE member_principal_id = USER_ID('UserName')x0dx0aUNION ALLx0dx0aSELECT c.role_principal_id,c.member_principal_idx0dx0aFROM sys.database_role_members as cx0dx0ainner join tree_rolesx0dx0aon tree_roles.member_principal_id = c.role_principal_idx0dx0a)x0dx0aSELECT distinct USER_NAME(role_principal_id) RoleNamex0dx0aFROM tree_rolesx0dx0ax0dx0a-- 其他許可權相關基本表x0dx0aselect * from sysusersx0dx0aselect * from syspermissionsx0dx0ax0dx0a-- Who has access to my SQL Server instance?x0dx0aSELECTx0dx0aname as UserName, type_desc as UserType, is_disabled as IsDisabledx0dx0aFROM sys.server_principalsx0dx0awhere type_desc in('WINDOWS_LOGIN', 'SQL_LOGIN')x0dx0aorder by UserType, name, IsDisabledx0dx0ax0dx0a-- Who has access to my Databases?x0dx0aSELECTx0dx0adp.name as UserName, dp.type_desc as UserType, sp.name as LoginName, sp.type_desc as LoginTypex0dx0aFROM sys.database_principals dpx0dx0aJOIN sys.server_principals sp ON dp.principal_id = sp.principal_idx0dx0aorder by UserTypex0dx0ax0dx0aselect * from sys.database_principalsx0dx0ax0dx0a-- Server Rolesx0dx0aselectx0dx0ap.name as UserName, p.type_desc as UserType, pp.name as ServerRoleName, pp.type_desc as ServerRoleTypex0dx0afrom sys.server_role_members rolesx0dx0ajoin sys.server_principals p on roles.member_principal_id = p.principal_idx0dx0ajoin sys.server_principals pp on roles.role_principal_id = pp.principal_idx0dx0awhere pp.name in('sysadmin')x0dx0aorder by ServerRoleName, UserNamex0dx0ax0dx0a-- Database Rolesx0dx0aSELECTx0dx0ap.name as UserName, p.type_desc as UserType, pp.name as DBRoleName, pp.type_desc as DBRoleType, pp.is_fixed_role as IfFixedRolex0dx0aFROM sys.database_role_members rolesx0dx0aJOIN sys.database_principals p ON roles.member_principal_id = p.principal_idx0dx0aJOIN sys.database_principals pp ON roles.role_principal_id = pp.principal_idx0dx0awhere pp.name in('db_owner', 'db_datawriter')x0dx0ax0dx0a-- What can these users do?x0dx0aSELECTx0dx0agrantor.name as GrantorName, dp.state_desc as StateDesc, dp.class_desc as ClassDesc, dp.permission_name as PermissionName ,x0dx0aOBJECT_NAME(major_id) as ObjectName, GranteeName = grantee.namex0dx0aFROM sys.database_permissions dpx0dx0aJOIN sys.database_principals grantee on dp.grantee_principal_id = grantee.principal_idx0dx0aJOIN sys.database_principals grantor on dp.grantor_principal_id = grantor.principal_idx0dx0awhere permission_name like '%UPDATE%'
⑺ 怎麼設置SQL資料庫用戶許可權
-- sqlserver:一、操作步驟
1.
首先進入資料庫級別的【安全性】-【登錄名】-【新建登錄名】
(圖1:新建登錄名)
2.
在【常規】選項卡中,如下圖所示,創建登陸名,並設置默認的資料庫。
(圖2:設置選項)
3.
在【用戶映射】選項卡中,如下圖所示,勾選需要設置的資料庫,並設置【架構】,點擊【確認】按鈕,完成創建用戶的操作
(圖3:選擇對應資料庫)
4.
現在我們就可以對testlog資料庫中的user表進行許可權的設置了,【表】-【
屬性】
(圖4:選擇對應表)
5.
在【許可權】選項卡中,如下圖所示,依此點擊【添加】-【瀏覽】-【選擇對象】
(圖5:設置訪問表的用戶)
6.
在上面點擊【確認】後,我們就可以下面的列表中找到對應的許可權,如果你還想細化到列的許可權的話,右下角還有一個【列許可權】的按鈕可以進行設置,點擊【確認】按鈕就完成了這些許可權的設置了
(圖6:許可權列表)
7.
現在就使用testuser用戶登陸資料庫了,登陸後如下圖所示,現在只能看到一個表了
(圖7:效果)
二、注意事項
1.
在上面的第3步驟中需要注意:如果這里沒有選擇對應的資料庫的話,之後去testlog資料庫中是找不到testuser。
(圖8:找不到testuser用戶)
2.
在上面的第3步驟,設置完testlog數據後,需要點擊【確認】按鈕,完成創建用戶操作,如果這個時候去設置【安全對象】,是無法在【添加】-【特定對象】-【對象類型】-【登陸名】-【瀏覽】中找到剛剛新建的testuser用戶的。
3.
其實在資料庫級別的【安全性】創建的用戶是屬於全局的,當設置了某個資料庫,比如testlog之後,這個用戶就會出現在這個資料庫的【安全性】列表中。
如果刪除testlog這個用戶,會出現下面的提示。刪除了後,這個用戶就無法登陸了。需要去對應的資料庫中刪除用戶,如果沒有刪除又創建,是會報錯的。
(圖9:刪除testuser用戶)
4.
在第6步的【顯式許可權】列表中,如果選擇了【control】這個選項,那麼在【select】中設置查詢【列許可權】就沒有意義了,查詢就不會受限制了。如果設置【列許可權】,在正常情況下會顯示下圖的報錯信息:
(圖10:效果)
5.
在testlog資料庫的【安全性】-【testuser】-【屬性】-【安全對象】-【添加】-【對象類型】這里有更多關於資料庫級別的一些對象類型可以設置。
(圖11:其它對象類型)
⑻ 怎麼用SQL查詢出當前用戶所具有的系統許可權
下面內容供你參考 0414243444546474849 1.查看所有用戶: select * from dba_users; select * from all_users; select * from user_users; 2.查看用戶或角色系統許可權(直接賦值給用戶或角色的系統許可權): select * from dba_sys_privs; select * from user_sys_privs; 3.查看角色(只能查看登陸用戶擁有的角色)所包含的許可權sql>select * from role_sys_privs; 4.查看用戶對象許可權: select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs; 5.查看所有角色: select * from dba_roles; 6.查看用戶或角色所擁有的角色: select * from dba_role_privs; select * from user_role_privs; 7.查看哪些用戶有sysdba或sysoper系統許可權(查詢時需要相應許可權)select * from V$PWFILE_USERS 比如我要查看用戶 wzsb的擁有的許可權: SQL> select * from dba_sys_privs where grantee='WZSB'; GRANTEE PRIVILEGE ADMIN_OPTION------------------------------ ---------------------------------------- ------------WZSB CREATE TRIGGER <a href="/s?wd=NO&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">NO</a>WZSB UNLIMITED TABLESPACE <a href="/s?wd=NO&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">NO</a> 比如我要查看用戶 wzsb的擁有的角色: SQL> select * from dba_role_privs where grantee='WZSB'; GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE------------------------------ ------------------------------ ------------ ------------WZSB DBA <a href="/s?wd=NO&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">NO</a> YES 查看一個用戶所有的許可權及角色select privilege from dba_sys_privs where grantee='WZSB'unionselect privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='WZSB' );
⑼ 如何通過注入SQL語句獲取網站管理許可權及安全措施
一 網站是否存在SQL注入漏洞
網站一般包含一張用戶表(用戶名和密碼)和一張管理員信息表(管理員名稱和密碼), 輸入用戶名和密碼之後, 一般做法是後台都會執行一條SQL語句,
查詢有沒有對應的用戶和密碼, 比如SELECT * FROM SomeTable WHERE UserName = $UserName AND pwd =
$pwd, 如果這條語句返回真, 那麼登錄操作就完成了.
試想一下如果在學號和密碼文本框中輸入or=or, 並提交的話, 上面提到的SQL語句就變成了SELECT * FROM SomeTable WHERE
UserName = or=or AND pwd = or=or, 這個語語句變成了一個邏輯表達式, 表達式包含幾段, 分別為:
1. SELECT * FROM SomeTable WHERE UserName = (假)
or
2. = (真)
or
3. (假)
and
4. pwd = (假)
or
5. = (真)
or
6. (假)
最後整個邏輯表達式為0|1|0&0|1|0, 這個結果為真(在執行到"0|1|..."的時候整個表達式省略號中的就不計算了,
因為"或"前面已經是真), 因此可以登錄成功, 事實上也登錄成功了.
二 破解後台資料庫的原理
在用戶名和密碼的文本框中輸入or=or, 截至上面所示的第2步, 表達式值為真, 因為後面緊接了一個"或", 所以無論在這後面的表達式是什麼,
"真或者假""真或者真"都是為真的. 關鍵就是or=or中間的那個=, =表示一個字元, 永遠為真. 如果我們將這個=改成某個SQL表達式,
如果這個表達式為真, 那麼整個表達式就為真.
後面的幾個步驟要求用戶名和密碼文本框中都輸入同樣的文本, 原因是: 後台的語句格式可能是SELECT * FROM SomeTable WHERE
UserName = $UserName AND pwd = $pwd, 也有可能是SELECT * FROM SomeTable WHERE pwd =
$pwd AND UserName = $UserName, 無論哪一種情況, 只要用戶名和密碼都輸入的文本是一樣的, 只要文本中包含的SQL表達式為真,
那麼整個表達式就為真. 這樣寫帶來的另一個好處是復制粘貼很方便.
通過寫一些SQL表達式來一次一次的測試出資料庫里的內容.
三 獲取後台資料庫的表名
如果將表達式替換為(SELECT COUNT(*) FROM 表名)<>0, 這個表達式用來獲取一個表中有多少條記錄,
需要做的就是猜這個表名是什麼, 猜中了的話, 那麼這個表中的記錄條數肯定就不會等於0, 那麼這個表達式的值就是真的. 常用的表名也就是那麼一些,
一個個的代進去試, 最後發現有個叫做admin的表, 它的欄位不為空. 很顯然, 這個表是用來存放管理員信息的.
四 獲取後台資料庫表的欄位名
現在已經知道這個表叫做admin了, 接下來想辦法得到這個表中的欄位.
把表達式替換成(SELECT COUNT(*) FROM admin WHERE LEN(欄位名)>0)<>0,
這個表達式用來測試admin這個表中是否包含這個欄位. LEN(欄位名)>0表示這個欄位的長度大於0, 在這個欄位存在的情況下,
LEN(欄位名)>0是始終為真的. 如果包含的話這個欄位的話, 整條SELECT語句返回的數字肯定不為0, 也就是說整個表達式為真,
從而得到欄位名.
按照這樣的方法, 靠猜共得出了三個很關鍵的欄位:id, admin, pass.
五 獲取欄位的長度
目前已得到的信息是有個admin表, 表中有id, admin, pass欄位. 後台中存儲用戶名和密碼,
常規做法是存儲它們進行MD5加密後的值(32位), 現在測試一下是不是這樣.
把表達式替換為(SELECT COUNT(*) FROM admin WHERE LEN(欄位名)=32)<>0,
將admin和pass代進去結果是真, 說明後台存儲管理員帳號和密碼用的是加密後32位的欄位.
六 獲取管理員帳號和密碼
MD5加密後的字元串包含32位, 且只可能是由0-9和A-F這些字元組成.
1. 獲取管理員帳號
將表達式改成(SELECT COUNT(*) FROM admin WHERE LEFT(admin,1)=A)>0,
意思是我猜測某個adimin帳號的第一個字元是A, 如果成功則表達式成立. 失敗的話, 把A換成0-9和B-F中的任意字元繼續試, 知道成功. 如果成功了,
我再繼續猜這個帳號的第二個字元, 假如第一個字元是5, 我猜測第二個字元是A, 那將表達式改成(SELECT COUNT(*) FROM admin WHERE
LEFT(admin,2)=5A)>0. 可以發現字元串中LEFT()函數中的1變成了2, 另外5A代碼左邊兩個字元是5A, 其中5已經確定下來了.
就這樣重復不斷的猜, 直到得到整個32位的MD5加密後的字元串.
2. 獲取該帳號對應的的id
為什麼需要獲取該帳號對應的id? 原因如下: 按照上一條是可以得到帳號和密碼的, 但一張表中可以有若干個管理員帳號和密碼, 怎麼對應起來呢?
需要通過id. 一個id對應一條記錄, 一條記錄只有一對匹配的帳號和密碼.
將表達式改成(SELECT COUNT(*) FROM admin WHERE LEFT(admin,1)=5 AND id=1)>0,
上一條假設了某帳號第一個字元是5, 只要這個表達式中的"AND id = 1"正確, 那麼就可以得知該帳號的id是1. 如果不是1,
換成其它的數字一個個的試一試.
3. 獲取帳號對應的密碼
現在已經猜出了某管理員的帳號, 並且知道對應的id是多少(假設得出來是4), 現在只要得到該條記錄中記錄的密碼是什麼. 同理,
將表達式改成(SELECT COUNT(*) FROM admin WHERE LEFT(pass,1)=A AND id=4)>0,
注意id已經是知道了的4, 現在要一個個的猜pass中從第1個到第32個字元是什麼, 方法同"獲取管理員帳號"方法.
最後可以得到一個32位的MD5加密後的字元串(密碼).
*注: 如果嫌手工得到每個字元是什麼太麻煩, 可以自己用C#寫一個程序, 模擬一下登錄, 通過控制一個循環, 可以很快得到結果.
七 將MD5加密後的帳號和密碼轉成明文
網上有一些網站資料庫里存儲了海量(幾萬億條)的MD5加密後的暗文對應的明文, 只需輸入你需要查找的MD5加密後的字元串就可以查看到明文是什麼.
⑽ sql 中如何設置許可權
在Management Studio中的表上右鍵選屬性(Properties),左邊選許可權(Permissions),右邊中間添加和選中某個User或Role,下面選中或移除某個許可權。同樣你可用標準的賦權語句來實現:如
grant/revoke select on 表名 to 用戶名。