PostgreSQL - Небольшая документация от начала до старта
-
Привет! Если вы как и я вечно теряет свои заметки по тем или иным технологиям - возрадуйтесь, вы не одиноки
И так, наконец-то у меня дошли руки до написания небольшого гайда по постгресу, потому что я постоянно забываю команды. Короче приступаем!
Шаг 1
Так как у меня PG уже установлен эта информация больше тебя тебя читатель:
-
Установка PostgreSQL на Windows
Перейдите и скачать на официальный сайт PostgreSQL:https://www.postgresql.org/download/windows/ . -
Установка PostgreSQL на Linux
sudo apt update sudo apt install postgresql postgresql-contrib sudo systemctl start postgresql sudo systemctl status postgresql sudo -u postgres psql
- Установка PostgreSQL на macOS
Скачайте установщик с официального сайта: https://www.postgresql.org/download/macosx/ .
Или через brew
brew install postgresql brew services start postgresql psql postgres
Если все отлично, то переходим к следующему шагу
Шаг 2 - Подключение
Начнём с малого: откроем терминал и установим соединение с PostgreSQL при помощи клиента
psql
. Для этого введите в окне терминала команду:psql postgres
Оно думаю в любом случае подключится, но теперь нам необходимо создать пользователя, БД и выдать на все это дело права.
По этом всего скорее вы увидите ошибку:
По умолчанию psql может пытаться подключиться к самому PostgreSQL не через пользователя
postgres
, а через вашего текущего. По этому проверяем:whoami
После введенной команды вы увидите какой текущий пользователей.
Решение:
sudo -u postgres psql
долбимся через
sudo
указывая пользователя напрямую.И так у нас должно пройти все гладко, и идем дальше
Шаг 3 - Создаем пользователя
Надеюсь вы вошли и у вас получилось как и у меня зайти под юзером
postgres
, теперь начнем вводить команды:CREATE USER test PASSWORD '1234';
Еще один важный момент, всегда ставьте точку с запятой после команды иначе ничего не произойдет при нажатии enter. Я вечно забываю про
;
.Или же можно создать роль (тот же пользователь только круче), если в этом есть необходимость, если нету то забейте и переходите к шагу №4.
Если все же интересно, то вот:CREATE ROLE имя_роли WITH LOGIN PASSWORD 'пароль';
Полный пример:
CREATE ROLE admin_role WITH LOGIN PASSWORD 'admin_password' SUPERUSER;
Здесь можно указать дополнительные атрибуты:
LOGIN
— разрешает роль подключаться к базе данных.
SUPERUSER
— предоставляет роль права суперпользователя.
CREATEDB
— позволяет создавать базы данных.
CREATEROLE
— позволяет создавать и изменять другие роли.
INHERIT
— роль наследует права других ролей, к которым она принадлежит.
REPLICATION
— роль может использоваться для репликации.Я попробовал, и сделал роль
admin_role
, вводим команду\du
и смотрим чего там у нас по пользователям:
Шаг 4 - Создание баз данных
Наконец-то мы добрались до создания самих таблиц, и так наша основная команда
CREATE DATABASE
, с нее мы и начнем.
Пойти можно двумя путями, создать базу и потом присвоить пользователя или сразу все сделать что бы не мучаться.
Создаем только базуCREATE DATABASE test
Сразу присвоим пользователя:
CREATE DATABASE test OWNER test;
Лично я сразу делаю пользователя, а то потом еще вспоминай какая там команда для присвоения
Вот и все))Кстати если кому интересно, вот полный синтаксис:
CREATE DATABASE имя_базы [WITH [OWNER = имя_владельца] [TEMPLATE = шаблон] [ENCODING = кодировка] [LC_COLLATE = локаль_сортировки] [LC_CTYPE = локаль_типов_символов] [TABLESPACE = табличное_пространство] [ALLOW_CONNECTIONS = true|false] [CONNECTION LIMIT = лимит_подключений]];
Проверить чо у нас там по БД можно командой
\l
:
Шаг 5 - Привилегии и доступы
Ну что приступим к самому важному! После создания БД, привязки владельца через
OWNER
НЕ ВЫХОДИТЕ И НЕ ПЕРЕКЛЮЧАЙТЕСЬ НА САМУ БД, так как права можно выдать только через супер-пупер пользователя.
И так, вот наша первая команда:-- 1. Предоставляем права на базу данных GRANT ALL PRIVILEGES ON DATABASE test TO test; -- 2. Переходим в базу данных \c test -- 3. Предоставляем право использования схемы public GRANT USAGE ON SCHEMA public TO test; -- 4. Предоставляем права на существующие таблицы GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO test; -- 5. Предоставляем права на существующие последовательности GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO test; -- 6. Предоставляем права на существующие функции GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO test; -- 7. Назначаем права на будущие таблицы ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO test; -- 8. Назначаем права на будущие последовательности ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO test; -- 9. Назначаем права на будущие функции ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON FUNCTIONS TO test; -- 10. Делаем пользователя владельцем базы данных ALTER DATABASE test OWNER TO test;
Вот и все, все права выданы, можно приступать к работе с БД.
Ну и для проверки закрепим, выйдем из
psql
и попробуем подключиться к базе при помощи команды:psql -d test -U test -h localhost -W
Если все прошло успешно, увидим следующее:
И еще для закрепления! Давайте попробуем создать таблицу (Мы в базе под нужным пользователем)
Все работает, красотища то какая! Можно наконец-то брать node или go и бежать писать сервак!
Всем спасибо за внимание, если есть вопросы - пишите в комменты. -