mysql # 1227-访问被拒绝;要执行此操作,您需要(至少一个)SUPER权限

ubby3x7f  于 2022-12-22  发布在  Mysql
关注(0)|答案(6)|浏览(549)

Hello, I am currently having an issue with MySQL!

What's going wrong here? I am a cPanel user, and yes I have searched this and found no definitive answers. It appears this is more specific than other people with the same error codes issues. Please add a detailed response that I can follow along with! P.s I am using a shared hosting account.

DELIMITER $$--
-- Functions
--
CREATE DEFINER =  `root`@`localhost` FUNCTION  `fnc_calcWalkedDistance` (

`steamid64` BIGINT UNSIGNED
) RETURNS INT( 10 ) UNSIGNEDNO SQL BEGIN DECLARE finished INTEGER DEFAULT 0;

DECLARE distance INTEGER DEFAULT 0;

DECLARE x1, x2, z1, z2 FLOAT;

DECLARE curs CURSOR FOR SELECT x, z
FROM log_positions
WHERE  `steamid` = steamid64
ORDER BY  `timestamp` DESC ;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished =1;

OPEN curs;

FETCH curs INTO x1, z1;

SET x2 = x1;

SET z2 = z1;

calculate : LOOPFETCH curs INTO x1, z1;

IF finished =1 THEN LEAVE calculate;

END IF ;

SET distance = distance + SQRT( POW( x2 - x1, 2 ) + POW( z2 - z1, 2 ) ) ;

-- SET distance = distance + 1;
SET x2 = x1;

SET z2 = z1;

END LOOP calculate;

CLOSE curs;

RETURN distance;

END$$

Here is the error code:

MySQL said: Documentation

#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation
im9ewurl

im9ewurl1#

It means you don't have privileges to create the trigger with root@localhost user..
try removing definer from the trigger command:
CREATE DEFINER = root @ localhost FUNCTION fnc_calcWalkedDistance

1qczuiv0

1qczuiv02#

Simply remove "DEFINER= your user name @ localhost " and run the SQL from phpmyadminwill works fine.

von4xj4u

von4xj4u3#

In case you are uploading an sql file on cpanel, then try and replace root with your cpanel username in your sql file.
in the case above you could write
CREATE DEFINER = control_panel_username @ localhost FUNCTION fnc_calcWalkedDistance
then upload the file. Hope it helps

sz81bmfz

sz81bmfz4#

remove DEFINER= root @ localhost from all calls including procedures

bzzcjhmw

bzzcjhmw5#

变更

CREATE DEFINER =  `root`@`localhost` FUNCTION  `fnc_calcWalkedDistance` (

签署人

FUNCTION  `fnc_calcWalkedDistance` (
btqmn9zl

btqmn9zl6#

Either remove the line CREATE DEFINER = root@localhost or change it to CREATE DEFINER = <mysqluser>@<mysqlhost>
If you delete the DEFINER attribute, the default will be the current user account.
Note: DEFINER is an optional attribute for defining a stored procedure or function.

相关问题