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;


