<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[PostgreSQL - Небольшая документация от начала до старта]]></title><description><![CDATA[<p dir="auto">Привет! Если вы как и я вечно теряет свои заметки по тем или иным технологиям - возрадуйтесь, вы не одиноки <img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f601.png?v=1bd9ff6b60a" class="not-responsive emoji emoji-android emoji--grin" style="height:23px;width:auto;vertical-align:middle" title=":grin:" alt="😁" /></p>
<p dir="auto">И так, наконец-то у меня дошли руки до написания небольшого гайда по постгресу, потому что я постоянно забываю команды. Короче приступаем!</p>
<hr />
<h2>Шаг 1</h2>
<p dir="auto">Так как у меня PG уже установлен эта информация больше тебя тебя читатель:</p>
<ol>
<li>
<p dir="auto">Установка PostgreSQL на Windows<br />
Перейдите и скачать на официальный сайт PostgreSQL:<a href="https://www.postgresql.org/download/windows/" target="_blank" rel="noopener noreferrer">https://www.postgresql.org/download/windows/</a> .</p>
</li>
<li>
<p dir="auto">Установка PostgreSQL на Linux</p>
</li>
</ol>
<pre><code>sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo -u postgres psql
</code></pre>
<ol start="3">
<li>Установка PostgreSQL на macOS<br />
Скачайте установщик с официального сайта: <a href="https://www.postgresql.org/download/macosx/" target="_blank" rel="noopener noreferrer">https://www.postgresql.org/download/macosx/</a> .</li>
</ol>
<p dir="auto">Или через brew</p>
<pre><code>brew install postgresql
brew services start postgresql
psql postgres
</code></pre>
<p dir="auto">Если все отлично, то переходим к следующему шагу</p>
<hr />
<h2>Шаг 2 - Подключение</h2>
<p dir="auto">Начнём с малого: откроем терминал и установим соединение с PostgreSQL при помощи клиента <code>psql</code>. Для этого введите в окне терминала команду:</p>
<pre><code>psql postgres
</code></pre>
<p dir="auto">Оно думаю в любом случае подключится, но теперь нам необходимо создать пользователя, БД и выдать на все это дело права.<br />
По этом всего скорее вы увидите ошибку:<br />
<img src="/assets/uploads/files/1745148173450-893c3a61-0f08-4603-b396-d1533bd0c5b5-image.png" alt="893c3a61-0f08-4603-b396-d1533bd0c5b5-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">По умолчанию psql может пытаться подключиться к самому PostgreSQL не через пользователя <code>postgres</code>, а через вашего текущего. По этому проверяем:</p>
<pre><code>whoami
</code></pre>
<p dir="auto">После введенной команды вы увидите какой текущий пользователей.</p>
<p dir="auto">Решение:</p>
<pre><code>sudo -u postgres psql
</code></pre>
<p dir="auto">долбимся через <code>sudo</code> указывая пользователя напрямую.</p>
<p dir="auto"><img src="/assets/uploads/files/1745148441375-86843379-ae91-4459-9b4f-0c1b49a2158b-image.png" alt="86843379-ae91-4459-9b4f-0c1b49a2158b-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">И так у нас должно пройти все гладко, и идем дальше</p>
<hr />
<h3>Шаг 3 - Создаем пользователя</h3>
<p dir="auto">Надеюсь вы вошли и у вас получилось как и у меня зайти под юзером <code>postgres</code>, теперь начнем вводить команды:</p>
<pre><code>CREATE USER test PASSWORD '1234';
</code></pre>
<blockquote>
<p dir="auto">Еще один важный момент, всегда ставьте точку с запятой после команды иначе ничего не произойдет при нажатии enter. Я вечно забываю про <code>;</code>.</p>
</blockquote>
<p dir="auto"><img src="/assets/uploads/files/1745148488941-1f1709c4-0c74-40b4-baca-5f3876e6c902-image.png" alt="1f1709c4-0c74-40b4-baca-5f3876e6c902-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Или же можно создать роль (<strong>тот же пользователь только круче</strong>), если в этом есть необходимость, если нету то забейте и переходите к шагу №4.<br />
Если все же интересно, то вот:</p>
<pre><code>CREATE ROLE имя_роли WITH LOGIN PASSWORD 'пароль';
</code></pre>
<p dir="auto">Полный пример:</p>
<pre><code>CREATE ROLE admin_role WITH LOGIN PASSWORD 'admin_password' SUPERUSER;
</code></pre>
<p dir="auto">Здесь можно указать дополнительные атрибуты:</p>
<p dir="auto"><code>LOGIN</code> — разрешает роль подключаться к базе данных.<br />
<code>SUPERUSER</code> — предоставляет роль права суперпользователя.<br />
<code>CREATEDB</code> — позволяет создавать базы данных.<br />
<code>CREATEROLE</code> — позволяет создавать и изменять другие роли.<br />
<code>INHERIT</code> — роль наследует права других ролей, к которым она принадлежит.<br />
<code>REPLICATION</code> — роль может использоваться для репликации.</p>
<p dir="auto">Я попробовал, и сделал роль <code>admin_role</code>, вводим команду <code>\du</code> и смотрим чего там у нас по пользователям:</p>
<p dir="auto"><img src="/assets/uploads/files/1745148941155-16d3df99-9345-4672-99ce-0c96e0d67dbb-image.png" alt="16d3df99-9345-4672-99ce-0c96e0d67dbb-image.png" class=" img-fluid img-markdown" /></p>
<hr />
<h2>Шаг 4 - Создание баз данных</h2>
<p dir="auto">Наконец-то мы добрались до создания самих таблиц, и так наша основная команда <code>CREATE DATABASE</code>, с нее мы и начнем.<br />
Пойти можно двумя путями, создать базу и потом присвоить пользователя или сразу все сделать что бы не мучаться.<br />
Создаем только базу</p>
<pre><code>CREATE DATABASE test
</code></pre>
<p dir="auto">Сразу присвоим пользователя:</p>
<pre><code>CREATE DATABASE test OWNER test;
</code></pre>
<p dir="auto">Лично я сразу делаю пользователя, а то потом еще вспоминай какая там команда для присвоения <img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f600.png?v=1bd9ff6b60a" class="not-responsive emoji emoji-android emoji--grinning" style="height:23px;width:auto;vertical-align:middle" title=":grinning:" alt="😀" /><br />
<img src="/assets/uploads/files/1745149370287-141e69e2-babc-4058-84c8-bc9b5b40e1f4-image.png" alt="141e69e2-babc-4058-84c8-bc9b5b40e1f4-image.png" class=" img-fluid img-markdown" /><br />
Вот и все))</p>
<p dir="auto">Кстати если кому интересно, вот полный синтаксис:</p>
<pre><code>CREATE DATABASE имя_базы
    [WITH [OWNER = имя_владельца]
          [TEMPLATE = шаблон]
          [ENCODING = кодировка]
          [LC_COLLATE = локаль_сортировки]
          [LC_CTYPE = локаль_типов_символов]
          [TABLESPACE = табличное_пространство]
          [ALLOW_CONNECTIONS = true|false]
          [CONNECTION LIMIT = лимит_подключений]];
