2017-06-07 71 views
3

是否有辦法確定MySQL是否已在mysql中使用skip-grant-tables啓動?我找不到任何東西show variables確定MySQL是否已使用skip-grant-tables啓動

我想添加一個警衛到啓動sql腳本,以防止UDF函數嘗試創建時,他們不能(例如碼頭啓動運行安裝程序等)

謝謝

回答

2

似乎並不存在一個變量來確定。

下面的存儲過程可以給你一些建議:

DELIMITER // 

DROP PROCEDURE IF EXISTS `_`.`skip_grant_tables`// 

CREATE PROCEDURE `_`.`skip_grant_tables`(OUT `skip_grant` BOOL) 
BEGIN 
    DECLARE `skip_grant_text` TEXT; 
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION 
    BEGIN 
    GET DIAGNOSTICS CONDITION 1 `skip_grant_text` = MESSAGE_TEXT; 
    END; 
    SET `skip_grant` := 0; 
    GRANT SELECT ON *.* TO ''@''; 
    IF (`skip_grant_text` REGEXP '--skip-grant-tables option') THEN 
    SET `skip_grant` := 1; 
    END IF; 
END// 

DELIMITER ; 

mysql> CALL `_`.`skip_grant_tables`(@`skip_grant_tables?`); 
Query OK, 0 rows affected (0.00 sec) 

mysql> SELECT @`skip_grant_tables?`; 
+-----------------------+ 
| @`skip_grant_tables?` | 
+-----------------------+ 
|      1 | 
+-----------------------+ 
1 row in set (0.00 sec) 
+0

聰明......對不起已故的接受 - 我一直在休假。 – Stephen

+0

@Stephen:希望你喜歡你的假期! – wchiquito

相關問題