Postgresql как создать пользователя windows

createuser — define a new PostgreSQL user account

Synopsis

createuser [connection-option…] [option…] [username]

Description

createuser creates a new PostgreSQL user (or more precisely, a role). Only superusers and users with CREATEROLE privilege can create new users, so createuser must be invoked by someone who can connect as a superuser or a user with CREATEROLE privilege.

If you wish to create a role with the SUPERUSER, REPLICATION, or BYPASSRLS privilege, you must connect as a superuser, not merely with CREATEROLE privilege. Being a superuser implies the ability to bypass all access permission checks within the database, so superuser access should not be granted lightly. CREATEROLE also conveys very extensive privileges.

createuser is a wrapper around the SQL command CREATE ROLE. There is no effective difference between creating users via this utility and via other methods for accessing the server.

Options

createuser accepts the following command-line arguments:

username

Specifies the name of the PostgreSQL user to be created. This name must be different from all existing roles in this PostgreSQL installation.

-a role
--with-admin=role

Specifies an existing role that will be automatically added as a member of the new role with admin option, giving it the right to grant membership in the new role to others. Multiple existing roles can be specified by writing multiple -a switches.

-c number
--connection-limit=number

Set a maximum number of connections for the new user. The default is to set no limit.

-d
--createdb

The new user will be allowed to create databases.

-D
--no-createdb

The new user will not be allowed to create databases. This is the default.

-e
--echo

Echo the commands that createuser generates and sends to the server.

-E
--encrypted

This option is obsolete but still accepted for backward compatibility.

-g role
--member-of=role
--role=role (deprecated)

Specifies the new role should be automatically added as a member of the specified existing role. Multiple existing roles can be specified by writing multiple -g switches.

-i
--inherit

The new role will automatically inherit privileges of roles it is a member of. This is the default.

-I
--no-inherit

The new role will not automatically inherit privileges of roles it is a member of.

--interactive

Prompt for the user name if none is specified on the command line, and also prompt for whichever of the options -d/-D, -r/-R, -s/-S is not specified on the command line. (This was the default behavior up to PostgreSQL 9.1.)

-l
--login

The new user will be allowed to log in (that is, the user name can be used as the initial session user identifier). This is the default.

-L
--no-login

The new user will not be allowed to log in. (A role without login privilege is still useful as a means of managing database permissions.)

-m role
--with-member=role

Specifies an existing role that will be automatically added as a member of the new role. Multiple existing roles can be specified by writing multiple -m switches.

-P
--pwprompt

If given, createuser will issue a prompt for the password of the new user. This is not necessary if you do not plan on using password authentication.

-r
--createrole

The new user will be allowed to create, alter, drop, comment on, change the security label for other roles; that is, this user will have CREATEROLE privilege. See role creation for more details about what capabilities are conferred by this privilege.

-R
--no-createrole

The new user will not be allowed to create new roles. This is the default.

-s
--superuser

The new user will be a superuser.

-S
--no-superuser

The new user will not be a superuser. This is the default.

-v timestamp
--valid-until=timestamp

Set a date and time after which the role’s password is no longer valid. The default is to set no password expiry date.

-V
--version

Print the createuser version and exit.

--bypassrls

The new user will bypass every row-level security (RLS) policy.

--no-bypassrls

The new user will not bypass row-level security (RLS) policies. This is the default.

--replication

The new user will have the REPLICATION privilege, which is described more fully in the documentation for CREATE ROLE.

--no-replication

The new user will not have the REPLICATION privilege, which is described more fully in the documentation for CREATE ROLE. This is the default.

-?
--help

Show help about createuser command line arguments, and exit.

createuser also accepts the following command-line arguments for connection parameters:

-h host
--host=host

Specifies the host name of the machine on which the server is running. If the value begins with a slash, it is used as the directory for the Unix domain socket.

-p port
--port=port

Specifies the TCP port or local Unix domain socket file extension on which the server is listening for connections.

-U username
--username=username

User name to connect as (not the user name to create).

-w
--no-password

Never issue a password prompt. If the server requires password authentication and a password is not available by other means such as a .pgpass file, the connection attempt will fail. This option can be useful in batch jobs and scripts where no user is present to enter a password.

-W
--password

Force createuser to prompt for a password (for connecting to the server, not for the password of the new user).

