【发布时间】: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