无法在Azure Database for MySql上创建存储过程

时间:2018-05-28 08:51:51

标签: mysql azure azure-sql-database

我已经为MySQL配置了一个Azure数据库,并且能够成功连接到它。我也能够创建新表并在这些表上运行查询,但在创建存储过程时,我收到以下错误: -

Er 1227. Access error Code: denied; you need (at least one of) the SUPER privilege(s) for this operation

尝试了示例程序

DELIMITER $$

CREATE DEFINER='user'@'server'

PROCEDURE `sp_getComplaintsByBranchCode`(
  in branchCode Varchar(50),
  in companyCode Varchar(50),
  in RowsPerPage INT, 
  in pageNumber INT
)
NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
BEGIN
DECLARE pageFrom INT;
DECLARE rowLimit INT;
DECLARE companyid varchar(50);
DECLARE branchid varchar(50);
DECLARE offval INT;

SET pageFrom = pageNumber;
SET rowLimit = RowsPerPage;
SET branchid = branchCode;
SET companyid = companyCode;
SET offval = ((pageFrom-1) * rowLimit);

select * from complaints c
WHERE c.branchCode = branchid AND c.fb_companyID = companyid
ORDER BY added_on DESC limit rowLimit OFFSET offval;

END

我检查了用户权限,初始设置期间创建的数据库管理员用户没有超级权限。唯一具有超级权限的用户是“azure_superuser”,我没有连接密码。请帮助我解决以下问题或向我们提供一些有用的参考资料: -

1)如何连接'azure_superuser'OR 2)如何在没有以root用户身份登录的情况下向管理员用户授予超级用户权限。 3)如何使用super_priviledge为“N”的用户在Azure数据库中为MySQL创建存储过程。

一些参考文献: -

Stack Overflow Question

Github

1 个答案:

答案 0 :(得分:1)

请从声明中删除DEFINER条款。它应该工作。

Azure数据库for MySQL不支持SUPER权限。您可以获得的最接近的是创建另一个管理员级别用户,该用户具有与您创建的服务器管理员相同的权限,以便您可以运行:

CREATE USER 'testuser'@'%' <span>IDENTIFIED </span>BY 'your_password_here';

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'testuser'@'%' WITH GRANT OPTION;