MySQL儲存程式許可權控制

2021-08-29 14:25:42 字數 1898 閱讀 6697

mysql儲存程式許可權控制

mysql5.0引入了一些管理儲存程式的許可權:

[code]

create routine: 允許使用者建立新的儲存程式

alter routine: 允許使用者修改security mode/sql mode/comment

execute: 允許使用者只需儲存程式

[/code]

給使用者賦予許可權:

[code]

grant create routine on mydatabase.* to sp_creator;

grant alter routine on mydatabase.* to sp_creator;

grant execute on mydatabase.* to sp_creator;

grant execute on procedure mydatabase.test1 to sp_creator;

[/code]

儲存程式的執行安全模式:

[code]

sql security definer: 預設模式,儲存程式的定義者才能執行

sql security invoker: 呼叫者都可以執行,但是許可權細粒度的控制轉交到儲存程式裡的sql語句的執行許可權

[/code]

儲存程式裡封裝訪問許可權的例子:

[code]

create procedure sp_employee_list(in_department_id decimal(8,0)

sql security definer reads sql data

begin

declare l_user_name varchar(30);

declare l_not_found int default 0;

declare l_department_name varchar(30);

declare l_manager_id int;

declare user_csr cursor for

select d.department_name, e.manager_id

from departments d join employees e using(department_id)

where db_user=l_user_name;

declare continue handler for not found set l_not_foun=1;

/* strip out the host from the user name */

select substr(user(),1,instr(user(), '@')-1)

into l_user_name;

open user_csr;

fetch user_csr into l_department_name, l_manager_id;

close user_csr;

if l_department_name='payroll' or l_manager_id in (0, 1) then

select surname, firstname, salary

from employees

where department_id=in_department_id

order by employee_id;

else

/* not authorized to see salary */

select surname, firstname, '******xx' as salary

from employees

where department_id=in_department_id

order by employee_id;

end if;

end;

[/code]

mysql 許可權控制

mysql許可權檢查原理 使用者 伺服器,分為兩個階段 1.使用者有沒有許可權連線上來 2.有沒有許可權執行此操作 增刪查改 對於1 伺服器如何判斷使用者有沒有許可權連線 根據host,user,password這三個引數判斷的,使用者的這三個資訊儲存在mysql.user表中 修改host域,使i...

mysql 許可權控制

1 mysql的許可權是,從某處來的使用者對某物件的許可權。2 mysql的許可權採用白名單策略,指定使用者能做什麼,沒有指定的都不能做。3 許可權校驗分成兩個步驟 a 能不能連線,檢查從 來,使用者名稱和密碼,常見錯誤 error 1045 28000 access denied for user...

mysql 許可權管理無效 mysql 許可權控制筆記

階段1 伺服器檢查是否允許你連線。階段2 假定你能連線,伺服器檢查你發出的每個請求。看你是否有足夠的許可權實施它。例如,如果你從資料庫表中選擇 select 行或從資料庫刪除表,伺服器確定你對錶有select許可權或對資料庫有drop許可權。1.許可權檢視 mysql show grants for...