Создать пользователя oracle с правами на чтение

Обновлено: 06.07.2024

Oracle оператор CREATE USER создает учетную запись базы данных, которая позволяет войти в базу данных Oracle.

Синтаксис

Синтаксис оператора CREATE USER в Oracle/PLSQL:

CREATE USER user_name
IDENTIFIED < BY password
| EXTERNALLY [ AS 'certificate_DN' ]
| GLOBALLY [ AS '[ directory_DN ]' ]
>
[ DEFAULT TABLESPACE tablespace
| TEMPORARY TABLESPACE
< tablespace | tablespace_group >
| QUOTA integer [ K | M | G | T | P | E ]
| UNLIMITED >
ON tablespace
[ QUOTA integer [ K | M | G | T | P | E ]
| UNLIMITED >
ON tablespace
]
| PROFILE profile_name
| PASSWORD EXPIRE
| ACCOUNT < LOCK | UNLOCK >
[ DEFAULT TABLESPACE tablespace
| TEMPORARY TABLESPACE
< tablespace | tablespace_group >
| QUOTA integer [ K | M | G | T | P | E ]
| UNLIMITED >
ON tablespace
[ QUOTA integer [ K | M | G | T | P | E ]
| UNLIMITED >
ON tablespace
]
| PROFILE profile
| PASSWORD EXPIRE
| ACCOUNT < LOCK | UNLOCK >]
] ;

Параметры и аргументы

user_name
Имя учетной записи базы данных, которую вы хотите создать.

PROFILE profile_name
Необязательный. Это имя профиля, который вы хотите назначить для учетной записи пользователя, чтобы ограничить объем ресурсов базы данных, присвоенных учетной записи пользователя. Если опустить этот параметр, профиль по умолчанию присваивается пользователю.

PASSWORD EXPIRE
Необязательный. Если этот параметр установлен, то пароль должен быть сброшен до того, как пользователь может войти в базу данных Oracle.

ACCOUNT LOCK
Необязательный. Он отключает доступ к учетной записи пользователя.

ACCOUNT UNLOCK
Необязательный. Включает доступ к учетной записи пользователя.

Пример

Если вы хотите, выполнить простой оператор CREATE USER, который создаст нового пользователя и назначит пароль, вы можете сделать следующее:

При установке Oracle по умолчанию создаются два пользователя/схемы - SYS и SYSTEM. Я написал "пользователя/схемы" потому, что при создании нового пользователя для него создается одноименная схема. Не сразу понятно чем понятие "пользователь" отличается от понятия "схема". Чтобы понять представьте пользователя Windows (Unix). Пользователь имеет имя ИмяПользователя и принадлежащую ему папку - C:\Users\ИмяПользователя ( /home/ИмяПользователя ). Так вот пользователь Oracle аналогичен пользователю Windows, а схема - аналогична папке пользователя. Точно так же как у пользователя Windows, у пользователя Oracle есть набор прав. Так же как папка пользователя Windows содержит различные файлы, также и схема Oracle содержит различные объекты - таблицы, последовательности, триггеры и др. Если продолжать аналогию, то пользователей SYS и SYSTEM можно считать Администратором Windows или root-пользователем Unix. Они имеют неограниченные права. И работать под ними не рекомендуется. По-этому сначала нужно создать еще одного пользователя.

1. Создание пользователя и предоставление ему прав


Создадим пользователя, например fiftin :
Мы создали пользователя fiftin с паролем 123456 . Он не имеет абсолютно никаких прав. Вы даже не сможете под ним зайти:
Для наделения пользователя правами существует команда GRANT . Например дадим права пользователю fiftin на вход:
Если теперь вы попробуете подключиться как пользователь fiftin у вас это получится. Но это все что разрешено пользователю fiftin. Наделим пользователя правами администратора:
Теперь вы можете подцепиться к БД под fiftin'ом как админ:
Создадим таблицу:
Вставим данные:

2. Права на создание таблиц