This option is never essential, since createuser will automatically prompt for a password if the server demands password authentication. However, createuser will waste a connection attempt finding out that the server wants a password. In some cases it is worth typing -W to avoid the extra connection attempt.

Environment

PGHOST
PGPORT
PGUSER

Default connection parameters

PG_COLOR

Specifies whether to use color in diagnostic messages. Possible values are always, auto and never.

This utility, like most other PostgreSQL utilities, also uses the environment variables supported by libpq (see Section 34.15).

Diagnostics

In case of difficulty, see CREATE ROLE and psql for discussions of potential problems and error messages. The database server must be running at the targeted host. Also, any default connection settings and environment variables used by the libpq front-end library will apply.

Examples

To create a user joe on the default database server:

$ createuser joe

To create a user joe on the default database server with prompting for some additional attributes:

$ createuser --interactive joe
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

To create the same user joe using the server on host eden, port 5000, with attributes explicitly specified, taking a look at the underlying command:

$ createuser -h eden -p 5000 -S -D -R -e joe
CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;

To create the user joe as a superuser, and assign a password immediately:

$ createuser -P -s -e joe
Enter password for new role: xyzzy
Enter it again: xyzzy
CREATE ROLE joe PASSWORD 'md5b5f5ba1a423792b526f799ae4eb3d59e' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;

In the above example, the new password isn’t actually echoed when typed, but we show what was typed for clarity. As you see, the password is encrypted before it is sent to the client.

Введение

В этой статье покажем несколько способов, как создать пользователя в PostgreSQL, включить его в группы и назначить права напрямую, а также поменяем пароль. У вас должен быть сервер с установленным Postgres, если его нет — почитайте нашу статью про установку PostgreSQL на примере Ubuntu.

Создание пользователя PostgreSQL с помощью CREATE USER

Перед тем, как рассказывать о создании пользователей, мы объясним, как устроены роли в Postgres. В современных версиях этой СУБД нет понятий «пользователь» или «группа», они объединены в одну сущность — «роль». И хотя в Postgres есть отдельные команды для создания пользователя или роли, на самом деле они создают одну и ту же сущность. Роль может иметь возможность входа в систему (то есть подключаться к БД и выполнять запросы) или не иметь ее.

Для удобства во многих ​​руководствах и инструментах роль с возможностью входа называется «пользователь», а роль без этой возможности — «группа» или «групповая роль». В этой статье мы тоже будем придерживаться этих наименований.

Итак, существует несколько способов создания пользователя в командной строке:

  1. CREATE ROLE — SQL-команда, которая выполняется на сервере базы данных. По умолчанию создается роль с параметром NOLOGIN, который означает, что эта роль не может залогиниться в СУБД. Но если указать явно параметр LOGIN, тогда эта команда будет эквивалентна созданию пользователя.

Синтаксис:

