mariadb на rds при создании новой процедуры создает нового пользователя @ ip.ec2.host - PullRequest
0 голосов
/ 27 июня 2019

У нас есть экземпляр mariadb на rds, который вызывается из bash-скрипта. Внутри скрипта мы создаем procedure, который удаляется после завершения скрипта .sql. Пользователь mysql был настроен как myUser @ % с пользовательскими привилегиями

delimiter |
DROP PROCEDURE IF EXISTS myTmpProc |
CREATE PROCEDURE myTmpProc()
BEGIN
... --code goes here
-- Execute the stored procedure 
CALL myTmpProc() | 
-- Don't forget to drop the stored procedure when you're done! 
DROP PROCEDURE IF EXISTS myTmpProc | 
DELIMITER ; 

Сценарий создания, запуска, удаления детали выполняется, как ожидается, и завершается.

Однако этот процесс создает нового пользователя myUser @ x.x.x.x экземпляра ec2, выполняющего сценарий. У этого пользователя нет никаких привилегий.

Когда мы в следующий раз запускаем скрипт, он запускается как новый пользователь и завершается ошибкой, так как у этого пользователя нет привилегий.

Это ожидаемое поведение при создании нового пользователя с тем же именем пользователя, но с IP-адресом ec2 при создании новой процедуры?

Как мы можем остановить создание пользователя?

1 Ответ

1 голос
/ 28 июня 2019

(слишком большой для комментария) (из журнала изменений)

----- 2018-10-26 MariaDB 5.5.62 и 2018-09-25 MariaDB 10.2.18 - -----

Ошибка # 27407480: AUTOMATIC_SP_PRIVILEGES ТРЕБУЕТ НУЖНЫ ВСТАВИТЬ ПРИВИЛЕГИИ ДЛЯ ТАБЛИЦЫ MYSQL.USER

----- 2018-07-27 8.0.12 Общая доступность и 2018-07-27 5.7.23 Общая доступность и 2018-07-27 5.6.41 Общая доступность и 2018-07-27 5.5.61 Общая наличие - - -----

При включенных automatic_sp_privileges привилегии EXECUTE и ALTER ROUTINE не были правильно предоставлены обычным создателям. (Ошибка # 27407480)

----- 2017-04-10 8.0.1 Milestone Development - исправлены ошибки - -----

Когда системная переменная automatic_sp_privileges была включена, она не имела ожидаемого эффекта для анонимных пользователей. (Ошибка № 20266641)

----- 2015-04-08 5.7.7 Кандидат на выпуск - Исправлены ошибки - Репликация -----
----- 2015-04-06 5.6.24 Общая доступность - Исправлены ошибки - Репликация -----

Когда установлена ​​переменная automatic_sp_privileges , сервер автоматически предоставляет привилегии EXECUTE и ALTER ROUTINE создателю хранимой подпрограммы, если пользователь это делает еще не имеют этих привилегий. Когда привилегированный пользователь создает процедуру с DEFINER в качестве непривилегированного пользователя на главном сервере, текущий пользователь считается привилегированным пользователем, а таблица mysql.procs_priv не обновляется. Когда такой оператор был реплицирован на ведомое устройство, непривилегированный DEFINER считался текущим пользователем на ведомом устройстве, и привилегии распределялись. Это вызвало разницу в привилегиях, которые были распределены на ведущем и ведомом устройствах. Исправление гарантирует, что создатель хранимой подпрограммы будет добавлен в двоичный журнал, и подчиненное устройство теперь сначала проверяет, существует ли пользователь, прежде чем предоставлять привилегии. Для обеспечения совместимости с предыдущими версиями DEFINER используется, когда INVOKER недоступен. Как часть этого исправления, анонимные пользователи могут использоваться для репликации от главного к подчиненному. (Ошибка № 20049894)

----- еще не выпущен 5.0.8 - Исправлены ошибки - -----

Предоставление и отзыв привилегий для хранимой подпрограммы выполнялись при запуске сервера с - skip-grant-tables даже после оператора SET @@ GLOBAL.automatic_sp_privileges = 1; был выполнен. (Ошибка № 9993)

...