Эта статья – моя шпаргалка по наиболее часто используемым командам в консоли PostgreSQL.
При установке PostgreSQL создает отдельного пользователя Linux с именем postgres
. В моих примерах я буду запускать команды от имени этого пользователя. Хотя вы можете авторизоваться под ним и запускать команды непосредственно из сессии пользователя postgres.
Вывести список баз с расширенной информацией:
# sudo -u postgres psql -U postgres -l+
Создать текстовый дамп базы данных:
# sudo -u postgres pg_dump -U postgres dbtemp01 \
> ~/ dbtemp01.sql
Сжать дамп базы данных PostgreSQL на лету:
# sudo -u postgres pg_dump -U postgres dbtemp01 \
| pigz > ~/dbtemp01.sql.gz
Восстановить базу данных из дампа в новую БД:
# sudo -u postgres createdb -U postgres \
-T template0 dbtemp02
# sudo -u postgres psql -U postgres dbtemp02 \
< ~/ dbtemp01.sql
Выйти из консоли psql:
$ \q
Создать нового пользователя PostgreSQL:
# sudo -u postgres createuser -U postgres usrsite1
Задать пароль пользователя
# sudo -u postgres psql -U postgres -c \
"ALTER USER usrsite1 PASSWORD 'SecRet2pwd'"
Вывести список пользователей:
# sudo -u postgres psql -U postgres -c \
"select * from pg_user"
Дать полные права на базу:
# sudo -u postgres psql -U postgres -c \
"GRANT ALL PRIVILEGES ON DATABASE sitedb to usrsite1"
Назначить пользователя владельцем базы:
# sudo -u postgres psql -U postgres -c \
"ALTER DATABASE sitedb OWNER TO usrsite1"
Выполнить очистку (-f
) и анализ (-z
) базы данных (Postgres Pro):
# sudo -u postgres vacuumdb -U postgres -f -z -d sitedb
Переиндексировать базу:
# sudo -u postgres reindexdb -U postgres -d sitedb
Удалить базу данных:
# sudo -u postgres psql -U postgres -c \
"DROP DATABASE sitedb"
Вывести права пользователя:
select * from INFORMATION_SCHEMA.table_privileges WHERE grantee = '<USERNAME>';
Права на группы, членом которых является пользователь USER_NAME:
select * from INFORMATION_SCHEMA.role_table_grants WHERE grantee = '<USERNAME>';
Проверка прав на таблицу:
select relacl from pg_catalog.pg_class where relname='<TABLENAME>';
Еще несколько популярных команд для интерактивного режима psql:
\connect db_name
– подключиться к базе данных
\du
– вывести список пользователей
\dp
— вывести список таблиц, представлений, последовательностей, прав доступа к ним
\dt * — список таблиц