Перейти к содержанию

Базы данных

обсуждение SQL, NoSQL (MySQL, PostgreSQL, MongoDB), Redis, проектирования БД, оптимизации запросов, администрирования. Решение проблем, бэкапы, репликация, безопасность данных. Советы по настройке, кейсы, обмен опытом.

3 Темы 4 Сообщения

Подкатегории


  • 0 Темы
    0 Сообщения
    Нет новых сообщений
  • 0 0
    0 Темы
    0 Сообщения
    Нет новых сообщений
  • 3 Темы
    4 Сообщения
    kirilljsK
    Привет! Если вы как и я вечно теряет свои заметки по тем или иным технологиям - возрадуйтесь, вы не одиноки И так, наконец-то у меня дошли руки до написания небольшого гайда по постгресу, потому что я постоянно забываю команды. Короче приступаем! Шаг 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 Оно думаю в любом случае подключится, но теперь нам необходимо создать пользователя, БД и выдать на все это дело права. По этом всего скорее вы увидите ошибку: [image: 1745148173450-893c3a61-0f08-4603-b396-d1533bd0c5b5-image.png] По умолчанию psql может пытаться подключиться к самому PostgreSQL не через пользователя postgres, а через вашего текущего. По этому проверяем: whoami После введенной команды вы увидите какой текущий пользователей. Решение: sudo -u postgres psql долбимся через sudo указывая пользователя напрямую. [image: 1745148441375-86843379-ae91-4459-9b4f-0c1b49a2158b-image.png] И так у нас должно пройти все гладко, и идем дальше Шаг 3 - Создаем пользователя Надеюсь вы вошли и у вас получилось как и у меня зайти под юзером postgres, теперь начнем вводить команды: CREATE USER test PASSWORD '1234'; Еще один важный момент, всегда ставьте точку с запятой после команды иначе ничего не произойдет при нажатии enter. Я вечно забываю про ;. [image: 1745148488941-1f1709c4-0c74-40b4-baca-5f3876e6c902-image.png] Или же можно создать роль (тот же пользователь только круче), если в этом есть необходимость, если нету то забейте и переходите к шагу №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 и смотрим чего там у нас по пользователям: [image: 1745148941155-16d3df99-9345-4672-99ce-0c96e0d67dbb-image.png] Шаг 4 - Создание баз данных Наконец-то мы добрались до создания самих таблиц, и так наша основная команда CREATE DATABASE, с нее мы и начнем. Пойти можно двумя путями, создать базу и потом присвоить пользователя или сразу все сделать что бы не мучаться. Создаем только базу CREATE DATABASE test Сразу присвоим пользователя: CREATE DATABASE test OWNER test; Лично я сразу делаю пользователя, а то потом еще вспоминай какая там команда для присвоения [image: 1745149370287-141e69e2-babc-4058-84c8-bc9b5b40e1f4-image.png] Вот и все)) Кстати если кому интересно, вот полный синтаксис: CREATE DATABASE имя_базы [WITH [OWNER = имя_владельца] [TEMPLATE = шаблон] [ENCODING = кодировка] [LC_COLLATE = локаль_сортировки] [LC_CTYPE = локаль_типов_символов] [TABLESPACE = табличное_пространство] [ALLOW_CONNECTIONS = true|false] [CONNECTION LIMIT = лимит_подключений]]; Проверить чо у нас там по БД можно командой \l: [image: 1745149485107-9e5b9e19-5adf-4d49-b6b7-0aae13398d10-image.png] Шаг 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; [image: 1745152041371-8fcecc2d-a829-473f-808b-f45ebd6cccab-image.png] Вот и все, все права выданы, можно приступать к работе с БД. Ну и для проверки закрепим, выйдем из psql и попробуем подключиться к базе при помощи команды: psql -d test -U test -h localhost -W Если все прошло успешно, увидим следующее: [image: 1745150621936-0dc0cd0a-f8c7-4a3e-8910-2e5da28c4d59-image.png] И еще для закрепления! Давайте попробуем создать таблицу (Мы в базе под нужным пользователем) [image: 1745150872948-dde0a37b-07dd-44fe-b504-0493c5bf1c30-image.png] Все работает, красотища то какая! Можно наконец-то брать node или go и бежать писать сервак! Всем спасибо за внимание, если есть вопросы - пишите в комменты.
  • 0 0
    0 Темы
    0 Сообщения
    Нет новых сообщений