我已配置 Azure Database for MySQL 并且能够成功连接到它。我还可以创建新表并在这些表上运行查询,但是在创建存储过程时,出现以下错误:-
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
我检查了用户权限,在初始设置期间创建的数据库管理员用户没有 super 权限。唯一具有 super 权限的用户是“azure_superuser”,我没有它的连接密码。请帮助我解决以下问题或向我指出一些可以提供帮助的引用资料:-
1) 如何连接到“azure_superuser”或 2)如何在不以 root 用户身份登录的情况下向我拥有的管理员用户授予 super 用户权限。 3) 如何让 super_privilege 为“N”的用户在 Azure Database for MySQL 中创建存储过程。
一些引用:-
最佳答案
请从语句中删除 DEFINER 子句。它应该可以工作。
Azure Database 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;
关于mysql - 无法在 Azure Database for MySql 上创建存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50562480/