2017-06-07 28 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

相关问题