CREATE ROLE <название> [

Примеры использования:

  • CREATE ROLE selectel_user LOGIN PASSWORD ‘bestpass’; — создать пользователя и установить ему пароль.
  • CREATE ROLE selectel_user WITH LOGIN PASSWORD ‘bestpass’ VALID UNTIL ‘2022-12-31’; — создать пользователя, установить ему пароль и срок действия учетной записи до конца 2022 года.
  1. CREATE USER — тоже SQL-команда, которая выполняется на сервере. Это алиас к предыдущей команде CREATE ROLE. Единственно отличие в том, что эта команда по умолчанию использует параметр LOGIN, который разрешает логиниться в базу данных.

Синтаксис и примеры использования аналогичны команде CREATE ROLE.

  1. createuser — утилита операционной системы, которая поставляется вместе с сервером. Это тоже не самостоятельно решение, а просто обертка над SQL-командой CREATE ROLE.

Синтаксис:

createuser [параметр-подключения...] [параметр...] [имя-пользователя]

Примеры использования:

  • createuser selectel_user -P; — создать нового пользователя и установить ему пароль (терминал запросит пароль после ввода команды).
  • createuser selectel_user -P -g selectel_group; — создать пользователя, установить ему пароль и добавить его в группу selectel_group.

Как создать пользователя PostgreSQL в графическом интерфейсе

Кроме командной строки, существует множество утилит для работы с Postgres в графическом окружении. Мы будем пользоваться pgAdmin, но аналогичные действия можно выполнить и в любой другой подобной программе.

С помощью pgAdmin подключимся к базе данных и в разделе Login/Group Roles вызовем контекстное меню и выберем Create — Login/Group Role.

создание юзера с помощью pgAdmin

Появится диалоговое окно с несколькими вкладками. На первой вкладке укажем имя пользователя, при желании можно указать его описание в поле Comments:

имя и описание юзера

На вкладке Definition зададим пароль. Тут же можно указать дату истечения, после которого пользователю обязательно нужно будет сменить пароль:

задаем пароль

На вкладке Privileges можно указать, какими полномочиями будет обладать пользователь: логиниться, создавать другие роли или базы данных, будет ли это суперпользователь и т.п. Мы выберем лишь опцию Login, остальное оставим по умолчанию:

задаем полномочия

На вкладке Membership можно присвоить пользователю роли. Для примера мы присвоим ему встроенную в Postgres роль pg_monitor, которая дает права на просмотр различных таблиц и представлений, связанных с мониторингом и диагностикой базы данных:

присваиваем роли

На последней вкладке SQL можно увидеть SQL-команды, с помощью которых будет создан пользователь. Запоминать и копировать их не обязательно, pgAdmin выполнит их за нас. Эта вкладка нужна скорее для финальной проверки.

SQL-команды для создания юзера

Нажимаем на кнопку Save, и пользователь создается. Мы можем увидеть его в разделе Login/Group Roles:

созданный пользователь

Добавление и удаление прав с помощью групп в базе данных PostgreSQL

В Postgres роли могут наследоваться от других ролей. А так как роль — это либо «пользователь», либо «группа», получается, что пользователи могут наследовать привилегии от групп или других пользователей. Мы рассмотрим настройку с наследованием от групп. Создадим две группы: одну с правами только на чтение данных из таблицы, а другую — с правами на чтение и запись. По очереди назначим пользователю эти группы и посмотрим на результат.

Создаем группы:

CREATE ROLE "read_only_role";
CREATE ROLE "read_write_role";

Мы создали группы, но не дали им никаких привилегий. В нашей БД есть таблица first_table, на которой мы будем проверять работу назначения привилегий. Группе read_only_role дадим права на чтение этой таблицы, а группе read_write_role — на чтение и запись:

GRANT SELECT ON TABLE first_table TO read_only_role;
GRANT SELECT, INSERT, UPDATE, DELETE on table first_table TO read_write_role;

Группы созданы, но наш пользователь еще не унаследовал их привилегии. Для начала убедимся, что у него нет прав на чтение данных из таблицы. Залогинимся в БД под пользователем selectel_user и выполним команду:

SELECT * FROM first_table;

Получим ошибку: 

ERROR: permission denied for table first_table

Теперь из под учетной записи владельца присвоим пользователю роль на чтение:

GRANT read_only_role TO selectel_user;

Снова попробуем выполнить запрос от имени пользователя и увидим результат:

id | message  
----+---------
 1 | Привет!
(1 row)

Теперь попробуем вставить строку в таблицу:

INSERT INTO first_table VALUES (2, 'Hello!');

Получим ошибку:

ERROR: permission denied for table first_table

Все работает,  как мы планировали: у пользователя есть права на чтение данных из таблицы, но нет прав на вставку данных (а также изменение и удаление, но мы не будем это проверять).

Теперь заберем у пользователя группу на чтение и присвоим группу с правами на чтение и запись:

REVOKE read_write_role FROM selectel_user;
GRANT read_write_role TO selectel_user;

Снова попробуем вставить строку и убедимся, что данные появились в таблице:

id | message  
----+---------
 1 | Привет!
 2 | Hello!
(2 rows)

Успешно — у пользователя появились права на запись в таблицу.

Изменение пользователя: добавление привилегий напрямую и смена пароля

Теперь попробуем присвоить привилегии пользователю напрямую, а не через группы. В нашей схеме есть еще одна таблица, на которую у пользователя пока что нет прав: second_table. Убедимся в этом:

SELECT * FROM second_table;

Результат:

ERROR: permission denied for table second_table

Добавим пользователю привилегии на эту таблицу напрямую. Это делается аналогично назначению привилегий на группу, только вместо группы укажем имя пользователя. В этот раз вместо указания конкретных привилегий мы воспользуемся конструкцией ALL PRIVILEGES, которая сразу дает все полномочия на таблицу:

GRANT ALL PRIVILEGES ON TABLE second_table TO selectel_user;

Снова проверим содержимое этой таблицы и увидим результат:

id | message
----+-----------
 1 | Hello again!
(1 row)

Итак, мы назначили пользователю привилегии на таблицу напрямую, минуя роли. При этом прямое присвоение и группа дополняют друг друга, и теперь у пользователя есть разрешения на обе таблицы.

Также покажем, как можно обновить пароль пользователю. Для этого достаточно выполнить одну простую команду:

ALTER USER selectel_user PASSWORD 'newpass';

Заключение

Мы узнали, что между группой и пользователем в PostgreSQL практически нет никакой разницы, рассмотрели несколько способов создания пользователя и добавления ему групп, поработали в консоли и воспользовались графической утилитой pgAdmin.

PostgreSQL — это бесплатная объектно-реляционная СУБД с мощным функционалом, который позволяет конкурировать с платными базами данных, такими как Microsoft SQL, Oracle. PostgreSQL поддерживает пользовательские данные, функции, операции, домены и индексы. В данной статье мы рассмотрим установку и краткий обзор по управлению базой данных PostgreSQL. Мы установим СУБД PostgreSQL в Windows 10, создадим новую базу, добавим в неё таблицы и настроим доступа для пользователей. Также мы рассмотрим основы управления PostgreSQL с помощью SQL shell и визуальной системы управления PgAdmin. Надеюсь эта статья станет хорошей отправной точкой для обучения работы с PostgreSQL и использованию ее в разработке и тестовых проектах.

Содержание:

  • Установка PostgreSQL 11 в Windows 10
  • Доступ к PostgreSQL по сети, правила файерволла
  • Утилиты управления PostgreSQL через командную строку
  • PgAdmin: Визуальный редактор для PostgresSQL
  • Query Tool: использование SQL запросов в PostgreSQL

Установка PostgreSQL 11 в Windows 10

Для установки PostgreSQL перейдите на сайт https://www.postgresql.org и скачайте последнюю версию дистрибутива для Windows, на сегодняшний день это версия PostgreSQL 11 (в 11 версии PostgreSQL поддерживаются только 64-х битные редакции Windows). После загрузки запустите инсталлятор.

где скачать PostgreSQL 11 для windows 10 x64

В процессе установки установите галочки на пунктах:

  • PostgreSQL Server – сам сервер СУБД
  • PgAdmin 4 – визуальный редактор SQL
  • Stack Builder – дополнительные инструменты для разработки (возможно вам они понадобятся в будущем)
  • Command Line Tools – инструменты командной строки

установка PostgreSQL 11 и дополнительных компонентов

Установите пароль для пользователя postgres (он создается по умолчанию и имеет права суперпользователя).

PostgreSQL - задать пароль пользователю postgres

По умолчание СУБД слушает на порту 5432, который нужно будет добавить в исключения в правилах фаерволла.

5432 - порт PostgreSQL по-умолчанию

Нажимаете Далее, Далее, на этом установка PostgreSQL завершена.

Доступ к PostgreSQL по сети, правила файерволла

Чтобы разрешить сетевой доступ к вашему экземпляру PostgreSQL с других компьютеров, вам нужно создать правила в файерволе. Вы можете создать правило через командную строку или PowerShell.

Запустите командную строку от имени администратора. Введите команду:

netsh advfirewall firewall add rule name="Postgre Port" dir=in action=allow protocol=TCP localport=5432

  • Где rule name – имя правила
  • Localport – разрешенный порт

Либо вы можете создать правило, разрешающее TCP/IP доступ к экземпляру PostgreSQL на порту 5432 с помощью PowerShell:

New-NetFirewallRule -Name 'POSTGRESQL-In-TCP' -DisplayName 'PostgreSQL (TCP-In)' -Direction Inbound -Enabled True -Protocol TCP -LocalPort 5432

После применения команды в брандмауэре Windows появится новое разрешающее правило для порта Postgres.

правила бранжмауэра для доступа к PostgreSQL по сети

Совет. Для изменения порта в установленной PostgreSQL отредактируйте файл postgresql.conf по пути C:\Program Files\PostgreSQL\11\data.

Измените значение в пункте
port = 5432
. Перезапустите службу сервера postgresql-x64-11 после изменений. Можно перезапустить службу с помощью PowerShell:

Restart-Service -Name postgresql-x64-11

служба postgresql-x64-11

Более подробно о настройке параметров в конфигурационном файле postgresql.conf с помощью тюнеров смотрите в статье.

Утилиты управления PostgreSQL через командную строку

Рассмотрим управление и основные операции, которые можно выполнять с PostgreSQL через командную строку с помощью нескольких утилит. Основные инструменты управления PostgreSQL находятся в папке bin, потому все команды будем выполнять из данного каталога.

  • Запустите командную строку.

    Совет. Перед запуском СУБД, смените кодировку для нормального отображения в русской Windows 10. В командной строке выполните:
    chcp 1251

  • Перейдите в каталог bin выполнив команду:
    CD C:\Program Files\PostgreSQL\11\bin

утилиты управления postgresql - C:\Program Files\PostgreSQL\11\bin

Основные команды PostgreSQL:

PostgreSQL (shell): psql командная строка

PgAdmin: Визуальный редактор для PostgresSQL

Редактор PgAdmin служит для упрощения управления базой данных PostgresSQL в понятном визуальном режиме.

По умолчанию все созданные базы хранятся в каталоге base по пути C:\Program Files\PostgreSQL\11\data\base.

Для каждой БД существует подкаталог внутри PGDATA/base, названный по OID базы данных в pg_database. Этот подкаталог по умолчанию является местом хранения файлов базы данных; в частности, там хранятся её системные каталоги. Каждая таблица и индекс хранятся в отдельном файле.

Для резервного копирования и восстановления лучше использовать инструмент Backup в панели инструментов Tools. Для автоматизации бэкапа PostgreSQL из командной строки используйте утилиту pg_dump.exe.

Query Tool: использование SQL запросов в PostgreSQL

Для написания SQL запросов в удобном графическом редакторе используется встроенный в pgAdmin инструмент Query Tool. Например, вы хотите создать новую таблицу в базе данных через инструмент Query Tool.

  • Выберите базу данных, в панели Tools откройте Query Tool
  • Создадим таблицу сотрудников:

CREATE TABLE employee
(
Id SERIAL PRIMARY KEY,
FirstName CHARACTER VARYING(30),
LastName CHARACTER VARYING(30),
Email CHARACTER VARYING(30),
Age INTEGER
);

Query Tool: использование SQL запросов в PostgreSQL

Id — номер сотрудника, которому присвоен ключ SERIAL. Данная строка будет хранить числовое значение 1, 2, 3 и т.д., которое для каждой новой строки будет автоматически увеличиваться на единицу. В следующих строках записаны имя, фамилия сотрудника и его электронный адрес, которые имеют тип CHARACTER VARYING(30), то есть представляют строку длиной не более 30 символов. В строке — Age записан возраст, имеет тип INTEGER, т.к. хранит числа.

После того, как написали код SQL запроса в Query Tool, нажмите клавишу F5 и в базе будет создана новая таблица employee.

Для заполнения полей в свойствах таблицы выберите таблицу employee в разделе Schemas -> Tables. Откройте меню Object инструмент View/Edit Data.

Здесь вы можете заполнить данные в таблице.

редактор таблица в pgadmin

После заполнения данных выполним инструментом Query простой запрос на выборку:
select Age from employee;

выполнить select в PostgreSQL с помощью PgAdmin

I’m running PostgreSQL on mt Windows 7 machine. To run a database I type:

C:\psql -Upostgres mydb

and this works, but it would be nice if I could leave off the -U stuff, but then Postgres thinks I’m trying to log in as ‘Eric’, since that is my user profile.

So I need to add a user to Postgres, obviously. But how? If I try:

C:\createuser Eric

Postgres thinks I’m trying to add a user Eric as the user Eric which fails. Adding the -U flag doesn’t seem to work here.

What am I missing? My command window is in administrator mode, and there is no sudo available, obviously.

asked Mar 4, 2011 at 2:31

Eric Wilson's user avatar

Eric WilsonEric Wilson

57.8k77 gold badges200 silver badges270 bronze badges

1

In pgadmin you can create a new «Login Role» and name it Eric and give it permissions graphically, or from command line you can do something like this

psql -U postgres -c "CREATE ROLE Eric LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE;" mydb

see http://developer.postgresql.org/pgdocs/postgres/sql-createrole.html for information on the CREATE ROLE options.

answered Mar 4, 2011 at 2:39

digitaljoel's user avatar

digitaljoeldigitaljoel

26.3k15 gold badges90 silver badges115 bronze badges

2

Just to add more information. From official documentation: you can specify the user under which createuser utility logs in to postgres via environment variable:

PGUSER

One liner for powershell:

& { $env:PGUSER="postgres"; .\createuser.exe Eric}

answered Apr 4, 2017 at 10:29

Rayz's user avatar

The documentation for createuser indicates that a -U switch is accepted:

-U username
--username username

User name to connect as (not the user name to create).

This is what I would expect to use (although I’ve never tried to set up PostgreSQL on Windows, only on unices).

answered Mar 4, 2011 at 2:39

Greg Hewgill's user avatar

Greg HewgillGreg Hewgill

955k184 gold badges1151 silver badges1286 bronze badges

This worked for me --username Shweta;

Now to create a database create database db;

barbsan's user avatar

barbsan

3,42811 gold badges21 silver badges28 bronze badges

answered Jun 3, 2019 at 13:11

valkyrie55's user avatar

valkyrie55valkyrie55

3554 silver badges10 bronze badges

The simplest case is to use the Windows command line and as I understand that the user posgres is present:

psql -U postgres -c "CREATE ROLE shpp;"

psql -U postgres -c "ALTER ROLE  shpp WITH LOGIN;"

psql -U postgres -c "ALTER USER  shpp CREATEDB;"

psql -U postgres -c "ALTER USER  shpp WITH PASSWORD 'shpp';"

In my shpp example, this is the name and password of the new user.

James Risner's user avatar

James Risner

5,51111 gold badges26 silver badges47 bronze badges

answered Nov 5, 2022 at 11:50

Sekator's user avatar

Обновлено Обновлено:
Опубликовано Опубликовано:

Что такое PostgreSQL простыми словами.

Создание пользователя
Использование групп
Редактирование пользователя
Удаление пользователя или группы
Особые права
Для резервного копирования
Графический интерфейс

Часть нижеописанных операций нужно выполнять в командной оболочке PostgreSQL. Она может быть запущена от пользователя postgres — чтобы войти в систему от данного пользователя, вводим:

su — postgres

* если система выдаст ошибку, связанную с нехваткой прав, сначала повышаем привилегии командой sudo su или su.

Теперь запускаем командную оболочку PostgreSQL:

$ psql -Upostgres template1

* в данном примере, вход выполняется от учетной записи postgres к шаблонной базе template1.

Для просмотра всех пользователей СУБД:

=# select * from pg_user;

Создание нового пользователя

Для того, чтобы была возможность подключения к СУБД PostgreSQL от нового пользователя, необходимо создать данного пользователя, назначить ему права, выполнить настройку файла pg_hba.conf.

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

а) Добавление новой роли (пользователя) из оболочки SQL:

