×

Как установить и настроить PostgreSQL в MacOS

Установить PostgreSQL

brew install postgresql

service ... и /etc/init.d – у нас само собой нет, поэтому pg_ctl:

→ pg_ctl status
pg_ctl: no database directory specified and environment variable PGDATA unset
Try "pg_ctl --help" for more information.

Но даже это не работает – не поднят PostgreSQL. Поднимаем PostgreSQL:

→ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
waiting for server to start.... done
server started

Настроим PostgreSQL

Отлично, теперь создадим юзера, базу данных:

sudo psql -U postgres
psql: FATAL:  role "postgres" does not exist

Окей, юзера тоже нет. А что же есть?

→ psql -l
                                            List of databases
   Name    | Owner     | Encoding |   Collate   |    Ctype    |     Access privileges          
-----------+-----------+----------+-------------+-------------+-------------------------------
 postgres  | USER_NAME | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | USER_NAME | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/USER_NAME                 +
           |           |          |             |             | USER_NAME=CTc/USER_NAME
 template1 | USER_NAME | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/USER_NAME                 +
           |           |          |             |             | USER_NAME=CTc/USER_NAME
(3 rows)

Есть наш юзер с правами суперюзера. Однако, привывычка...

→ sudo psql -U USER_NAME -d postgres
psql (10.1)
Type "help" for help.

postgres=# CREATE USER postgres WITH SUPERUSER PASSWORD 's3cr3t';
CREATE ROLE
postgres=# ALTER DATABASE postgres OWNER TO postgres;
ALTER DATABASE
postgres=# \q

Также теперь можно грохнуть своего пользователя:

postgres=# DROP USER USER_NAME;
DROP ROLE

И по пользоваться уже привычно.

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

Ну и на всякий случай:

postgres=# CREATE DATABASE DB_NAME;
CREATE DATABASE
postgres=# CREATE USER USER_NAME WITH password 's3cr3t';
CREATE ROLE
postgres=# GRANT ALL ON DATABASE DB_NAME TO USER_NAME;
GRANT
postgres=# \c DB_NAME
You are now connected to database "DB_NAME" as user "postgres".
DB_NAME=# REVOKE ALL ON SCHEMA public FROM public;
REVOKE
DB_NAME=# GRANT ALL ON SCHEMA public TO DB_NAME;
GRANT
DB_NAME=# \q

– как вариант.

Комментарии

Фото
13 дней назад Гоша

Также стоит установить переменную PGDATA, чтобы pg_ctl status тот же работал: export PGDATA='/usr/local/var/postgres'

Фото Рассказ о монете
Предыдущая запись:
Рассказ о монете
Фото Процесс введения процесса
Следующая запись:
Процесс введения процесса