老早就有人提出來過了, 不是什麼新技術,寫在這裡當備忘而已。沒做過多的測試,有些東西也是按我自己的理解說的,有錯誤請指出。
若使用比如
use test;
delimiter //
create procedure readf(f varchar(100))
begin
select load_file(f);
end //
delimiter ;
然後使用乙個沒有file許可權但是有擁有:
call test.readf('c:\\boot.ini')
可以發現檔案照樣被讀出來了。。
利用drop procedure readf;
來刪除這個儲存過程
下面這段**也許可以說明一些什麼:
use test;
delimiter //
create procedure whoami()
begin
select concat('user():',user()) as 'whoami' union select concat('current_user():',current_user());
end //
delimiter ;
以結果是:
| whoami |
| user():root@localhost |
| current_user():root@localhost |
再以ninty賬號來執行這個儲存過程:
| whoami |
| user():ninty@localhost |
| current_user():root@localhost |
ps:可以通過show grants來看看自己是否有
檢視1.
select * from mysql.proc -- (mysql中的函式就儲存在mysql.func表裡面)預設只有root使用者才可以查詢。
2.select routine_schema,routine_name,definer,routine_definition from information_schema.routines; --誰都可以查
3.show procedure status --這個只有當當前賬號有execute許可權的時候,才能夠列出儲存過程。如果擁有全域性的execute許可權,就可以看到所有的儲存過程,如果只擁有當前庫的execute許可權,就只能看到當前庫裡面的儲存過程。
sql server 05得到使用者自定義儲存過程:
select [name] from sys.all_objects where [type]='p' and charindex('sp',[name])<>1 and charindex('xp',[name])<>1
或者可以查詢sys.procedures,不過聽人說好像因為一些未知的原因,從這裡查出的資料並不全。。
MYSQL儲存過程的越權執行
若使用root 使用者來建立乙個儲存過程 然後賦予另乙個使用者此儲存過程的執行許可權,則此使用者將可以進行一些root 賬號才可以進行的操作。但是這些操作是預先被定義在儲存過程裡面的。比如root 在test 資料庫建立了乙個讀取檔案的儲存過程readf 1 2 3 4 5 6 7 use test...
mysql 分號 儲存過程 Mysql之儲存過程
1.進入到資料庫中檢視 是否有相關的儲存過程資料 show procedure status where db test 2.建立簡單的儲存過程 create procedure hi select hello 3.呼叫儲存過程 call hi 事例 三 mysql 儲存過程特點 建立 mysql ...
mysql怎麼建儲存過程 mysql儲存過程怎麼寫
mysql 儲存過程是一些 sql 語句的集合,比如有的時候我們可能需要一大串的 sql 語句,或者說在編寫 sql 語句的過程中還需要設定一些變數的值,這個時候我們就完全有必要編寫乙個儲存過程。下面我們來介紹一下如何建立乙個儲存過程。語法格式 可以使用 create procedure 語句建立儲...