SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 09.10.2018 18:43:31

platedz
Активист
Зарегистрирован: 27.03.2012
Сообщений: 285

Как сделать проверку прав доступа на выполнение триггеров и процедур

Как сделать проверку прав доступа на выполнение триггеров и процедур, а также проверку наличия самих триггеров и процедур? Те. скажем если триггер или процедура есть, то не добавляю ее


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#2 10.10.2018 12:33:28

platedz
Активист
Зарегистрирован: 27.03.2012
Сообщений: 285

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

Боги MySQL, явите мне свои знания, пожалуйста.


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#3 10.10.2018 12:41:34

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5516

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

1. на выполнение триггеров отдельных прав нет, если есть права на изменение данных, то триггеры автоматически будут выполняться
на выполнение процедуры - EXECUTE

2. https://dev.mysql.com/doc/mysql/en/routines-table.html

Неактивен

 

#4 10.10.2018 12:45:58

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5516

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

проверка прав - show grants

Неактивен

 

#5 10.10.2018 13:35:47

platedz
Активист
Зарегистрирован: 27.03.2012
Сообщений: 285

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

Спасибо большое, а как проверить есть триггер или процедура или нету. Чтобы ошибку не выдало и не выбило во время выполнения?
Еще такой вопрос работаю через heidiSQL и смотрю те же триггеры прописываются в таблице information_schema и отдельно вижу их с своей таблице. Может это ссылка на нее я не знаю. Но скажем если пользователь очистил таблицу, не выйдет так, что триггер не будет создаваться удаляться или работать, из-за того, что он частично удален.


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#6 10.10.2018 13:44:35

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5516

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

platedz написал:

Спасибо большое, а как проверить есть триггер или процедура или нету. Чтобы ошибку не выдало и не выбило во время выполнения?

проверка существования через information_schema

platedz написал:

если пользователь очистил таблицу, не выйдет так, что триггер не будет создаваться удаляться или работать, из-за того, что он частично удален.

нет, очистка таблицы не может частично удалить триггер

Неактивен

 

#7 10.10.2018 13:57:14

platedz
Активист
Зарегистрирован: 27.03.2012
Сообщений: 285

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

А к information_schema у пользователя же тоже может не быть доступа?


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#8 10.10.2018 16:08:54

platedz
Активист
Зарегистрирован: 27.03.2012
Сообщений: 285

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

Подскажите, а как создать триггер в хранимой процедуре?


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#9 10.10.2018 21:48:51

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5516

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

platedz написал:

А к information_schema у пользователя же тоже может не быть доступа?

ёмнип, нет.
она доступна всегда

platedz написал:

Подскажите, а как создать триггер в хранимой процедуре?

crete trigger ...
с использованием prepare, см https://webew.ru/articles/178.webew

Неактивен

 

#10 11.10.2018 12:57:44

platedz
Активист
Зарегистрирован: 27.03.2012
Сообщений: 285

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

Спасибо огромное. Попробую


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#11 11.10.2018 14:28:33

platedz
Активист
Зарегистрирован: 27.03.2012
Сообщений: 285

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

Что-то не выходит, даже вне процедуры

SET @var = concat('DELIMITER | DROP TRIGGER IF EXISTS `trig`; CREATE TRIGGER `trig` BEFORE INSERT ON `table` FOR EACH ROW BEGIN IF (select count(*) from `table`)>99 THEN SIGNAL SQLSTATE \'45000\';END IF;END|');
PREPARE zxc FROM @var;
EXECUTE zxc;

Хотя так работает

DELIMITER | DROP TRIGGER IF EXISTS `trig`; CREATE TRIGGER `trig` BEFORE INSERT ON `table` FOR EACH ROW BEGIN IF (select count(*) from `table`)>99 THEN SIGNAL SQLSTATE '45000';END IF;END|

Подскажите, пожалуйста. В чем беда?


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#12 11.10.2018 14:58:05

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5516

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

был не прав, оказывается триггер нельзя создать внутри процедуры
Error Code: 1303. Can't create a TRIGGER from within another stored routine

Неактивен

 

#13 11.10.2018 15:03:51

platedz
Активист
Зарегистрирован: 27.03.2012
Сообщений: 285

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

Так он и без процедуры не создается. Даже просто через  PREPARE. Пишет ошибка синтаксиса


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#14 11.10.2018 15:33:24

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5516

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

потому что DELIMITER внутри PREPARE нельзя

Неактивен

 

#15 11.10.2018 16:15:54

platedz
Активист
Зарегистрирован: 27.03.2012
Сообщений: 285

Re: Как сделать проверку прав доступа на выполнение триггеров и процедур

Ясно и на том спасибо. Т.е. триггер в процедуре никак создать не получится.


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson