PostgreSql - Установка и настройка

Установка

$ sudo apt-get install postgresql postgresql-contrib

$ passwd postgres

$ sudo su - postgres

$ psql postgres

Homebrew plst

nano /usr/local/Cellar/postgresql-9.4/9.4.5/homebrew.mxcl.postgresql.plist

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <true/> <key>Label</key> <string>homebrew.mxcl.postgresql.plist</string> <key>ProgramArguments</key> <array> <string>/usr/local/Cellar/postgresql-9.4/9.4.5/bin/postgres</string> <string>-D</string> <string>/usr/local/var/postgres</string> <string>-r</string> <string>/usr/local/var/postgres/server.log</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/usr/local/var</string> <key>StandardErrorPath</key> <string>/usr/local/var/postgres/server.log</string> </dict> </plist>

Настройка доступа

nano /etc/postgresql/X.Y/main/pg_hba.conf

local all all trust # replace ident or peer with trust
host all all 192.168.1.1/28 md5

# psql -U B -T -h localhost -U postgres

Создание дампа

# pg_dump -U B -T -h host1 dbname > outfile.sql
# pg_dump -U B -T dbname | gzip > filename.gz
# pg_dumpall > outfile.sql
# pg_dump --host 127.0.0.1 --port 5432 --username "postgres" --no-password --format plain --no-owner --no-privileges --no-tablespaces --verbose --no-unlogged-table-data --file "/dump3" "test"

Восстановление из дампа / Restore

# psql park < ./park.sql
# psql -h localhost -f dump2 -U postgres test2
# psql –h localhost –p 5432 --dbname=park --username=mirocow < park2.20151018_142522/park2.sql

Клиенты

apt-get install phppgadmin

git clone git://github.com/phppgadmin/phppgadmin.git

Вопрос/Ответ

Пользователи

Как создать пользователя в PostgreSQL?

CREATE USER ramesh WITH password ‘tmppassword’;

Как посмотреть список пользователей?

SELECT * FROM pg_shadow;

Как сменить пароль у пользователя?

ALTER USER postgres WITH PASSWORD 'password';

Смена пароля

Включаем однопользовательский режим nano /usr/local/opt/postgresql/pg_hba.conf

local all all trust

подключаемся к бд, указывая локального пользователя (в моем случае mirocow)

меняем пароль у пользователя mirocow

включаем многопользовательский режим добавляем строчку в nano /usr/local/opt/postgresql/pg_hba.conf

local all postgres password

Права

Смена прав

ALTER TABLE sequence_name OWNER TO владелец

Привелегии

Как посмотреть привелегии пользователя?

SELECT n.nspname as "Схема",
c.relname as "Таблица",
c.relacl as "Привилегии доступа"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r', 'v', 'S')
AND pg_catalog.pg_table_is_visible(c.oid) /*AND n.nspname !~ '^pg_'*/
ORDER BY 1, 2;

Как дать привелегии

GRANT ALL ON DATABASE demodb TO demo;

Базы

Как создать базу в PostgreSQL?

CREATE DATABASE mydb WITH OWNER ramesh;

Как удалить базу в PostgreSQL?

DROP DATABASE mydb;

Как получить весь список баз в Postgresql?

SELECT datname FROM pg_database;

SELECT * FROM pg_database;

Таблицы

Как вывести список всех таблиц?

SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';