Если вы предоставите пользователю привилегию CONNECT для базы данных, он сможет получить доступ к таблицам в той базе данных, к которой им предоставлен доступ (как правило, но не обязательно ко всем таблицам в базе данных). Вы также можете отозвать привилегии PUBLIC для таблицы, а затем предоставить доступ только именным пользователям или ролям, и тогда только те пользователи, которым был предоставлен доступ, могут получить к нему доступ. Здесь «доступ» означает «если они пытаются ВЫБРАТЬ, им должен быть предоставлен доступ SELECT; если они пытаются ВСТАВИТЬ, им должен быть предоставлен доступ ВСТАВИТЬ и т. Д.».
По умолчанию, когда вы создаете таблицу в обычной базе данных, всем пользователям предоставляется право выбора, вставки, обновления, удаления таблицы. Это делается через эквивалент GRANT ALL ON the_table TO PUBLIC
. Обратите внимание, что у каждого пользователя есть разрешения, предоставленные PUBLIC, и, возможно, некоторые дополнительные привилегии. Поэтому для обеспечения доступа только выбранным пользователям или ролям необходимо использовать REVOKE ALL ON the_table FROM PUBLIC
. Существует переменная окружения NODEFDAC=1
и параметр файла $ONCONFIG
с тем же именем, который подавляет стандартные «средства управления доступом» (DAC), предоставленные PUBLIC. Обратите внимание, что в базе данных MODE ANSI никому другому не предоставлены разрешения по умолчанию.
Ограничения для пользователей, которым предоставлена привилегия RESOURCE в базе данных, аналогичны пользователям, которым предоставлена привилегия CONNECT - разница в том, что пользователи RESOURCE могут создавать свои собственные таблицы, тогда как пользователи CONNECT не могут.
Если пользователю предоставлена привилегия DBA, он может получить доступ к любым таблицам в базе данных. Поэтому будьте осторожны с предоставлением прав администратора БД.