确定MySQL是否已使用skip-grant-tables启动

时间:2017-06-07 15:19:32

标签: mysql mysql-5.7

有没有办法判断MySQL是否已在mysql中使用skip-grant-tables启动?我在show variables

中找不到任何内容

我想在启动sql脚本中添加一个保护措施,以防止UDF函数在无法创建时尝试创建(例如,docker启动正在运行安装程序等)

由于

1 个答案:

答案 0 :(得分: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)