Это старая версия документа!
# apt install postgresql postgresql-contrib
# -u postgres psql -c "SELECT version();"
PostgreSQL поддерживает несколько методов аутентификации . Наиболее часто используемые методы:
Аутентификация клиента PostgreSQL определяется в файле конфигурации с именем pg_hba.conf.
Пользователь «postgres» создается автоматически, в системе!!! и является суперпользователем для СУБД.
$ sudo su - postgres $ psql
$ sudo su - postgres -c "createuser kylo" $ sudo su - postgres -c "createdb kylodb" psql$ GRANT ALL PRIVILEGES ON DATABASE kylodb TO kylo;
По умолчанию сервер PostgreSQL слушает только локальный интерфейс 127.0.0.1.
$ sudo nano /etc/postgresql/11/main/postgresql.conf listen_addresses = '*' # what IP address(es) to listen on;
$ sudo nano /etc/postgresql/11/main/pg_hba.conf # TYPE DATABASE USER ADDRESS METHOD # The user jane will be able to access all databases from all locations using an md5 password host all jane 0.0.0.0/0 md5 # The user jane will be able to access only the janedb from all locations using an md5 password host janedb jane 0.0.0.0/0 md5 # The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password host all jane 192.168.1.134 trust
CREATE DATABASE test_db; CREATE USER test_user WITH encrypted password 'dbpassword'; GRANT ALL privileges ON DATABASE test_db TO test_user;
CREATE ROLE admin WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'Passw0rd';
Роли базы данных концептуально полностью отделены от пользователей операционной системы. На практике может быть удобно поддерживать переписку, но это не обязательно. Роли базы данных являются глобальными для всей установки кластера базы данных (а не для отдельной базы данных).
CREATE ROLE name; DROP ROLE name;
createuser name dropuser name
SELECT rolname FROM pg_roles;
Роль базы данных может иметь ряд атрибутов, которые определяют ее привилегии и взаимодействуют с системой аутентификации клиента
CREATE USER эквивалентен CREATE ROLE, за исключением того, что CREATE USER предполагает LOGIN по умолчанию, а CREATE ROLE — нет.
Атрибуты роли можно изменить после создания с помощью ALTER ROLE
ALTER ROLE myname SET enable_indexscan TO off;
GRANT UPDATE ON accounts TO joe; REVOKE ALL ON accounts FROM PUBLIC;
ALTER ROLE super WITH PASSWORD 'secret123';
\l - список баз \c <dbname> выбор базы
Извлекаем таблицу (-l), убираем пробелы (-A) и седом меняем разделители на табы
sudo -u postgres psql -lA | sed -e "s/|/\t/g"
sudo -i -u postgres psql -d zabbix -c "select * from functions ;"
Узнать размер базы
sudo -u postgres psql -c "SELECT pg_size_pretty( pg_database_size( 'DBName' ) );"