Категории

четверг, 10 июля 2014 г.

PostgreSQL. Создать базу данных и пользователя для нее.

Запускаем psql под пользователем postgres:
su postgres -c psql
Теперь в консоли PostgreSQL вводим следующие команды:
create database dbname with encoding='UNICODE';
create user dbuser with password 'dbpass';
grant all privileges on database dbname to dbuser;
А также не забываем дать доступ новому пользователю к серверу, для этого в файле /var/lib/pgsql/data/pg_hba.conf:
# For dbuser:
host    dbname dbuser   127.0.0.1/32           md5
local   dbname dbuser                          md5
Где dbname – имя базы данных,
dbuser – имя пользователя,
dbpass – пароль пользователя dbuser. И говорим серверу PostgreSQL перечитать измененный конфиг pg_hba.conf:
root@Linux# service postgresql reload
Скрипт для удобства:
#!/bin/sh

PGPORT=

echo 'Input dbname: '
read dbname

dbuser=${dbuser:-$dbname}
echo "Input dbuser: [$dbuser]"  # Generate by dbname.

randpass=$(tr -cd A-Za-z < /dev/urandom | head -c8)
echo "Input dbpass [$randpass]:"  # Generate random.
read dbpass
dbpass=${dbpass:-$randpass}

# Facepalm centos... Need fill path to binary psql: /usr/pgsql-9.3/bin/psql
su - postgres -c "/usr/pgsql-9.3/bin/psql --dbname=$DB --port=$PGPORT <<_EOF
\x
CREATE DATABASE $dbname WITH ENCODING='UNICODE';
CREATE USER $dbuser WITH PASSWORD '$dbpass';
GRANT ALL PRIVILEGES ON DATABASE $dbname TO $dbuser;
_EOF
"
# TODO: check error code here.

# Do backup modified cfg files.
cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf_`date +%s`

PGPORT=${PGPORT:-5432}
[ -n "$dbname" -a -n "$dbuser" ] && cat <<-_EOF >>/var/lib/pgsql/data/pg_hba.conf

 # For $dbuser, generated at `date`:
 host    $dbname $dbuser   127.0.0.1/32           md5
 local   $dbname $dbuser                          md5
_EOF

# Do reload.
service postgresql-9.3 reload

Ссылки по теме:
1. PostgreSQL. Как создать базу данных и пользователя для нее.

Комментариев нет:

Отправить комментарий