PostgreSQL: создать БД, пользователя, таблицу, установить права

  • Применим к себе права суперпользователя postgres (от которого запущен сервер Использование и настройка PostgreSQL).
    # su - postgres
    $ pwd
    /var/lib/postgresql
  • Создать базу данных wandb. PostgreSQL позволяет создавать любое количество баз данных на одном сервере. Имена баз данных должны состоять из букв и цифр (вначале всегда должна быть буква) и быть не более 63 символов длиной. Можно рекомендовать создавать базу данных с таким же именем как у пользователя.
    $ createdb wandb
    или из консоли psql
    postgres=# create database wandb;
  • Создать пользователя wanuser для БД wandb. Имена пользователей в PostgreSQL существуют отдельно от имен пользователей в операционной системе. Если вы подключаетесь к какой-либо базе данных, вы можете выбрать для подключения какое-нибудь имя пользователя PostgreSQL; если вы это не сделаете, то по умолчанию будет установлено такое же имя, какое у вас в операционной системе (в нашем случае пользователь postgres). Добавление(createuser) и удаление(dropuser) пользователей.
    $ createuser wanuser
    Shall the new role be a superuser? (y/n) n
    Shall the new role be allowed to create databases? (y/n) n
    Shall the new role be allowed to create more new roles? (y/n) n
    
    или из консоли psql
    postgres=# create user wanuser;

    Мы создали пользователя wanuser с ограниченными правами, для их изменения используйте команды

    Расширить пользователю права:
    # alter user wanuser superuser createrole createdb;
    Ограничить:
     alter user wanuser nosuperuser nocreaterole nocreatedb;
  • Установим пользователя wanuser владельцем БД wandb.
    postgres=# alter database wandb owner to wanuser;

    Если нужно стать владельцем не всей БД, а только таблицы countries

    wandb=# alter table countries owner to wanuser;
  • Установим пароль для пользователя wanuser. В этом случае в качестве метода аутентификации должен использоваться md5 (настраивается в файле pg_hba.conf).
    # ALTER USER wanuser WITH ENCRYPTED PASSWORD 'test1234';
  • Создадим таблицу суперпользователем postgres.
    $ psql wandb
    wandb=# CREATE TABLE weather (city varchar(80), temp_hi int, prcp real, date date);
  • Создадим таблицу владельцем БД wandb пользователем wanuser.
    $ psql wandb -U wanuser
    Password for user wanuser:
     
    wandb=> CREATE TABLE weatheuser (city varchar(80), temp_hi int, prcp real, date date);
     
    wandb=> \dt
               List of relations
     Schema |    Name    | Type  |  Owner   
    --------+------------+-------+----------
     public | weather    | table | postgres
     public | weatheuser | table | wanuser
    (2 rows)
  • Сменим владельца для таблицы weather (нужны права суперпользователя). Prompt со знаком # означает, что подключение произошло с правами суперпользователя.
    wandb=# ALTER TABLE weather OWNER TO wanuser;
PQ VPS сервера в 28+ странах.