Вход в терминал 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