=# CREATE USER dmosk WITH PASSWORD ‘myPassword’;

* в примере создана роль dmosk с паролем myPassword.

б) Добавление новой роли (пользователя) из командной строки Linux:

createuser -P dmosk

2. Назначение прав на использование базы данных

Даем права на базу командой:

=# GRANT ALL PRIVILEGES ON DATABASE «database1» to dmosk;

Теперь подключаемся к базе, к которой хотим дать доступ:

=# \c database1

* в примере подсоединимся к базе с названием database1.

а) Так мы добавим все права на использование всех таблиц в базе database1 учетной записи dmosk:

database1=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO «dmosk»;

* в большинстве случаев, используется схема по умолчанию public. Но администратор может создать новую схему. Это нужно учитывать при назначении прав.

Посмотреть список всех схем можно командой:

database1=# \dn

б) Также можно дать доступ к базе для определенных таблиц:

database1=# GRANT ALL PRIVILEGES ON TABLE table1 IN SCHEMA public TO «dmosk»;

* в данном примере мы даем права на таблицу table1.

3. Настройка файла pg_hba.conf

Для возможности подключиться к СУБД от созданного пользователя, необходимо проверить настройки прав в конфигурационном файле pg_hba.conf.

Для начала смотрим путь до него:

=# SELECT current_setting(‘hba_file’);

