Иллюстрированный самоучитель по PostgreSQL. Postgresql создание пользователя
Добавление ролей учетных записей в PostgreSQL—Справка
PostgreSQL : Документация: 9.6: 1.3. Создание базы данных : Компания Postgres Professional
1.3. Создание базы данных
Первое, как можно проверить, есть ли у вас доступ к серверу баз данных, — это попытаться создать базу данных. Работающий сервер PostgreSQL может управлять множеством баз данных, что позволяет создавать отдельные базы данных для разных проектов и пользователей.
Возможно, ваш администратор уже создал базу данных для вас. В этом случае вы можете пропустить этот этап и перейти к следующему разделу.
Для создания базы данных, в этом примере названной mydb, выполните следующую команду:
$ createdb mydbЕсли вы не увидите никаких сообщений, значит операция была выполнена успешно и продолжение этого раздела можно пропустить.
Если вы видите сообщение типа:
createdb: command not foundзначит PostgreSQL не был установлен правильно. Либо он не установлен вообще, либо в путь поиска команд оболочки не включён его каталог. Попробуйте вызвать ту же команду, указав абсолютный путь:
$ /usr/local/pgsql/bin/createdb mydbУ вас этот путь может быть другим. Свяжитесь с вашим администратором или проверьте, как были выполнены инструкции по установке, чтобы исправить ситуацию.
Ещё один возможный ответ:
createdb: не удалось подключиться к базе postgres: не удалось подключиться к серверу: No such file or directory Он действительно работает локально и принимает соединения через Unix-сокет "/tmp/.s.PGSQL.5432"?Также вы можете получить сообщение:
createdb: не удалось подключиться к базе postgres: ВАЖНО: роль "joe" не существуетгде фигурирует ваше имя пользователя. Это говорит о том, что администратор не создал учётную запись PostgreSQL для вас. (Учётные записи PostgreSQL отличаются от учётных записей пользователей операционной системы.) Если вы сами являетесь администратором, прочитайте Главу 21, где написано, как создавать учётные записи. Для создания нового пользователя вы должны стать пользователем операционной системы, под именем которого был установлен PostgreSQL (обычно это postgres). Также возможно, что вам назначено имя пользователя PostgreSQL, не совпадающее с вашим именем в ОС; в этом случае вам нужно явно указать ваше имя пользователя PostgreSQL, используя ключ -U или установив переменную окружения PGUSER.
Если у вас есть учётная запись пользователя, но нет прав на создание базы данных, вы увидите сообщение:
createdb: создать базу данных не удалось: ОШИБКА: нет прав на создание базы данныхСоздавать базы данных разрешено не всем пользователям. Если PostgreSQL отказывается создавать базы данных для вас, значит вам необходимо соответствующее разрешение. В этом случае обратитесь к вашему администратору. Если вы устанавливали PostgreSQL сами, то для целей этого введения вы должны войти в систему с именем пользователя, запускающего сервер БД.
Вы также можете создавать базы данных с другими именами. PostgreSQL позволяет создавать сколько угодно баз данных. Имена баз данных должны начинаться с буквы и быть не длиннее 63 символов. В качестве имени базы данных удобно использовать ваше текущее имя пользователя. Многие утилиты предполагают такое имя по умолчанию, так что вы сможете упростить ввод команд. Чтобы создать базу данных с таким именем, просто введите:
$ createdbЕсли вы больше не хотите использовать вашу базу данных, вы можете удалить её. Например, если вы владелец (создатель) базы данных mydb, вы можете уничтожить её, выполнив следующую команду:
(Эта команда не считает именем БД по умолчанию имя текущего пользователя, вы должны явно указать его.) В результате будут физически удалены все файлы, связанные с базой данных, и так как отменить это действие нельзя, не выполняйте его, не подумав о последствиях.
Узнать о командах createdb и dropdb больше можно в справке createdb и dropdb.
postgrespro.ru
PostgreSQL не может создать пользователя
Проблема: я могу создавать пользователей или базы данных из оболочки (bash, OSX), но не postgres cli. Из bash я не получаю подтверждения в случае успеха.
Если я пытаюсь создать CREATE ROLE в psql, тогда я не получаю ответа и не генерирует никаких ошибок. Если я попытаюсь создать createuser из bash, то в случае успеха он ничего не сообщает о возврате, если он не увенчался успехом, тогда он генерирует ошибку: «имя пользователя роли уже существует».
Example: Yunti-# CREATE ROLE testuser Yunti-# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- Yunti | Superuser, Create role, Create DB, Replication | {} anything | | {} monkey | | {} Yunti-# CREATE DATABASE testdb Yunti-# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+-------+----------+-------------+-------------+------------------- Yunti | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/Yunti + | | | | | Yunti=CTc/Yunti template1 | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/Yunti + | | | | | Yunti=CTc/Yunti test | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 | test5 | Yunti | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (6 rows) Yunti-#Как создать пользователей и базы данных в postgres cli? И это нормально, чтобы не получить ответа на большинство команд postgres в bash?
информация: пользователи и их привилегии:
Yunti-# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- Yunti | Superuser, Create role, Create DB, Replication | {} anything | | {} monkey | | {}Иллюстрированный самоучитель по PostgreSQL › Установка PostgreSQL › 10 этапов установки PostgreSQL. Этап 1. Создание пользователя postgres. [страница - 11] | Самоучители по программированию
10 этапов установки PostgreSQL. Этап 1. Создание пользователя postgres.
Дистрибутив PostgreSQL имеется на компакт-диске, прилагаемом к книге, но вы также можете посетить web-сайт PostgreSQL и проверить, не появилась ли более новая версия. Исходные тексты PostgreSQL размещены на многих ftp-сайтах. Полный список зеркальных ftp-сайтов имеется на сайте http://www.postgresql.org.
После подключения к одному из зеркальных ftp-сайтов PostgreSQL вы увидите список стабильных версий в виде каталогов, имена которых строятся по схеме vверсия (например, v7.1.3). Также на сайте может присутствовать символическая ссылка на каталог самой "свежей" стабильной версии PostgreSQL с именем latest/. В каждом каталоге находится несколько файлов пакетов.
Полный пакет установки PostgreSQL называется postgresq-[ версия ].tar.gz, это самый большой файл в каталоге. Ниже перечислены дополнительные пакеты (суб-пакеты), которые могут устанавливаться в произвольном сочетании (обязателен только пакет base).
- postgresql-base-[eepcux].tar.gz. Минимальный набор исходных текстов, необходимых для построения и запуска PostgreSQL.
- postgresql-docs-[oepcH#].tar.gz. Документация PostgreSQL в формате HTML. Учтите, что многие man-страницы PostgreSQL автоматически устанавливаются с пакетом base.
- postgresql-opt-[cepcM^].tar.gz. Дополнительные расширения PostgreSQL, в том числе интерфейсы для C++ (libpq++),JDBC, ODBC, Perl, Python и Tel. Пакет также содержит исходный код, обеспечивающий поддержку расширенной кодировки символов.
- postgresql-test-[eepcw#].tar.gz. Комплекс регрессионных тестов. Пакет необходим для проведения регрессионных тестов после компиляции PostgreSQL.
Этап 1. Создание пользователя postgres.
Создайте в Unix учетную запись пользователя, которому будет принадлежать право владения и администрирования файлами баз данных PostgreSQL. Обычно этому пользователю назначается имя "postgres", но вы можете выбрать любое имя по своему усмотрению. В примерах, приведенных в книге, предполагается, что пользователь postgres обладает правами суперпользователя для PostgreSQL.
Для создания суперпользователя PostgreSQL необходимо обладать правами root. В системе Linux пользователь postgres создается командой, приведенной в листинге 2.5.
Листинг 2.5. Создание пользователя postgres.
$ su --с "useradd postgres"ВниманиеНе пытайтесь использовать учетную запись root в качестве суперпользователя PostgreSQL, поскольку при этом открывается заметная брешь в системе безопасности.
samoychiteli.ru
Иллюстрированный самоучитель по PostgreSQL › Управление пользователями и группами › Управление пользователями [страница - 231] | Самоучители по программированию
Управление пользователями
Чтобы создать подключение к PostgreSQL, необходимо сообщить о себе некоторые данные. По имени пользователя система узнает, кто именно подключается к базе данных. Имена пользователей PostgreSQL не всегда совпадают с именами пользователей операционной системы, хотя такое совпадение и не запрещено.
Каждому пользователю PostgreSQL назначается внутренний системный идентификатор (sysid) и пароль, хотя пароль не всегда обязателен для подключения (это зависит от файла конфигурации pg_hba.conf, о котором говорилось в главе 8). Системный идентификатор связывает объекты базы данных с владельцем (так называется пользователь, которому разрешено предоставлять и отзывать права доступа к объекту).
Помимо прав, предоставляемых владельцами объектов, при создании учетной записи пользователю также могут быть предоставлены глобальные права. Они определяют, разрешено ли пользователю создавать и уничтожать базы данных и является ли он суперполъзователем (пользователем, обладающим всеми правами во всех базах данных, включая право создания других пользователей). Глобальные права могут быть в любой момент изменены текущим суперпользователем.
В PostgreSQL по умолчанию создается один суперпользователь с именем postgres. Все остальные пользователи создаются этим суперпользователем или другим, созданным позднее.
Просмотр списка пользователей
Вся информация о пользователях PostgreSQL хранится в системной таблице pg_shadow, структуру которой иллюстрирует табл. 10.1. Выборка из этой таблицы разрешена только суперпользователям, хотя ограниченное представление этой таблицы с именем pg_user доступно и для обычных пользователей.
Таблица 10.1. Структура таблицы pg_shadow.
usename | name |
usesysid | integer |
usecreatedb | boolean |
usetrace | boolean |
usesuper | boolean |
usecatupd | boolean |
passwd | text |
valuntil | abstime |
Основное различие между данными, содержащимися в таблицах pg_user и pg_shadow, заключается в том, что в pg_user отсутствует значение в поле passwd (оно заменяется несколькими звездочками). Эта мера безопасности гарантирует, что обычный пользователь не сможет получить несанкционированный доступ к чужим паролям.
В поле usename хранится имя системного пользователя, которое представляет собой уникальную строку. Существование одноименных пользователей не допускается, потому что пользователи являются глобальными объектами базы данных. В поле usesysid хранится уникальный целый идентификатор, связанный с пользователем. Поля usecreatedb и usesuper содержат информацию о привилегиях, которые могут присваиваться пользователю при создании (см. следующий подраздел).
Создание пользователей
В PostgreSQL существует два способа создания учетных записей пользователей базы данных. Оба способа требуют аутентификации суперпользователя, поскольку только суперпользователям разрешено создавать новых пользователей.
Первый способ основан па выполнении команды SQL CREATE USER в клиенте PostgreSQL (например, psql) после прохождения аутентификации. Второй способ, основанный на использовании программы createuser, более удобен для системного администратора, поскольку все действия выполняются одной командой без взаимодействия с клиентом PostgreSQL.
samoychiteli.ru
PostgreSQL : Документация: 9.4: createuser : Компания Postgres Professional
Название
createuser -- создать новую учётную запись PostgreSQLСинтаксис
createuser [ параметр-подключения ...] [ параметр ...] [ имя_пользователя ]
Описание
createuser создаёт нового пользователя PostgreSQL, а если точнее — роль. Лишь суперпользователь и пользователи с привилегией CREATEROLE могут создавать новые роли, таким образом, createuser должна запускаться от их лица.
Чтобы создать дополнительного суперпользователя, необходимо подключиться под уже существующим, одной привилегии CREATEROLE не достаточно. Поскольку для суперпользователей игнорируются любые проверки в базе данных, стоит внимательно относится к выдаче таких прав.
createuser это обёртка для SQL-команды CREATE ROLE. Создание пользователей с её помощью по сути не отличается от выполнения того же действия при обращении к серверу другими способами.
Параметры
createuser принимает следующие аргументы:
имя_пользователяУказывает PostgreSQL имя создаваемого пользователя. Имя роли должно быть уникальным в рамках кластера PostgreSQL.
-c номер--connection-limit=номерУстанавливает максимальное допустимое количество соединений для создаваемого пользователя. По умолчанию ограничение в количестве соединений отсутствует.
-d--createdbРазрешает новому пользователю создавать базы данных.
-D--no-createdbЗапрещает новому пользователю создавать базы данных. Это поведение по умолчанию.
-e--echoВывести команды к серверу, генерируемые при выполнении createuser.
-E--encryptedШифровать пароль пользователя, хранимый в базе. Если флаг не указан, то для пароля используется поведение по умолчанию.
-g role--role=roleУказывает роль, к которой будет добавлена текущая роль в качестве члена группы. Допускается множественное использование флага -g.
-i--inheritСоздаваемая роль автоматически унаследует привилегии ролей, в группы которых она войдёт. Это поведение по умолчанию.
-I--no-inheritРоль не будет наследовать привилегии ролей, в группы которых она войдёт.
--interactiveЗапросить имя для создаваемого пользователя, а также значения для флагов -d/-D, -r/-R, -s/-S, если они явно не указаны в командной строке. До версии PostgreSQL 9.1 включительно это было поведением по умолчанию.
-l--loginПозволяет создаваемому пользователю открывать сессии. Это поведение по умолчанию.
-L--no-loginЗапрещает создаваемому пользователю открывать сессии. При этом роль может использоваться для управления привилегиями базы данных.
-N--unencryptedНе шифровать пароль, хранимый в базе. Если флаг не указан, то для пароля используется поведение по умолчанию.
-P--pwpromptЕсли флаг указан, то createuser запросит пароль для создаваемого пользователя. Если не планируется аутентификация по паролю, то пароль можно не устанавливать.
-r--createroleРазрешает новому пользователю создавать другие роли, что означает наделение привилегией CREATEROLE.
-R--no-createroleЗапрещает пользователю создавать новые роли. Это поведение по умолчанию.
-s--superuserСоздаваемая роль будет иметь права суперпользователя.
-S--no-superuserНовый пользователь не будет суперпользователем. Это поведение по умолчанию.
-V--versionВывести версию createuser и завершить выполнение.
--replicationСоздаваемый пользователь будет наделён правом REPLICATION. Это рассмотрено подробнее в документации по CREATE ROLE.
--no-replicationСоздаваемый пользователь не будет иметь привилегии REPLICATION. Это рассмотрено подробнее в документации по CREATE ROLE.
-?--helpВывести помощь по команде createuser.
createuser также принимает из командной строки параметры подключения:
-h host--host=hostУказывает имя компьютера, на котором запущен сервер. Если значение начинается с косой черты, оно интерпретируется как имя каталога с доменным сокетом Unix.
-p порт--port=портУказывает TCP-порт или расширение файла Unix-сокета, на котором сервер слушает подключения.
-U имя_пользователя--username=имя_пользователяИмя пользователя, под которым производится текущее подключение к базе (это не имя создаваемого пользователя).
-w--no-passwordНе выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль не доступен с помощью других средств, таких как файл .pgpass, попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль.
-W--passwordПринудительно запрашивать пароль перед подключением к базе данных.
Это несущественный параметр, так как createuser запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако, чтобы понять это, createuser лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести -W, чтобы исключить эту ненужную попытку подключения.
Переменные окружения
PGHOSTPGPORTPGUSERПараметры подключения по умолчанию
Эта утилита, как и большинство других утилит PostgreSQL, также использует переменные среды, поддерживаемые libpq (см. Раздел 31.14).
Диагностика
В случае возникновения трудностей, обратитесь к CREATE ROLE и psql . Переменные окружения и параметры подключения по умолчанию libpq будут применены при запуске утилиты, это следует учитывать при диагностике.
Примеры
Чтобы создать роль joe на сервере, используемом по умолчанию:
$ createuser joeЧтобы создать роль joe на сервере, используемом по умолчанию, с запросом дополнительных параметров:
$ createuser --interactive joe Назначить роль суперпользователем? (y/n) n Разрешить новой роли создавать базы данных? (y/n) n Разрешить новой роли создавать другие роли? (y/n) nЧтобы создать того же самого joe на сервере eden, слушающего подключения на порту 5000, с явно заданными параметрами:
$ createuser -h eden -p 5000 -S -D -R -e joe CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;Чтобы создать роль joe с правами суперпользователя и предустановленным паролем:
$ createuser -P -s -e joe Введите пароль для новой роли: xyzzy Подтвердите ввод пароля: xyzzy CREATE ROLE joe PASSWORD 'md5b5f5ba1a423792b526f799ae4eb3d59e' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;В приведённом примере введённый пароль отображается лишь для отражения сути, на деле же он не выводится на экран. Как видно в выводе журнала команд, пароль зашифрован. Если же указан флаг --unencrypted, то он отобразиться в этом журнале неизменным, а также, возможно, и в других журналах сервера. По этой причине в этой ситуации стоит использовать флаг -e с особой осторожностью.
postgrespro.ru
PostgreSQL : Документация: 9.5: 1.3. Создание базы данных : Компания Postgres Professional
1.3. Создание базы данных
Первое, как можно проверить, есть ли у вас доступ к серверу баз данных, — это попытаться создать базу данных. Работающий сервер PostgreSQL может управлять множеством баз данных, что позволяет создавать отдельные базы данных для разных проектов и пользователей.
Возможно, ваш администратор уже создал базу данных для вас и сообщил вам её имя. В этом случае вы можете пропустить этот этап и перейти к следующему разделу.
Для создания базы данных, в этом примере названной mydb, выполните следующую команду:
$ createdb mydbЕсли вы не увидите никаких сообщений, значит операция была выполнена успешно и продолжение этого раздела можно пропустить.
Если вы видите сообщение типа:
createdb: command not foundзначит PostgreSQL не был установлен правильно. Либо он не установлен вообще, либо в путь поиска команд оболочки не включён его каталог. Попробуйте вызвать ту же команду, указав абсолютный путь:
$ /usr/local/pgsql/bin/createdb mydbУ вас этот путь может быть другим. Свяжитесь с вашим администратором или проверьте, как были выполнены инструкции по установке, чтобы исправить ситуацию.
Ещё один возможный ответ:
createdb: не удалось подключиться к базе postgres: не удалось подключиться к серверу: No such file or directory Он действительно работает локально и принимает соединения через Unix-сокет "/tmp/.s.PGSQL.5432"?Это означает, что сервер не работает или createdb не может к нему подключиться. И в этом случае пересмотрите инструкции по установке или обратитесь к администратору.
Также вы можете получить сообщение:
createdb: не удалось подключиться к базе postgres: ВАЖНО: роль "joe" не существуетгде фигурирует ваше имя пользователя. Это говорит о том, что администратор не создал учётную запись PostgreSQL для вас. (Учётные записи PostgreSQL отличаются от учётных записей пользователей операционной системы.) Если вы сами являетесь администратором, прочитайте Главу 20, где написано, как создавать учётные записи. Для создания нового пользователя вы должны стать пользователем операционной системы, под именем которого был установлен PostgreSQL (обычно это postgres). Также возможно, что вам назначено имя пользователя PostgreSQL, не совпадающее с вашим именем в ОС; в этом случае вам нужно явно указать ваше имя пользователя PostgreSQL, используя ключ -U или установив переменную окружения PGUSER.
Если у вас есть учётная запись пользователя, но нет прав на создание базы данных, вы увидите сообщение:
createdb: создать базу данных не удалось: ОШИБКА: нет прав на создание базы данныхСоздавать базы данных разрешено не всем пользователям. Если PostgreSQL отказывается создавать базы данных для вас, значит вам необходимо соответствующее разрешение. В этом случае обратитесь к вашему администратору. Если вы устанавливали PostgreSQL сами, то для целей этого введения вы должны войти в систему с именем пользователя, запускающего сервер БД.
Вы также можете создавать базы данных с другими именами. PostgreSQL позволяет создавать сколько угодно баз данных. Имена баз данных должны начинаться с буквы и быть не длиннее 63 символов. В качестве имени базы данных удобно использовать ваше текущее имя пользователя. Многие утилиты предполагают такое имя по умолчанию, так что вы сможете упростить ввод команд. Чтобы создать базу данных с таким именем, просто введите:
$ createdbЕсли вы больше не хотите использовать вашу базу данных, вы можете удалить её. Например, если вы владелец (создатель) базы данных mydb, вы можете уничтожить её, выполнив следующую команду:
$ dropdb mydb(Эта команда не считает именем БД по умолчанию имя текущего пользователя, вы должны явно указать его.) В результате будут физически удалены все файлы, связанные с базой данных, и так как отменить это действие нельзя, не выполняйте его, не подумав о последствиях.
Узнать о командах createdb и dropdb больше можно в справке createdb и dropdb.
postgrespro.ru