programing

MariaDB 프로시저 및 기능 권한

javajsp 2023. 11. 5. 11:02

MariaDB 프로시저 및 기능 권한

안녕하세요 여러분, 이제 어떻게 해야 할지 모르겠어요.데이터베이스를 원격으로 서버로 가져왔습니다.

절차는 이렇습니다. db_hrmis@127.0.0.1:

DELIMITER //
CREATE DEFINER=`db_hrmis`@`127.0.0.1` PROCEDURE `proce_give_employee_leave_credits`()
BEGIN
UPDATE inf_employee_leaves lv SET lv.earnings = (lv.leaveMinutesPerMonth + lv.earnings), lv.allowedLeaveInMinutes = ((lv.noOfDays - (CONVERT((lv.earnings/480), DECIMAL(10,2)))) * 480), lv.noOfDays = CONVERT((lv.allowedLeaveInMinutes / 480), DECIMAL(10,2)) WHERE MONTH(lv.lastUpdated) <> MONTH(CURDATE());
END//
DELIMITER ;

원격으로 액세스하기 때문에 서버에서 데이터베이스 사용자도 생성했습니다(예: db_hrmis@myipaddress).문제는 프로시저를 가져온 후 정의자가 변경되어 프로시저를 변경할 수 없으며, 이를 내보내려고 할 때 mysql 덤프는 다음과 같은 내용만 표시된다는 것입니다.

DELIMITER //
END//
DELIMITER ;

빈 구조, 권한 부여(execute, 루틴 생성, 루틴 변경)를 시도했지만 아무것도 작동하지 않는 것 같습니다.

여기 현재 상태의 스크린샷이 있습니다.

보시다시피 정의는 127.0.0.1을 명시하지 않으며 "이 루틴에 대한 권한이 없습니다" 문제가 있습니다. 권한 문제라면 사용자에게 어떤 권한을 부여해야 합니까?

도와주셔서 정말 감사합니다.

mysql 사용자가 당신의_db.table의 특정 sp에 대한 실행 권한이 없기 때문일 수 있습니다.

출력을 올려주시겠습니까?# mysql> show grants for <your user>;

또는 모든 데이터베이스에서 해당 사용자에게 전체 권한을 부여한 후 절차를 실행하여 이를 확인할 수 있습니다.

# mysql> grant all privileges on *.* to 'user'@'host';
# mysql> flush privileges;

언급URL : https://stackoverflow.com/questions/49854580/mariadb-procedure-and-functions-privileges