Для разрешения подключения со всех адресов пишем в файле postgresql.conf
listen_addresses = '*'
Для разрешения пользователей указываем в файле pg.hba.conf
#IPv4 local connections:
host all all 0.0.0.0/0 md5
Выполнение команд
sudo -u postgres psql
Создание пользователя:
sudo -u postgres createuser [username]
Применение пароля для пользователя:
$ sudo -u postgres psql
psql=# alter user with encrypted password '';
Создание функции с IF ELSE
CREATE OR REPLACE FUNCTION is_accesses(role_name varchar, currentuser integer, claims varchar, user_id integer) RETURNS integer
AS
$BODY$
BEGIN
IF role_name is null and user_id is null then
RETURN 1;
ELSEIF (role_name is not null and claims is not null and POSITION(CONCAT('.', role_name, '.') IN claims) > 0) then
RETURN 2;
ELSEIF (role_name is not null and claims is not null and POSITION(CONCAT('.', role_name, '.') IN claims) > 0) then
RETURN 3;
ELSEIF (role_name is null and currentuser = user_id) then
RETURN 4;
else
RETURN 0;
end if;
END
$BODY$
LANGUAGE plpgsql;
Создание функции
CREATE OR REPLACE FUNCTION get_object_fields()
RETURNS SETOF sys_users
AS
$
BEGIN
return QUERY SELECT * from sys_users;
END
$ LANGUAGE plpgsql;
или
CREATE OR REPLACE FUNCTION get_object_fields()
RETURNS SETOF RECORD AS $
SELECT department_id WHERE ...
$ LANGUAGE sql STABLE;
Создание backup’a
sudo su - postgres
pg_dump postgres > postgres_db.sql
Восстановить. Нужно заранее создать бд и пользователя.
su - postgres
psql -d database -f databas.sql
====
psql -U postgres dbname < infile