Назад | Перейти на главную страницу

Привилегии MySQL, необходимые для GRANT EVENT, EXECUTE, LOCK TABLES и TRIGGER

У меня есть аккаунт, user_a, и я хотел бы предоставить все доступные разрешения для some_db к user_b. Я пробовал следующий запрос:

GRANT 
    ALTER, ALTER ROUTINE, 
    CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, 
    DELETE, DROP, EVENT, EXECUTE, 
    INDEX, INSERT, LOCK TABLES, 
    REFERENCES, SELECT, SHOW VIEW, 
    TRIGGER, UPDATE 
ON  `some_db`.* TO 'user_b'@'%' WITH GRANT OPTION

Результат:

Доступ запрещен для пользователя 'user_a' @ '%' к базе данных 'some_db'

Некоторые эксперименты показали мне, что единственные разрешения моей учетной записи (user_a) не может предоставить EVENT, EXECUTE, LOCK TABLES, и TRIGGER.

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

Если я сбегу SHOW GRANTS, Я получаю такой вывод:

"GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'user_a'@'%' IDENTIFIED BY PASSWORD '1234567890abcdef' WITH GRANT OPTION"
"GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `some_other_unrelated_db`.* TO 'user_a'@'%'"
"GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `another_unrelated_db`.* TO 'user_a'@'%' WITH GRANT OPTION"

С GRANT OPTION привилегии, вы можете предоставлять только те привилегии, которые у вас есть. Таким образом, следующие привилегии не могут быть предоставлены user_b: СОБЫТИЕ, ВЫПОЛНИТЬ, БЛОКИРОВАТЬ ТАБЛИЦЫ, ТРИГГЕР, ОБНОВЛЕНИЕ.

Предоставление прав пользователям ограничено пользователями, которые имеют глобальные привилегии «предоставлять».

По сути, у вас должны быть достаточные привилегии для изменения глобальной таблицы «предоставления» ... которая дает вам достаточно привилегий для предоставления любых привилегий любому пользователю. Разрешения не хранятся в каждой схеме ... а хранятся в одной таблице в схеме "mysql".

Чтобы получить список пользователей с привилегией предоставления, попробуйте выполнить этот запрос:

SELECT User, Grant_priv from mysql.user;