限制 sa 登入sybase ASE

2021-04-18 03:14:57 字數 1624 閱讀 1733

公司突然來個需求,必須限制 sa 登入sybase ase

我想到的方法如下,利用sybase ase的特性提供的儲存過程 sp_modifylogin,對登入的合法性進行驗證。

-- 先新建立乙個許可權足夠高的使用者,將來當伺服器有問題時,好用來恢復sa

-- 接下來將sa的login script繫結

use master

godrop procedure sp_bindlogin

go-- 儲存過程名字弄個像系統的一樣

create procedure sp_bindlogin

asbegin

declare  @hostname     varchar(100)

declare  @program_name varchar(100)

declare  @ipaddr       varchar(100)

declare  @new          datetime

select @hostname     = hostname,

@program_name = program_name,

@ipaddr       = ipaddr

from master..sysprocesses

where spid = @@spid

-- 登入機器限定

if @hostname != '機器名'

begin

shutdown with nowait

end-- 登入機器ip限定

if @ipaddr != '機器ip'

begin

shutdown with nowait

end-- 登入應用程式限定

if @program_name in ('sql_advantage', 'isql')

begin

shutdown with nowait

endselect @new = getdate()

-- 登入時間限定

if @new >= '20080808'

begin

shutdown with nowait

endend

gosp_hidetext sp_bindlogin

gosp_modifylogin sa, 'login script', sp_bindlogin

go經過以上處理,sa只能在本機,並且不能使用 isql 、sqladv ,在 20080808 之前 登入資料庫。

這裡的邏輯是可以自由編寫的。

這裡的合法性驗證不通過的處理方法是 shutdown 。

可以把 shutdown 換成以下儲存過程。 這樣就殺掉了自己。不會影響服務,只是需要做一些額外的配置。

drop procedure sp_killme

gocreate procedure sp_killme

asbegin

declare  @cmd     varchar(100)

select @cmd = 'kill ' + convert(varchar(20), @@spid)

exec sp_remotesql 'local', @cmd

endgo

sp_hidetext sp_killme

go

SYBASE ASE關於sa密碼遺忘的處理

sa 密碼忘記解決之道 su sybase cd ase install vi run etoh2 在檔案的末尾加入 psa 停止原資料庫服務 由於密碼遺忘,所以只能通過kill程序停止服務 重新啟動資料庫服務 www.2cto.com startserver f run etoh2 在啟動資訊中查...

SQL Server 2016 配置 SA 登入

tips 在win10中查詢sql server 2016配置管理器,用來開啟sql server網路配置,啟用例項tcp ip協議和name pipe。windows 10 要開啟 sql server 配置管理器,請在 起始頁 中鍵入 sqlservermanager13.msc 適用於 sql...

SQL SERVER 2005 sa登入失敗

1.用windows身份驗證登陸 這個應該是不會存在問題的,在新安裝好例項 sql server 的情況下,windows身份驗證是不可能被禁用的 安裝過程中沒有可以設定禁用windows身份驗證的地方 manage studio 選單 檔案 連線物件資源管理器 身份驗證中選擇 windows au...