В ответ мы получим, что-то на подобие:

—————————————— 
/var/lib/pgsql/9.6/data/pg_hba.conf
(1 row)

Выходим из оболочки sql:

=# \q

Возвращается в командную строку суперпользователя:

$ exit

Открываем pg_hba.conf:

vi /var/lib/pgsql/9.6/data/pg_hba.conf

Добавляем права на подключение нашему созданному пользователю:


# IPv4 local connections:
host    all             dmosk           127.0.0.1/32            md5

* в данном примере мы разрешили подключаться пользователю dmosk ко всем базам на сервере (all) от узла 127.0.0.1 (localhost) с требованием пароля (md5).
* необходимо, чтобы данная строка была выше строки, которая прописана по умолчанию
host    all             all             127.0.0.1/32            ident.

В файле уже может быть строка на подобие:

host    all      all     127.0.0.1/32 md5

Это значит, что у нас будут права на подключение с локального хоста под всеми пользователями с использованием пароля.

После перезапускаем службу:

systemctl restart postgresql-9.6

* в данном примере установлен postgresql версии 9.6, для разных версий на разных операционных системах команды для перезапуска сервиса могут быть разные.

4. Проверка

Для теста пробуем подключиться к PostgreSQL с помощью созданного пользователя:

psql -U dmosk -d database1 -h 127.0.0.1

