【问题标题】:What's wrong? | MySQL怎么了? | MySQL
【发布时间】:2020-07-01 23:36:09
【问题描述】:

尝试编写用于检查的存储函数是否已验证帐户。我想在视图中使用它。

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`%` 
    SQL SECURITY DEFINER
VIEW `Admin_Departaments` AS
    SELECT 
        `Departaments`.`Id` AS `Id`,
        `Departaments`.`Name` AS `Name`,
        `Departaments`.`Email` AS `Email`,
        ST_ISEMPTY(`Departaments`.`EmailVerificationToken`) AS `IsVerified`
    FROM
        `Departaments`

以下显示错误和代码语句。

错误 1227:访问被拒绝;你需要(至少一个)超级 此操作的权限

SQL 语句:

CREATE DEFINER=`%`@`%` FUNCTION `IsEmpty`(str tinytext) RETURNS tinyint(1)
BEGIN
IF str = '' THEN
RETURN true;
else Return false;
END IF;
END

错误 1418:此函数没有 DETERMINISTIC、NO SQL 或 READS 声明中的 SQL DATA 和二进制日志记录已启用(您可能 想要使用不太安全的 log_bin_trust_function_creators 变量)

SQL 语句:

CREATE DEFINER=`root`@`%` FUNCTION `IsEmpty`(str tinytext) RETURNS tinyint(1)
BEGIN
IF str = '' THEN
RETURN true;
else Return false;
END IF;
END

错误 1419:您没有 SUPER 权限并且二进制日志记录是 启用(您可能想要使用不太安全的 log_bin_trust_function_creators 变量)

SQL 语句:

CREATE DEFINER=`root`@`%` FUNCTION `IsEmpty`(str tinytext) RETURNS tinyint(1)
deterministic
BEGIN
IF str = '' THEN
RETURN true;
else Return false;
END IF;
END

更多信息:
- 数据库存储在谷歌云平台
-root用户是谷歌提供的主要用户
-我已经尝试从 sudo 运行 mysql 的 gcloud shell 更改 root 权限,但得到了error
-root 权限都在 FILE 之外。角色除了DBA.2

【问题讨论】:

  • 请在标题中描述问题的性质,而不是您有问题。当您在 Stack Overflow 上发帖时,就暗示了这一点。

标签: mysql google-cloud-platform google-cloud-sql


【解决方案1】:

如文档Cloud SQL FAQ中所述

Cloud SQL 不支持 SUPER 权限

这里可行的解决方案是set up MySQL instance on a Compute Engine instance。这样做您将能够在您的实例上拥有 SUPER USER 权限,并且您将克服此错误。

【讨论】:

  • 好的,但是我该如何解决这个问题呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 2012-09-05
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多