Вопрос или проблема
Я установил бесплатную базу данных Oracle 23AI и пытаюсь создать нового пользователя и подключиться к базе данных как этот пользователь. Я использую Sql Developer для подключения к базе данных. После подключения к базе данных как Sys я выполняю следующие команды:
alter session set container = FREEPDB1;
Create User newuser identified by password1;
grant connect to newuser;
Grant create session to newuser;
Все предоставления прав отвечают “grant succeeded”.
Когда я пытаюсь подключиться как newuser, я получаю ошибку:
Status : Failure -Test failed: ORA-01017: invalid credential or not authorized; logon denied
Я пытался предоставить DB_DEVELOPER_ROLE после просмотра видео, которое я нашел на YouTube, но все равно не могу подключиться как newuser. Что я делаю не так?
Из моей среды (oracle free docker + MacOS):
sqlplus sys/Welcome_#1@localhost/FREE as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Dec 3 20:08:04 2024
Version 19.8.0.0.0
Copyright (c) 1982, 2020, Oracle. Все права защищены.
Подключено к:
Oracle Database 23ai Free Release 23.0.0.0.0 - Разработка, обучение и работа бесплатно
Version 23.5.0.24.07
sys@FREE> alter session set container = FREEPDB1;
Сессия изменена.
Прошло: 00:00:00.04
[200~CreatCreate User newuser identified as password1;
Create User newuser identified as password1
*
ОШИБКА на строке 1:
ORA-00924: отсутствует ключевое слово BY
Прошло: 00:00:00.05
sys@FREE> Create User newuser identified by password1;
Пользователь создан.
sys@FREE> grant connect to newuser;
Предоставление прав успешно.
Прошло: 00:00:00.04
sys@FREE> Grant create session to newuser;
Предоставление прав успешно.
sqlplus newuser/password1@localhost/FREEPDB1
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Dec 3 20:10:06 2024
Version 19.8.0.0.0
Copyright (c) 1982, 2020, Oracle. Все права защищены.
Подключено к:
Oracle Database 23ai Free Release 23.0.0.0.0 - Разработка, обучение и работа бесплатно
Version 23.5.0.24.07
newuser@FREEPDB1>
newuser@FREEPDB1> @whoami
ПОЛЬЗОВАТЕЛЬ - "NEWUSER"
Вам нужно ‘identified by
‘ вместо ‘identified as
‘.
Примечание:
DB_DEVELOPER_ROLE
– это новая роль для разработки баз данных в 23ai. Это то, с чем нужно работать.- Как разработчик Oracle вы работаете на уровне подключаемой базы данных – ‘FREEPDB1’. Postgres имеет конструкцию ‘create database’, Oracle Database имеет конструкцию ‘create pluggable database’. Подключаемая база данных является автономной и может быть извлечена из ‘FREE’ (контейнерная база данных), работающей на одном хосте, и подключена к другой ‘FREE’ (контейнерная база данных), работающей на другом хосте. Это довольно круто.
Удачи!
Ответ или решение
Решение проблемы подключения к базе данных Oracle 23AI с новым пользователем
Введение
При работе с Oracle 23AI возникают ситуации, когда после создания нового пользователя невозможно установить соединение с базой данных. Это может вызывать затруднения и потребовать дополнительного времени на устранение проблемы. В данной статье мы рассмотрим шаги, которые необходимо предпринять, чтобы корректно настроить пользователя и устранить ошибку "ORA-01017: invalid credential or not authorized; logon denied".
Контекст проблемы
В процессе настройки вы подключились к базе данных как SYS и создали нового пользователя с помощью следующих SQL-команд:
alter session set container = FREEPDB1;
Create User newuser identified by password1;
grant connect to newuser;
Grant create session to newuser;
Команды успешно выполнялись и вы получили сообщения о том, что права были предоставлены. Однако, при попытке подключения с использованием учетных данных нового пользователя, появилась ошибка:
ORA-01017: invalid credential or not authorized; logon denied
Шаги по устранению ошибки
-
Проверка синтаксиса команд
При создании пользователя важно использовать правильный синтаксис. В вашем случае, вы использовалиidentified as
, что является неправильным. Правильный метод создания пользователя:Create User newuser identified by password1;
Обратите внимание, что в вашем случае команда была выполнена правильно, однако всегда проверяйте, чтобы не возникло никаких синтаксических ошибок.
-
Проверка метаданных подключения
Убедитесь, что вы используете правильный способ подключения. Вы указали:sqlplus newuser/password1@localhost/FREEPDB1
Убедитесь, что
FREEPDB1
правильно отформатирован в вашей TNS-строке или сетевой конфигурации, и что DNS разрешение имени сервера работает корректно. -
Предоставление соответствующих привилегий
Проверьте, имеет ли новый пользователь достаточно прав для выполнения необходимых действий. После создания пользователя вы предоставили праваconnect
иcreate session
, но если вы хотите, чтобы пользователь выполнял дополнительные операции, добавьте соответствующие привилегии, например:Grant DB_DEVELOPER_ROLE to newuser;
Эта роль предоставляет дополнительные права, необходимые для разработки в Oracle 23AI.
-
Подключение к правильной контейнерной базе данных
Убедитесь, что вы находитесь в правильном контексте подключения к Pluggable Database. Вы можете использовать следующую команду для установки правильного контейнера:alter session set container = FREEPDB1;
-
Проверка конфигурации окружения
Убедитесь, что ваш файл конфигурацииtnsnames.ora
(или другие используемые параметры при подключении) содержит корректные записи для подключения к вашей PDB. Возможно, потребуется использовать полные параметры подключения, включая сервисный идентификатор.
Заключение
Если вы следовали всем вышеописанным шагам, ваша проблема с подключением должна быть устранена. Если ошибка продолжает возникать, рекомендуется проверить журнал ошибок Oracle для получения дополнительной информации. Также может быть полезно обратиться к официальной документации Oracle для получения последних обновлений и рекомендаций.
Дополнительные ресурсы:
Успехов в работе с базой данных Oracle 23AI!