</code></pre>
<p dir="auto">Проверить чо у нас там по БД можно командой <code>\l</code>:<br />
<img src="/assets/uploads/files/1745149485107-9e5b9e19-5adf-4d49-b6b7-0aae13398d10-image.png" alt="9e5b9e19-5adf-4d49-b6b7-0aae13398d10-image.png" class=" img-fluid img-markdown" /></p>
<hr />
<h2>Шаг 5 - Привилегии и доступы</h2>
<p dir="auto">Ну что приступим к самому важному! После создания БД, привязки владельца через <code>OWNER</code> НЕ ВЫХОДИТЕ И НЕ ПЕРЕКЛЮЧАЙТЕСЬ НА САМУ БД, так как права можно выдать только через супер-пупер пользователя.<br />
И так, вот наша первая команда:</p>
<pre><code>-- 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;
</code></pre>
<p dir="auto"><img src="/assets/uploads/files/1745152041371-8fcecc2d-a829-473f-808b-f45ebd6cccab-image.png" alt="8fcecc2d-a829-473f-808b-f45ebd6cccab-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Вот и все, все права выданы, можно приступать к работе с БД.</p>
<p dir="auto">Ну и для проверки закрепим, выйдем из <code>psql</code> и попробуем подключиться к базе при помощи команды:</p>
<pre><code>psql -d test -U test -h localhost -W
</code></pre>
<p dir="auto">Если все прошло успешно, увидим следующее:<br />
<img src="/assets/uploads/files/1745150621936-0dc0cd0a-f8c7-4a3e-8910-2e5da28c4d59-image.png" alt="0dc0cd0a-f8c7-4a3e-8910-2e5da28c4d59-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">И еще для закрепления! Давайте попробуем создать таблицу (Мы в базе под нужным пользователем)</p>
<p dir="auto"><img src="/assets/uploads/files/1745150872948-dde0a37b-07dd-44fe-b504-0493c5bf1c30-image.png" alt="dde0a37b-07dd-44fe-b504-0493c5bf1c30-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Все работает, красотища то какая! Можно наконец-то брать node или go и бежать писать сервак!<br />
Всем спасибо за внимание, если есть вопросы - пишите в комменты.</p>
]]></description><link>https://forum.exlends.ru/topic/112/postgresql-nebolshaya-dokumentaciya-ot-nachala-do-starta</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 08:58:45 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/112.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Apr 2025 12:25:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to PostgreSQL - Небольшая документация от начала до старта on Thu, 02 Oct 2025 05:01:52 GMT]]></title><description><![CDATA[<p dir="auto">Гайды во многом упрощают работу новичку, но кроме этого, могут быть весьма полезны и для опытных. Бывает пропустишь просто пробел или букву и уже ничего не работает, при этом можно воспользоваться примером из стандартного гайда и атоматом найдётся ошибка, причем совершенно глупая, как показывает практика.</p>
]]></description><link>https://forum.exlends.ru/post/790</link><guid isPermaLink="true">https://forum.exlends.ru/post/790</guid><dc:creator><![CDATA[SkitRa]]></dc:creator><pubDate>Thu, 02 Oct 2025 05:01:52 GMT</pubDate></item></channel></rss>