Я создал пользователя и предоставил ему все разрешения, я использовал: GRANT ALL PRIVILEGES TO user1;
но затем я попытался выбрать строки из таблицы, которую я создал с помощью администратора, например:
select * from sys.table
выдает сообщение об ошибке table or view doesn't exist
затем я сделал: Grant select on table to user1
и это сработало.
так все привилегии не включают выбор?
возможно, вы по ошибке набрали "из sys.table", попробуйте просто "выбрать * из таблицы"
@Moebius, таблица не была создана пользователем, поэтому префикс администратора не будет работать, и, кстати, это не сработало.
@OldProgrammer Я только начал с sql и oracle, поэтому я просто изучаю некоторые манипуляции.
@OldProgrammer - я не вижу, где OP создал или изменил что-либо в схеме SYS, не могли бы вы пояснить? Что я действительно вижу, так это то, что он создал другого пользователя, он дал этому пользователю все привилегии, и этот другой пользователь пытается прочитать данные из таблицы SYS. Это совершенно нормально (пока этот другой пользователь действительно должен иметь привилегии для доступа к данным SYS).
Как это часто бывает, Oracle использует слова «приблизительно».
В данном случае ВСЕ не означает «все». Из документации:
ВСЕ ПРИВИЛЕГИИ
Specify ALL PRIVILEGES to grant all of the system privileges listed in Table 18-1, except the SELECT ANY DICTIONARY, ALTER DATABASE LINK, and ALTER PUBLIC DATABASE LINK privileges.
Обратите внимание на часть «кроме». «Все» должен означают «все», то есть «без исключения»; все же........
Относится к вашему вопросу: ВСЕ ПРИВИЛЕГИИ не включают ВЫБРАТЬ ЛЮБОЙ СЛОВАРЬ. Скорее всего, любая таблица или представление, из которых вы пытались выбрать, является таблицей словаря (или представлением); что объясняет, почему предоставление ВСЕХ ПРИВИЛЕГИЙ не сработало, но сработало предоставление доступа непосредственно к таблице/представлению.
Если вы хотите предоставить доступ ко всем объектам словаря, вы можете предоставить пользователю SELECT ANY DICTIONARY.
После того, как вы закончите играть с этими явными грантами, вы можете рассмотреть возможность предоставления системы роли тем пользователям, которые в них нуждаются (и Только для этих пользователей), вместо того, чтобы выискивать все такие исключения.
во-первых, никогда не создавайте/не изменяйте ничего в схеме sys.