Создадим еще одного пользователя - test:
Дадим ему права:
Теперь пользователь test может подключаться и создавать таблицы. Попробуем создать таблицу (не забудьте зайти под test'ом):
Получаем ошибку:
Почему так? Оказывается для того чтобы обычный пользователь (не админ) мог что-либо создать в БД, ему нужно выделить для этого место. Зайдем снова под fiftin'ом и выполним команду:
Этой командой мы выделяем пользователю test 50Мб под его нужды. Попробуйте теперь зайти под пользователем test и создать таблицу и у вас получится.

Основы Oracle 18c - 19c часть 8 - права доступа, роли, учетные записи

Приведем наиболее часто используемые:
CREATE SESSION – право подключения к БД
ALTER DATABASE – право изменения БД
CREATE TABLESPACE – право создавать табличное пространтсво
ALTER TABLESPACE – право изменять табличное пространтсво
DROP TABLESPACE – право удалять табличное пространтсво
CREATE TABLE – право создавать, изменять, удалять таблицы в своей схеме
INSERT ANYTABLE – право добавлять данные в таблиц, которые не принадлежат учетной записи
UPDATE ANYTABLE – право изменять данные в таблиц, которые не принадлежат учетной записи
DELETE ANYTABLE – право удалять данные в таблиц, которые не принадлежат учетной записи
SELECT ANYTABLE – право выборки данных из таблиц, которые не принадлежат учетной записи

Синтаксис назначения прав:
GRANT privilege [,privilege…] TO User_Name;


Пример создания учетной записи (схемы) User_Name
С паролем User_Pass
Разрешаем занимаемое пространство в 10мб. от пространства по умолчанию USERS

CREATE USER User_Name IDENTIFIED BY User_Pass
DEFAULT TABLESPACE USERS QUOTA 10M ON USERS;


Пример, назначение всех основных привилегий для учетной записи:
GRANT CREATE SESSION, ALTER SESSION,
CREATE TABLE, CREATE VIEW, CREATE TRIGGER, CREATE PROCEDURE,
CREATE CLUSTER, CREATE DATABASE LINK,
CREATE SYNONYM, CREATE SEQUENCE, CREATE TYPE, CREATE OPERATOR
TO User_Name ;

В примере выше разрешено подключаться, настраивать сессию, создавать объекты в БД
Создавать объекты разрешено только в схеме аккаунта
Отсутствуют права к схемам других аккаунтов


Пример предоставления табличного пространства USERS по умолчанию для учетной записи User_Name:
ALTER USER User_Name DEFAULT TABLESPACE USERS


Создание ролей, учетных записей, пароля, связь ролей и учетных записей

Предоставление привилегий


Синтаксис:
GRANT privilege ON [schema.]object TO username [WITH GRANT OPTION];


Информация о имеющихся привилегиях


Отмена, удаление привилегий, ролей, четных записей

Продолжаем работать с SQL Plus! Попробуем сделать следующее, войти пользователем SYSTEM с паролем manager, а затем не закрывая плюс сменим действующего пользователя.

Запускаем плюс, вводим пользователя, пароль и название сетевой службы (proba! или что-то еще!), получилось? Замечательно! Теперь проделаем примерно следующее:

  • USER - это пользователь(схема в экземпляре БД).
  • PASSWORD - пароль для входа в схему.
  • NETWORKSERVICE - имя службы сформированное программой Net8i.

В предыдущем случае мы зашли в схему(пользователя) SCOTT с паролем доступа TIGER с помощью сетевой службы PROBA. Берите сразу на заметку или на память: в Oracle Server в паролях доступа не допускаются цифровые символы! Так же созданный пользователь, создает схему в экземпляре БД и понятие схема и пользователь в Oracle практически тождественны! Сама строка подключения, вами еще не однократно, будет использоваться в дальнейшем! Теперь, я думаю пришло время, создать собственную схему, тем более она нам понадобиться, в дальнейшем, для того, что бы научиться использовать PL/SQL! Первое и самое простое, действие, для создания нашей схемы, ввести следующее:

Для начала заходим на сервер, как администратор.

Вводим ниже приведенную строку, которая создает пользователя MILLER с паролем в системе KOLOBOK (можете написать свое!), который будет жить в табличном пространстве USER владея им целиком и захватив в свое распоряжение еще кусочек табличного пространства TEMP, так на всякий случай, пригодится.

После нажатия Enter на последней строке видим, что все прошло удачно!

Но, это только полдела, теперь этому пользователю, нужно, дать ряд прав и первостепенное, это создавать сессию с сервером! Теперь введем нижеследующее: Можно по очереди или целиком! Главное, чтобы сработал последний опреатор COMMIT. Иначе наши старания пройдут бесследно!

И последнее: "Фиксация обновлений завершена."

Операторы GRANT предоставляют пользователю, определенные привилегии. В типах привилегий пока, предметно разбираться не будем, скажу только, что данное мероприятие можно проделать еще проще, если собрать все строки, которые мы вводили в файл, затем использовав команду START или операцию "@"! Можете проделать это сами, предварительно введя, находясь в схеме SYSTEM:

Затем соберите все строки, в файл, скажем CrMiller.sql, поместите его в каталог, например, Temp, и введите следующее:

Выскочит множество надписей, последняя из которых должна быть: "Фиксация обновлений завершена." Значит, все прошло нормально и пользователь создан! Дальше в схеме MILLER, мы развернем, ряд оьбектов БД и посмотрим как это будет происходить!

Так же на заметку в заключении SQL Plus, есть еще много внутренних команд, например, очень полезной может оказаться SET TIME ON приглашение примет вот такой вид:

Например, можно оценивать время на запрос из таблицы!

Если ввести SET TIME OFF, то все станет по прежнему. Например, если написать SHOW USER (мне напоминает Cisco IOS!), то увидим примерно следующее:

Когда захожу в sql developer под новым пользователем то не вижу таблиц созданных с учетки SYSTEM .
Как сделать доступ полный ?


С учетки SYSTEM я хотел сделать доступ к таблице для все пользователей

Но при заходе в sql developer под новым пользователем то не вижу этой таблицы .
Спасибо за помощь .

Добавлено через 27 минут
Права на доступ к таблицам из другой схемы я так понял мне нужен .

Пользователи и доступ к таблицам Sybase Anywhere
В Sybase Anywhere 5.0 была БД и созданы таблицы под стандартным dba юзером. После создания новых.


Получить доступ к таблицам другого пользователя (Oracle, Hibernate 3.0)
Добрый день! Прошу помощи в решении следующей проблемы: БД - Oracle. hibernate 3.0 Есть два.

Распределенный доступ к таблицам БД
Есть БД с таблицами в Access. И приложение на Делфи которое работает с ней. Информация из них.

Обычно подход к раздаче прав такой. Допустим, у меня есть некая схема (только не SYS, и не SYSTEM), в которой находятся объекты, доступ к которым нужен разным пользователям. Причем обычно есть несколько групп пользователей, каждой из которых нужен одинаковый доступ. Простейший случай - одни пользователи могут изменять данные, другое - только читать. В этом случаи создаются роли, каждая из которых "набивается" определенными привилегиями. А потом конкретному пользователю выдается грант на соответствующую роль.
Давать гранты PUBLIC-у нужно крайне аккуратно, ибо может появиться пользователь, которому "туда нельзя".
Из под конкретного пользователя посмотреть, какие таблицы ему доступны, можно через all_tables У меня как-то так получилось
Я поэкспериментировал с таблицей system.aq$_queues
Зашел под hr.
Не видит ее.
зашел под dba (не под SYSTEM)

Я не профессиональный админ, только по необходимости, когда админ в отпуске, но что-то в памяти отложилось, что SYSTEM немного в чем-то ограниченная учетка. Лучше все делать из-под учетки созданной с правами dba.

Читайте также: