Задавайте вопросы, мы ответим
Вы не зашли.
Всем доброго времени суток.
Вопрос такой. Создаю юзера
Неактивен
SHOW GRANTS;
Неактивен
vasya написал:
SHOW GRANTS;
Select по нему как-то можно сделать?
Мне нужен результат именно в том виде, как я описал выше.
Отредактированно bobanman (23.01.2016 12:39:01)
Неактивен
Неактивен
rgbeast написал:
SELECT Select_priv FROM mysql.user where user='test_user';
Да,но если у меня нет привилегии
Отредактированно bobanman (23.01.2016 13:10:30)
Неактивен
Запрос выдаст или Y или N, если пользователь существует. Кроме того, не забудьте, что пользователь идентифицируется не только именем, но и именем хоста.
Неактивен
rgbeast написал:
Запрос выдаст или Y или N, если пользователь существует. Кроме того, не забудьте, что пользователь идентифицируется не только именем, но и именем хоста.
Создал юзера:
Отредактированно bobanman (23.01.2016 17:18:23)
Неактивен
Обращение к этой таблице должно работать:
Неактивен
rgbeast написал:
Обращение к этой таблице должно работать:
SELECT * FROM information_schema.user_privileges WHERE PRIVILEGE_TYPE='SELECT';
Да, так работает, спасибо за помощь.
Неактивен
А подскажите плиз еще. Вот есть две привилегии:
Неактивен
Верно, вторая не дает ничего дополнительного к первой
Неактивен
А почему такой эффект?
Даю привилегию:
Отредактированно bobanman (23.01.2016 21:18:18)
Неактивен
Строчка означает, что привилегия есть. 'NO' относится к IS_GRANTABLE, то есть к праву передоверия (GRANT ... WITH GRANT OPTION)
Неактивен
rgbeast написал:
Строчка означает, что привилегия есть. 'NO' относится к IS_GRANTABLE, то есть к праву передоверия (GRANT ... WITH GRANT OPTION)
Т. е. зайдя под искомым юзером и выполнив запрос:
Неактивен
Если это непривилегированный юзер, то так. Если зайдете по юзером, который имеет право видеть других, то для него будут выданы строчки для всех. Обычно это для суперпользователя, у которого проблем с правами нет. Более строго проверять наличие привилегии именно у текущего пользователя:
Неактивен
Спасибо, вы мне очень помогли.
Неактивен
rgbeast написал:
Если это непривилегированный юзер, то так. Если зайдете по юзером, который имеет право видеть других, то для него будут выданы строчки для всех. Обычно это для суперпользователя, у которого проблем с правами нет. Более строго проверять наличие привилегии именно у текущего пользователя:
SELECT * FROM INFORMATION_SCHEMA.user_privileges WHERE GRANTEE=CONCAT('\'',REPLACE(CURRENT_USER(),'@','\'@\''),'\'') AND PRIVILEGE_TYPE='SELECT';
А может теоретически этот запрос выдать более одной строки?
Неактивен
Теоретически не должен, но кто его знает.
Неактивен