* в данном примере мы подключается к локальному серверу 127.0.0.1 под пользователем dmosk и базе database1, на которую мы дали ему права.

Настройка прав доступа к базе с помощью групп

Сначала создадим групповую роль:

=# CREATE ROLE «myRole» NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

* данной командой создана группа myRole с минимальными правами.

Теперь добавим ранее созданного пользователя dmosk в эту группу:

=# GRANT «myRole» TO dmosk;

Подключимся к базе данных, для которой хотим настроить права

=# \c database1

и предоставим все права для группы myRole всем таблицам базы database1

database1=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO GROUP «myRole»;

Редактирование пользователя

1. Смена пароля

Рассмотрим несколько примеров смены пароля пользователя.

Одной командой:

=# ALTER USER postgres PASSWORD ‘password’

* в данном примере мы зададим пароль password для пользователя postgres.

С запросов ввода пароля:

=# \password postgres

* после ввода данной команды система потребует дважды ввести пароль для пользователя (в нашем примере, postgres).

Из командной строки Linux:

sudo -u postgres psql -U postgres -d postgres -c «ALTER USER postgres PASSWORD ‘password'»

* по сути, мы выполняем также запрос в оболочке sql.

Удаление пользователей и групп

Удаление пользователя выполняется следующей командой:

=# DROP USER dmosk;

