Главная
   Документация
      Asterisk
      CentOS
      Debian
      Docker
      FreeBSD
      openHAB
      PostgreSQL
      Raspberry Pi
      Ubuntu
      WWW
      Разное




Главная Документация PostgreSQL › Шпаргалка для PostgreSQL

Шпаргалка для PostgreSQL.

Автор:

Статья написана 2017-08-15 16:58:40
Последние правки 2018-11-15 18:28:57

Полезные команды для работы с postgresql из консоли.

Вход в оболочку psql
Создать пользователя и базу
Создать readonly пользователя
Права доступа на схему и её таблицы
Узнать размер базы
Закрыть подключения к базе
Дамп конкретной схемы


Вход в оболочку для работы с СУБД:
$ sudo -u postgres psql
Для выхода из оболочки служит команда \q.


Создать пользователя и базу данных:
# CREATE USER new_user WITH password 'qwerty';
# CREATE DATABASE new_database OWNER=new_user;
# GRANT ALL PRIVILEGES ON DATABASE new_database TO new_user;

Создать readonly пользователя:
# CREATE USER ro_user WITH password 'qwerty';
# ALTER ROLE "ro_user" WITH LOGIN;
# GRANT CONNECT ON DATABASE new_database TO ro_user;
# \q database
database=# GRANT USAGE ON SCHEMA public TO ro_user;
доступ к отдельным объектам внутри схемы:
database=# GRANT SELECT ON public.table1 TO ro_user;
database=# GRANT SELECT ON public.table2 TO ro_user;
доступ к схеме и всем объектам схемы (если есть ещё схемы):
database=# GRANT USAGE ON SCHEMA my_schema TO ro_user;
database=# GRANT SELECT ON ALL SEQUENCES IN SCHEMA my_schema TO ro_user;
database=# GRANT SELECT ON ALL TABLES IN SCHEMA my_schema TO ro_user;
database=# ALTER DEFAULT PRIVILEGES IN SCHEMA my_schema GRANT SELECT ON TABLES TO ro_user;
Cтрока ниже дает полный доступ ко всем вновь создаваемым таблицам в схеме:
database=# ALTER DEFAULT PRIVILEGES IN SCHEMA my_schema GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO user;

Схемы:
- список схем:
# \connect database
# \dn
- выбрать схему:
database=# SET search_path to my_scheme,public;
- посмотреть права на схему:
database=# \z
- дать доступ к схеме:
database=# GRANT USAGE ON SCHEMA my_schema,my_schema1 TO my_role;
database=# GRANT SELECT (или USAGE) ON ALL SEQUENCES IN SCHEMA my_schema TO my_role;
database=# GRANT SELECT ON ALL TABLES IN SCHEMA my_schema TO my_role;
- удалить доступ:
database=# REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA "my_schema" FROM "my_role";

Узнать размер базы:
# select pg_database_size('base');

Закрыть подключения к базе:
Версия 9.1 и ниже
# SELECT pg_terminate_backend(pg_stat_activity.procpid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'ИМЯ БАЗЫ' AND procpid <> pg_backend_pid();
Версия 9.2+
# SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'ИМЯ БАЗЫ' AND pid <> pg_backend_pid();

Дамп конкретной схемы:
$ pg_dump -U postgres --schema=ИМЯ_СХЕМЫ -f ИМЯ_ФАЙЛА.sql ИМЯ_БАЗЫ
или
$ pg_dump -U postgres -n ИМЯ_СХЕМЫ -f ИМЯ_ФАЙЛА.sql ИМЯ_БАЗЫ




Связанные странички:
Устанавливаем Postgresql 9.6 в Ubuntu
PostgreSQL ошибка remaining connection slots are reserved...