公司突然來個需求,必須限制 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...