我无法使用我的用户在aws rds上创建函数

qpgpyjmq  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(425)

错误代码:1227拒绝访问;此操作需要(至少一个)超级权限
得到上述错误后,在我的sqlyog社区mysq上有三个用户可见。sys@localhost
rdsadmin@localhost
root@%<

agxfikkp

agxfikkp1#

--这是我的用户
即使我设法给privillegesforcreate选项,仍然不能创建我的函数我的函数开始如下

DELIMITER $$

USE `mydb`$$

DROP FUNCTION IF EXISTS `getval`$$

CREATE DEFINER=`root`@`vfinances-dev.cf88ibo44fqq.ap-south-1.rds.amazonaws.com` FUNCTION `nextval`(`input_name` VARCHAR(100)) RETURNS BIGINT(20)
BEGIN
    DECLARE cur_val BIGINT(20);

    SELECT value INTO cur_val FROM data WHERE name = input_name;

    RETURN cur_val;
END$$

DELIMITER ;
xfyts7mz

xfyts7mz2#

CREATE DEFINER=`root`@`xxxxxx.hhhhhhhh.ap-south-1.rds.amazonaws.com` FUNCTION ...

你的问题出在 DEFINER 指令。
正如你已经指出的,你的帐户不是这个。。。

`root`@`xxxxxx.hhhhhhhh.ap-south-1.rds.amazonaws.com`

…就是这个。。。

`root`@`%`

在mysql中,帐户是通过用户名和主机模式的组合来标识的。。。你不能指定 DEFINER 作为别人而不是你自己,除非你有 SUPER 特权,因为这将是一个完全开放的特权提升攻击向量。
拆下 DEFINER 从您的语句中,由于它没有任何用途——定义者在 CREATE 语句被执行——或者正确地设置它。

相关问题