Забрать права:

database1=# REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM «dmosk»;

* обратите внимание, данный запрос отличается от предоставления прав двумя моментами: 1) вместо GRANT пишем REVOKE; 2) вместо TO «dmosk» пишем FROM «dmosk»;

Назначение особых прав пользователям PostgreSQL

Помимо ALL PRIVILEGES можно выдавать права на особые операции, например:

=# GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO «dmosk»;

* команда позволит выдать права на получение данных, их обновление и добавление. Другие операции, например, удаление будут запрещены для пользователя dmosk.

Назначение прав для определенной таблицы:

database1=# GRANT ALL PRIVILEGES ON table_users TO «dmosk»;

* в данном примере мы предоставим все права на таблицу table_users в базе данных database1;

Учетная запись для резервного копирования

Для выполнения резервного копирования лучше всего подключаться к базе с минимальными привилегиями. 

Сначала создаем роль, которую будем использовать для выполнения резервного копирования:

=# CREATE USER bkpuser WITH PASSWORD ‘bkppasswd’;

* мы создадим учетную запись bkpuser с паролем bkppasswd.

Предоставляем права на подключения к базе

=# GRANT CONNECT ON DATABASE database TO bkpuser;

* в данном примере к базе database.

Подключаемся к базе (в нашем примере database):

=# \c database

Даем права на все последовательности в схеме:

=# GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO bkpuser;

* мы дали права для схемы public. Это схема является схемой по умолчанию, но в вашем случае она может быть другой. В таком случае, подставляем свое значение.

Графический интерфейс

Иногда проще воспользоваться программой для выставления прав и работы с PostgreSQL. Могу посоветовать приложение pgAdmin. Оно позволит в оконном режиме не только создать и удалить пользователей, но и полноценно работать с СУБД.

  • Power data recovery windows 10
  • Powerpoint 2010 скачать торрент для windows 10
  • Postgresql как обновить версию на windows
  • Powerpoint 2003 скачать бесплатно для windows 10
  • Power bi desktop не запускается на windows 7