|
|
|
| Здраствуйте.
Посоветуйте, как можно модифицировать пермишины для отдельной таблицы в базе (конкретно -- как сделать так. чтоб ее не можно было просматривать командой select).
Очень прошу не цитировать и не скидывать линки мануал (я его уж вдоль и поперек прочесал) а просто вот конкретный пример.
Большущее спасибо. | |
|
|
|
|
|
|
|
для: nv_
(04.08.2005 в 12:41)
| | С привилегиями много путаницы - это связано с тем, что привилегии могут быть вставлены на разных уровнях - глобальном, базы данных, таблицы, столбца. Всё ещё усугубляется, что часть привилегий работают только на определённом уровне. Учётную запись можно снабдить привилегией передавать свои полномочия другим, а можно не снабжать... Кроче ваш запрос, может выглядеть следующим образом.
GRANT SELECT ON base.tbl TO 'root'@'localhost' IDENTIFIED BY PASSWORD 'password'
|
base - база данных
tbl - таблица
root - имя пользователя
localhost - имя хоста, с которого он обращается
password - пароль
Для уже существующего пользователя можно не указывать пароль
GRANT SELECT ON base.tbl TO 'root'@'localhost'
|
| |
|
|
|
|
|
|
|
для: cheops
(04.08.2005 в 13:23)
| | Это не то. Мне не нужно определять "селект" привилегию для таблици (это УЖЕ определено привилегией на уровне бд). Наоборот, нужно ЗАПРЕТИТЬ ПРОСМОТР этой самой таблицы.
revoke select on db.tbl_name from dummy_user говорит, что такая привилегия для этой таблици не определена, а
grant usage on db.tbl_name to dummy_user вроде фиксируется, но после flush privileges (либо после reload) show grants for dummy_user не показывает новосозданной привилегии.
В чем причина? | |
|
|
|
|
|
|
|
для: nv_
(04.08.2005 в 13:48)
| | USAGE - это ключевое слово, обозначающее полное отсутствие привилегий - из него уже ничего нельзя вычесть - вот если вы ALL дадите, а потом примените REVOKE для SELECT, то останутся
INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES
|
и GRANT OPTION в зависимости от того передавалась ли пользователю эта привилегия в дополнение к ALL или нет (ALL включает все привилегии, кроме GRANT OPTION). | |
|
|
|
|
|
|
|
для: nv_
(04.08.2005 в 13:48)
| | Хорошо, объясняю задачу, как есть:
пользователю dummy_user для базы one_db даны пермишны ТОЛЬКО для просмотра (только селект). Но в этой базе есть такие таблички, в которые даже смотреть запрещено (пароли там хранятся, в захешированом виде, но все-таки). Соответственно, нужно ЗАПРЕТИТЬ просмотр таблички very_secret_table для dummy_user. Ну а для всех остальных табличек оставить.
? | |
|
|
|
|
|
|
|
для: nv_
(04.08.2005 в 16:50)
| | Тогда нужно выставить привилегию USAGE для таблицы very_secret_table | |
|
|
|
|
|
|
|
для: cheops
(04.08.2005 в 22:02)
| | Абсолютно хорошая и, главное, правильная мысль :). Проблема в том, что эта привилегия почему-то не вступает в силу. Ну не вступает, блин, в силу, йо-мое! :))
Или я че-то не так делаю, или это в мскл глюк, но и после flush privileges и после reload'a все как было так и есть. Операция селект проходит, так скать, со свистом :).
Попробуй сам, експеримент, знаешь. Выйдет -- с меня пиво (не знаю, виртуальное, что-ли :) ), расскажешь. А то я уже просто потерялся весь. | |
|
|
|
|
|
|
|
для: nv_
(04.08.2005 в 23:08)
| | Это абослютно новый пользователь или уже существующий? Нет ли у него глобальных привилегий, которые открывают ему всё и вся? | |
|
|
|
|
|
|
|
для: nv_
(04.08.2005 в 23:08)
| | Т.е. с базы данных уберите привилегию SELECT и с глобального уровня, а таблицам либо назначайте либо убирайте её. Пока SELECT, стоит на базе данных, любые манипуляции на уровне таблиц ни к чему не приведут. | |
|
|
|
|
|
|
|
для: cheops
(04.08.2005 в 23:33)
| | Во-о-т, в этом и вся проблема: конечно и обязательно, на базу я поставил привилегию select. И естественным путем хотел уточнить привилегии для одной только таблици.
Выходит полная фигня, скажу я тебе. Или я не понима, или привилегии можно уточнять только в большем направленни, но не в меньшем. Так?
А если так, то задача моя теоретически, конечно, разрешима, но практически (36 таблиц * 2) -- не очень. Фиксить 70 записей -- эт, конечно, жестоко.
В любом случае, огромное спасибо за ответ, cheops. | |
|
|
|
|
|
|
|
для: nv_
(05.08.2005 в 14:17)
| | Стандарт SQL ничего не поделаешь, производители баз может и рады были бы изменить порядок, но вынуждены придерживаться стандарта. | |
|
|
|