MariaDB процедуры и функции привилегии

0

Добрый день, все, я не могу понять, что делать дальше. Я удаленно импортировал свою базу данных на сервер.

Итак, вот моя процедура, у меня есть определитель [email protected]:

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 dump показывает только как это

DELIMITER //
END//
DELIMITER ;

пустую структуру, я попробовал предоставить разрешения (выполнить, создать процедуру, изменить процедуру), но ничего не работает.

вот скриншот его текущего состояния. Изображение 174551

как вы можете видеть, определители не заявляют 127.0.0.1, и у меня есть проблема "У вас нет прав на эту процедуру", если это проблема с привилегиями, какую привилегию я должен предоставить пользователю?

Большое вам спасибо за помощь.

Теги:
mariadb
centos

1 ответ

0

Возможно, это связано с тем, что у пользователя mysql нет привилегий на выполнение этого конкретного sp на вашей_панели.

Не могли бы вы вывести вывод # mysql> show grants for <your user>;

Или вы можете подтвердить это, выполнив процедуру после предоставления полной привилегии для этого конкретного пользователя во всех базах данных.

# mysql> grant all privileges on *.* to 'user'@'host';
# mysql> flush privileges;
  • 0
    Пользователь [email protected] и db_hrmis @ ipaddress имеют одинаковые права, GRANT SUPER ON . TO [email protected] ИДЕНТИФИЦИРОВАНО ПАРОЛЕМ 'passwordhere'; ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА db_hrmis. * TO db_hrmis @ ipaddress;
  • 0
    Привилегии CREATE ROUTINE, ALTER ROUTINE, EXECUTE и GRANT применяются к хранимым подпрограммам (функциям и процедурам). {GRANT CREATE ROUTINE НА mydb. * TO 'someuser' @ 'somehost'; GRANT EXECUTE ПО ПРОЦЕДУРЕ mydb.myproc TO 'someuser' @ 'somehost'; } этого будет достаточно для запуска sp на определенной базе данных.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню