Работа в базой PostgreSQL в Linux

👁 31 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Вход в терминал psql

Psql — это интерактивный терминал для работы с Postgres. Имеется обилие флагов, доступных для использования при работе с psql, но сосредоточимся на некоторых из наиболее важных, а затем, как подключиться

  • -h флаг указания хоста;
  • -U флаг указания пользователя;
  • -p флаг указания порта (по умолчанию он равен 5432).

Для входа в терминал можно использовать следующую строку, которая запросит пароль

psql -h localhost -U username databasename

Другой вариант — использовать полную строку и позволить psql анализировать ее

psql "dbname=dbhere host=hosthere user=userhere password=pwhere port=5432 sslmode=require"

Если вы в терминале, где уже установлена рабочая версия PostgreSQL, то вы можете войти под пользователя posgres, который по умолчанию является суперадминистратором СУБД PostgreSQL

Еще один способ входа, но уже без пароля

sudo -U postgres psql

Как только вы подключитесь, вы можете начать уже делать запросы. В дополнение к основным запросам вы также можете использовать определенные команды. Команда \? предоставит вам список всех доступных команд.

Все по порядку про CRUD

Одна из хорошей вещей в PGSQL заключается в том, что он поставляется с некоторыми двоичными файлами, такими как createuser и createdb. Поэтому мы будем использовать их.

По умолчанию в Postgres сконфигурирован с единственным пользователем postgres, у которого есть все права на манипуляции в СУБД и является суперадминистратором.

Вход в консоль psql

sudo -u postgres psql

Вышеупомянутая команда получает интерфейс командной строки psql в режиме полного администрирования.

Работа с пользователями

Создание пользователя посредством бинарника createuser

sudo -u postgres createuser <username>

Задание пароля для пользователя

$ sudo -u postgres psql
psql=# ALTER USER <username> WITH ENCRYPTED PASSWORD '<password>';

Создание пользователя посредством терминала psql

psql=# CREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass';

Работа с базой данных

Создание базы данных посредством бинарника createdb

sudo -u postgres createdb <dbname>

Задание привилегий для пользователя на действия с базой данных

psql=# GRANT ALL PRIVILEGES ON DATABASE <dbname> TO <username>;

Создание базы данных посредством терминала psql

psql=# CREATE DATABASE <dbname>;

 

Установка прав пользователям

Установка пользователю роль администратора

psql=# GRANT admins TO <username>;

Чтобы дать все права пользователю на операции с базой данных можно воспользоваться командой psql

psql=# GRANT ALL PRIVILEGES ON DATABASE <dbname> TO <username>;

Тоже самое по другому

psql=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA <nameschema> TO <username>;

Разрешение на соединение

psql=# GRANT CONNECT ON DATABASE <namedb> TO <username>;

Можно комбинировать несколько привилегий

psql=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA <namescheme> TO <username>;

Если мы хотим дать привилегии на действия всем пользователям, то пишем так

psql=# GRANT ALL PRIVILEGES ON DATABASE <dbname> TO PUBLIC;

Если мы хотим дать привилегии на таблицы, то делаем так

psql=# ALTER DEFAULT PRIVILEGES IN SCHEMA <schemaname> GRANT ALL PRIVILEGES ON TABLES TO <username>;

 

Примечание. Ключевое слово SCHEMA означает тоже самое, что и имя базы данных.

Разрешение входа для пользователя postgres через phpPgAdmin

PostgresSQL по умолчанию имеет суперпользователя с логином postgres и вход через этот логин из вне запрещен. Поэтому, чтобы управлять базами через phpPgAdmin нам нужно войти, разрешив внешний вход. Делается через файл конфигурации phpPgAdmin, который называется config.inc.php.

В составе Vesta, данный файл конфигурации в Ubuntu находится по пути /etc/phppgadmin/config.inc.php.

В данном файле нужно поменять параметр $conf[‘extra_login_security’] поменять с true на false

    // If extra login security is true, then logins via phpPgAdmin with no
    // password or certain usernames (pgsql, postgres, root, administrator)
    // will be denied. Only set this false once you have read the FAQ and
    // understand how to change PostgreSQL's pg_hba.conf to enable
    // passworded local connections.
    $conf['extra_login_security'] = false;

Далее, если вы не знаете пароль супер администратора postgres, то есть возможность ее сменить через терминал

$ sudo -u postgres psql
$ postgres=# \password postgres

После данной команды сервер запросит ввести пароль и подтвердить еще одним вводом и дальше установится новый пароль, которым мы сможем войти через phpPgAdmin