Перейти к содержимому

Как подключиться к базе данных postgresql через консоль

  • автор:

Работаем с PostgreSQL через командную строку в Linux

Для подключения к базе данных PostgreSQL понадобится установленный PostgreSQL клиент:

sudo apt install postgresql-client-

sudo apt install postgresql-client-12

Для установки PostgreSQL сервера:

sudo apt install postgresql

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

sudo -u postgres psql -c "SELECT version();"

Вывод команды должен быть примерно таким:

$ sudo -u postgres psql -c "SELECT version();" version ---------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 10.10 (Ubuntu 10.10-0ubuntu0.18.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit (1 row)

PostgreSQL Подключение, Пользователи (Роли) и Базы Данных

Логин в только что установленный postgreSQL сервер нужно производить под именем пользователя postgres:

sudo -i -u postgres psql

Выйти из клиента PostgreSQL:
\q

Для подключения к базе данных PostgreSQL можно использовать команду:

psql -U -h -d

Если такая команда не просит ввести пароль пользователя, то можно еще добавить опцию -W.

$ psql -Usrv161924_dom -hpgsql-161924.srv.hoster.ru -dsrv161924_dom -W Password for user srv161924_dom:

После ввода пароля и успешного подключения к базе данных PostgreSQL, можно посылать SQL-запросы и psql-команды.

PostgreSQL создание новой роли и базы данных

Создать новую роль c именем admin (указывайте нужное имя):

sudo su - postgres -c "createuser admin"

Создание новой базы данных:

sudo su - postgres -c "createdb testDb"

Дать права роли на базу данных:

grant all privileges on database testDb to admin;

Включить удаленный PostgreSQL доступ для пользователей

Нам нужно отредактировать файл /etc/postgresql//main/pg_hba.conf, задав опцию md5 вместо peer.

может быть 10, 11, 12 и т.д.

sudo vim /etc/postgresql/12/main/pg_hba.conf

После этого сделать restart PostgreSQL:

sudo service postgresql restart

Полезные команды PostgreSQL

Выйти из клиента PostgreSQL:

\q

Показать список баз данных PostgreSQL:

\l

Показать список таблиц:

\dt

Показать список пользователей (ролей):

\du

Показать структуру таблицы:

\d table_name

Переименовать базу данных:

ALTER DATABASE db RENAME TO newdb;

Удалить базу данных:

drop database db_name;

Изменить текущую базу данных в PostgreSQL (вы не сможете переименовать или удалить текущую базу данных):

\connect db_name или более короткий alias: \c db_name

Удалить роль (пользователя):

DROP ROLE user_name;

Роль не будет удалена, если у нее есть привелегии — возникнет ошибка ERROR: role cannot be dropped because some objects depend on it .

Нужно удалить привелегии у роли, например если нужно удалить роль admin2, нужно выполнить последовательность комманд с Drop Owned:

db=# REASSIGN OWNED BY admin2 TO postgres; REASSIGN OWNED db=# DROP OWNED BY admin2; DROP OWNED db=# drop role admin2; DROP ROLE

Дать права пользователю/роли на логин ( role is not permitted to log in ):

ALTER ROLE admin2 WITH login;

Выбор shema psql в консоли:

Посмотреть список всех схем:

Подключиться к конкретной схеме:

SET search_path TO schema_name

Sequences

Получить имена всех созданных sequences:

select relname from pg_class where relkind='S';

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

SELECT last_value FROM order_id_seq;
  • Работа с MySQL через консоль

Как подключиться к базе данных postgresql через консоль

Консольный клиент psql представляет еще один способ взаимодействия с сервером PostgreSQL. Данная программа также, как и pgAdmin, позволяет выполнять команды языка SQL.

Консольный клиент psql для работы с PostgreSQL

Запустим psql. Программа предложит ввести название сервера, базы данных, порта и пользователя. Эти пункты можно прощелкать, так как для них будут использоваться значения по умолчанию (для сервера — localhost, для базы данных — postgres, для порта — 5432, в качестве пользователя — суперпользователь postres). Далее надо будет ввести пароль для пользователя (по умолчанию пользователя postgres):

Консольный клиент psql

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

Теперь создадим базу данных с помощью следующей команды языка SQL:

create database test2;

Для создания базы данных применяется команда create database , после которой указывается название бд. То есть в данном случае название бд — «test2». Причем команда завершается точкой с запятой.

Далее подключимся к этой базе данных для осуществления с ней взаимодействия. Для этого применяется команда \c (сокращение от connect), после которой указывается имя базы данных:

\c test2

Затем создадим в этой базе данных таблицу с помощью команды:

create table users (Id serial primary key, Name character varying(30), Age integer);

Данная команда создает таблицу users, в которой будет три столбца — Id, Name и Age.

create database and tables in psql

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

insert into users (Name, Age) values ('Tom', 33);

И в конце получим добавленные данные:

select * from users;

insert and select in psql

Стоит отметить, что по умолчанию консоль в Windows поддерживает кодировку CP866, тогда как базы данных могут работать совсем с другой кодировкой, например, 1251. И даже сам клиент psql выводит нам соответствующие сообщения. Кроме того, при получении данных, при выводе информации о базах данных, таблицы и т.д. некоторая информация может отображаться некорректно. В этом случае перед запуском psql надо установить нужную кодировку и затем из консоли запустить программу psql.

Как подключиться к базе данных postgresql через консоль

Создав базу данных, вы можете обратиться к ней:

Запустив терминальную программу PostgreSQL под названием psql , в которой можно интерактивно вводить, редактировать и выполнять команды SQL .

Используя существующие графические инструменты, например, pgAdmin или офисный пакет с поддержкой ODBC или JDBC , позволяющий создавать и управлять базой данных. Эти возможности здесь не рассматриваются.

Чтобы работать с примерами этого введения, начните с psql . Подключиться с его помощью к базе данных mydb можно, введя команду:

$ psql mydb 

Если имя базы данных не указать, она будет выбрана по имени пользователя. Об этом уже рассказывалось в предыдущем разделе, посвящённом команде createdb .

В psql вы увидите следующее сообщение:

psql (9.6.24) Type "help" for help. mydb=>

Последняя строка может выглядеть и так:

mydb=#

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

Если вы столкнулись с проблемами при запуске psql , вернитесь к предыдущему разделу. Команды createdb и psql подключаются к серверу одинаково, так что если первая работает, должна работать и вторая.

Последняя строка в выводе psql — это приглашение, которое показывает, что psql ждёт ваших команд и вы можете вводить SQL -запросы в рабочей среде psql . Попробуйте эти команды:

mydb=> SELECT version(); version ------------------------------------------------------------------------------------------ PostgreSQL 9.6.24 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit (1 row) mydb=> SELECT current_date; date ------------ 2016-01-07 (1 row) mydb=> SELECT 2 + 2; ?column? ---------- 4 (1 row)

В программе psql есть множество внутренних команд, которые не являются SQL-операторами. Они начинаются с обратной косой черты, « \ » . Например, вы можете получить справку по различным SQL -командам PostgreSQL , введя:

mydb=> \h 

Чтобы выйти из psql , введите:

mydb=> \q 

и psql завершит свою работу, а вы вернётесь в командную оболочку операционной системы. (Чтобы узнать о внутренних командах, введите \? в приглашении командной строки psql .) Все возможности psql документированы в справке psql . В этом руководстве мы не будем использовать эти возможности явно, но вы можете изучить их и применять при удобном случае.

Пред. Наверх След.
1.3. Создание базы данных Начало Глава 2. Язык SQL

�� Шпаргалка по основным командам PostgreSQL

Вся работа с PostgreSQL осуществляется под пользователем postgres.

$sudo su postgres

Работать с PosgreSQL можно как в интерактивном режиме, так и из командной строки. Программа — psql.

Основные команды PostgreSQL в интерактивном режиме:

  • \connect db_name – подключиться к базе с именем db_name
  • \du – список пользователей
  • \dp (или \z) – список таблиц, представлений, последовательностей, прав доступа к ним
  • \di – индексы
  • \ds – последовательности
  • \dt – список таблиц
  • \dt+ — список всех таблиц с описанием
  • \dt *s* — список всех таблиц, содержащих s в имени
  • \dv – представления
  • \dS – системные таблицы
  • \d+ – описание таблицы
  • \o – пересылка результатов запроса в файл
  • \l – список баз данных
  • \i – читать входящие данные из файла
  • \e – открывает текущее содержимое буфера запроса в редакторе (если иное не указано в окружении переменной EDITOR, то будет использоваться по умолчанию vi)
  • \d “table_name” – описание таблицы
  • \i запуск команды из внешнего файла, например \i /my/directory/my.sql
  • \pset – команда настройки параметров форматирования
  • \echo – выводит сообщение
  • \set – устанавливает значение переменной среды. Без параметров выводит список текущих переменных (\unset – удаляет).
  • \? – справочник psql
  • \help – справочник SQL
  • \q (или Ctrl+D) – выход с программы

Работа с PostgreSQL из командной строки:

  • -c (или –command) – запуск команды SQL без выхода в интерактивный режим
  • -f file.sql — выполнение команд из файла file.sql
  • -l (или –list) – выводит список доступных баз данных
  • -U (или –username) – указываем имя пользователя (например postgres)
  • -W (или –password) – приглашение на ввод пароля
  • -d dbname — подключение к БД dbname
  • -h – имя хоста (сервера)
  • -s – пошаговый режим, то есть, нужно будет подтверждать все команды
  • –S – однострочный режим, то есть, переход на новую строку будет выполнять запрос (избавляет от ; в конце конструкции SQL)
  • -V – версия PostgreSQL без входа в интерактивный режим

Примеры:

psql -U postgres -d dbname -c «CREATE TABLE my(some_id serial PRIMARY KEY, some_text text);» — выполнение команды в базе dbname.

psql -d dbname -H -c «SELECT * FROM my» -o my.html — вывод результата запроса в html-файл.

Утилиты (программы) PosgreSQL:

  • createdb и dropdb – создание и удаление базы данных (соответственно)
  • createuser и dropuser – создание и пользователя (соответственно)
  • pg_ctl – программа предназначенная для решения общих задач управления (запуск, останов, настройка параметров и т.д.)
  • postmaster – многопользовательский серверный модуль PostgreSQL (настройка уровней отладки, портов, каталогов данных)
  • initdb – создание новых кластеров PostgreSQL
  • initlocation – программа для создания каталогов для вторичного хранения баз данных
  • vacuumdb – физическое и аналитическое сопровождение БД
  • pg_dump – архивация и восстановление данных
  • pg_dumpall – резервное копирование всего кластера PostgreSQL
  • pg_restore – восстановление БД из архивов (.tar, .tar.gz)

Примеры создания резервных копий:

Создание бекапа базы mydb, в сжатом виде

pg_dump -h localhost -p 5440 -U someuser -F c -b -v -f mydb.backup mydb

Создание бекапа базы mydb, в виде обычного текстового файла, включая команду для создания БД

pg_dump -h localhost -p 5432 -U someuser -C -F p -b -v -f mydb.backup mydb

Создание бекапа базы mydb, в сжатом виде, с таблицами которые содержат в имени payments

pg_dump -h localhost -p 5432 -U someuser -F c -b -v -t *payments* -f payment_tables.backup mydb

Дамп данных только одной, конкретной таблицы. Если нужно создать резервную копию нескольких таблиц, то имена этих таблиц перечисляются с помощью ключа -t для каждой таблицы.

pg_dump -a -t table_name -f file_name database_name

Создание резервной копии с сжатием в gz

pg_dump -h localhost -O -F p -c -U postgres mydb | gzip -c > mydb.gz
Список наиболее часто используемых опций:
  • -h host — хост, если не указан то используется localhost или значение из переменной окружения PGHOST.
  • -p port — порт, если не указан то используется 5432 или значение из переменной окружения PGPORT.
  • -u — пользователь, если не указан то используется текущий пользователь, также значение можно указать в переменной окружения PGUSER.
  • -a, —data-only — дамп только данных, по-умолчанию сохраняются данные и схема.
  • -b — включать в дамп большие объекты (blog’и).
  • -s, —schema-only — дамп только схемы.
  • -C, —create — добавляет команду для создания БД.
  • -c — добавляет команды для удаления (drop) объектов (таблиц, видов и т.д.).
  • -O — не добавлять команды для установки владельца объекта (таблиц, видов и т.д.).
  • -F, —format — выходной формат дампа, custom, tar, или plain text.
  • -t, —table=TABLE — указываем определенную таблицу для дампа.
  • -v, —verbose — вывод подробной информации.
  • -D, —attribute-inserts — дамп используя команду INSERT с списком имен свойств.

Бекап всех баз данных используя команду pg_dumpall.

pg_dumpall > all.sql

Восстановление таблиц из резервных копий (бэкапов):

psql — восстановление бекапов, которые хранятся в обычном текстовом файле (plain text);
pg_restore — восстановление сжатых бекапов (tar);

Восстановление всего бекапа с игнорированием ошибок

psql -h localhost -U someuser -d dbname -f mydb.sql

Восстановление всего бекапа с остановкой на первой ошибке

psql -h localhost -U someuser —set ON_ERROR_STOP=on -f mydb.sql

Для восстановления из tar-арихива нам понадобиться сначала создать базу с помощью CREATE DATABASE mydb; (если при создании бекапа не была указана опция -C) и восстановить

pg_restore —dbname=mydb —jobs=4 —verbose mydb.backup

Восстановление резервной копии БД, сжатой gz

gunzip mydb.gz psql -U postgres -d mydb -f mydb

�� Похожие статьи на сайте

  • Резервное копирование и восстановление баз данных PostgreSQL
  • Создание кластера баз данных PostgreSQL
  • Настройка аутентификации клиентов в PostgreSQL — файл pg_hba.conf
  • Системные колонки таблиц PostgreSQL
  • Оптимизация PostgreSQL. Autovacuum — сборка мусора
  • Оптимизация PostgreSQL. Журнал транзакций и контрольные точки
  • Оптимизация PostgreSQL. Настройка ресурсов
  • Шпаргалка по основным командам PostgreSQL
  • Установка 1C 8.3 под PostgreSQL 9.3 на Ubuntu Server 14.04 X64

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *