<?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">В PostgreSQL часто приходится менять пароли пользователей для безопасности или восстановления доступа. Эта статья разберёт основные способы смены пароля - от простых команд в psql до SQL-запросов. Вы узнаете, как подключиться, выполнить команду и проверить результат, чтобы избежать типичных ошибок.</p>
<p dir="auto">Такие операции полезны администраторам баз данных, разработчикам бэкенда и всем, кто работает с Postgres. Мы пройдёмся по методам шаг за шагом, с примерами и нюансами, чтобы вы могли сразу применить знания на практике.</p>
<h2>Основные способы смены пароля</h2>
<p dir="auto">Смена пароля в PostgreSQL - это базовая задача администрирования, которая решает проблемы с забытыми учетными данными или необходимостью ротации паролей. Основные команды работают через psql - интерактивный терминал Postgres. Вы подключаетесь как суперюзер (обычно postgres) и используете специальные инструкции. Это удобно для локальных серверов или когда нужен быстрый доступ.</p>
<p dir="auto">Например, если у вас есть пользователь ‘appuser’ с устаревшим паролем, вы можете обновить его за секунды. Важно понимать разницу между ролями и пользователями: в Postgres это одно и то же. Команды типа <strong>ALTER ROLE</strong> или <strong>\password</strong> передают пароль в открытом виде, так что используйте их осторожно в продакшене. Давайте разберём варианты подробнее.</p>
<p dir="auto">Вот основные методы смены пароля:</p>
<ul>
<li><strong>\password username</strong> - самый простой способ прямо в psql.</li>
<li><strong>ALTER ROLE username WITH PASSWORD ‘newpass’</strong> - универсальный SQL-запрос.</li>
<li><strong>ALTER USER username WITH PASSWORD ‘newpass’</strong> - синоним для ALTER ROLE.</li>
</ul>
<p dir="auto"><em>Нюанс: суперюзер может менять любой пароль, обычный пользователь - только свой.</em></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Метод</th>
<th>Преимущества</th>
<th>Когда использовать</th>
</tr>
</thead>
<tbody>
<tr>
<td>\password</td>
<td>Не показывает пароль в истории</td>
<td>Быстрая смена в терминале</td>
</tr>
<tr>
<td>ALTER ROLE</td>
<td>Работает в скриптах</td>
<td>Автоматизация, GUI-клиенты</td>
</tr>
<tr>
<td>sudo -u postgres psql</td>
<td>Для забытого пароля суперюзера</td>
<td>Linux-сервера</td>
</tr>
</tbody>
</table>
<h2>Подключение и смена через psql</h2>
<p dir="auto">Для начала нужно подключиться к базе как пользователь с правами superuser или CREATEROLE. В Linux это часто делается через <strong>sudo -u postgres psql</strong>. Если вы на Windows, редактируйте pg_hba.conf для trusted-подключения. После входа вы увидите приглашение postgres=#, где и выполняются команды.</p>
<p dir="auto">Рассмотрим реальный сценарий: у вас сервер с Postgres 15, пользователь ‘admin’ потерял пароль. Подключаетесь, вводите \password admin, и система запрашивает новый пароль дважды. Это безопаснее SQL, потому что пароль не попадает в логи или историю команд. После этого проверьте с <strong>\du admin</strong> - увидите статус пароля.</p>
<p dir="auto">Шаги для смены:</p>
<ol>
<li>Подключитесь: <code>sudo -u postgres psql</code>.</li>
<li>Введите <code>\password username</code>.</li>
<li>Подтвердите новый пароль.</li>
<li>Проверьте: <code>\du</code>.</li>
</ol>
<p dir="auto">Если нужно задать срок действия пароля, добавьте VALID UNTIL. Например, <code>ALTER ROLE admin VALID UNTIL '2026-12-31';</code>. Это полезно для временных аккаунтов разработчиков.</p>
<p dir="auto"><em>Важно: на Windows без sudo используйте pgAdmin или редактируйте pg_hba.conf.</em></p>
<h2>Использование SQL-команд ALTER ROLE и ALTER USER</h2>
<p dir="auto">Команды ALTER ROLE и ALTER USER - это основа для скриптов и автоматизации. ALTER ROLE более современная и работает с ролями, ALTER USER - legacy-вариант для обратной совместимости. Синтаксис прост: укажите имя роли и WITH PASSWORD ‘новый_пароль’. Выполняйте их в psql или любом SQL-клиенте вроде DBeaver.</p>
<p dir="auto">Пример: вы разрабатываете API на Node.js с базой Postgres. В миграции нужно обновить пароль сервисного юзера. Запускаете <code>ALTER ROLE apiuser WITH PASSWORD 'strongpass2026';</code> - и готово. Для удаления пароля используйте PASSWORD NULL. Это отключает парольную аутентификацию, переходя на другие методы вроде peer.</p>
<p dir="auto">Полный список опций ALTER ROLE:</p>
<ul>
<li><strong>WITH PASSWORD ‘pass’</strong> - установка пароля.</li>
<li><strong>PASSWORD NULL</strong> - удаление пароля.</li>
<li><strong>VALID UNTIL ‘timestamp’</strong> - срок действия.</li>
<li><strong>CONNECTION LIMIT 10</strong> - лимит подключений.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Команда</th>
<th>Пример</th>
<th>Результат</th>
</tr>
</thead>
<tbody>
<tr>
<td>ALTER ROLE</td>
<td>ALTER ROLE dev WITH PASSWORD ‘dev123’</td>
<td>Пароль обновлён</td>
</tr>
<tr>
<td>VALID UNTIL</td>
<td>ALTER ROLE temp VALID UNTIL ‘2026-06-01’</td>
<td>Пароль истекает</td>
</tr>
<tr>
<td>Сброс</td>
<td>ALTER ROLE user PASSWORD NULL</td>
<td>Без пароля</td>
</tr>
</tbody>
</table>
<h2>Проверка результата и безопасность</h2>
<p dir="auto">После смены всегда проверяйте изменения командой <strong>\du</strong> или <strong>\du+ username</strong>. Она покажет атрибуты роли: пароль valid until, привилегии. Если пароль не обновился, проверьте права - только суперюзер может менять чужие пароли. Ещё один способ: SELECT rolname FROM pg_roles;</p>
<p dir="auto">Безопасность критична: пароли передаются в cleartext, попадают в логи psql. Используйте \password для интерактивной работы. В продакшене настройте SSL, ротацию паролей и мониторинг. Для кластеров вроде Neon или AWS RDS команды те же, но с учётом провайдера.</p>
<ul>
<li><strong>\du</strong> - список всех ролей.</li>
<li><strong>\du+</strong> - детальная информация.</li>
<li>SELECT * FROM pg_user; - SQL-аналог.</li>
</ul>
<p dir="auto"><em>Совет: храните пароли в секретах, не в репозитории.</em></p>
<h2>Продвинутые сценарии смены пароля</h2>
<p dir="auto">В сложных случаях, как забытый пароль суперюзера, редактируйте pg_hba.conf: смените метод на trust для local, перезапустите сервер, войдите и обновите. Это экстренный метод - сразу верните md5 или scram-sha-256. Для контейнеров Docker: docker exec -it postgres psql -U postgres.</p>
<p dir="auto">Если Postgres интегрирован в Rails/Django, пароли хранятся хэшированно, но прямой доступ через psql остаётся. Тестируйте на dev-сервере: создайте тестовую роль, смените пароль, подключитесь новым. Это поможет освоить нюансы перед продом.</p>
<p dir="auto">Таблица сравнения методов:</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Сценарий</th>
<th>Рекомендуемая команда</th>
<th>Время выполнения</th>
</tr>
</thead>
<tbody>
<tr>
<td>Быстрая смена</td>
<td>\password</td>
<td>10 сек</td>
</tr>
<tr>
<td>Скрипт</td>
<td>ALTER ROLE</td>
<td>1 сек</td>
</tr>
<tr>
<td>Забытый superuser</td>
<td>sudo + \password</td>
<td>2 мин</td>
</tr>
<tr>
<td>Контейнер</td>
<td>docker exec + ALTER</td>
<td>30 сек</td>
</tr>
</tbody>
</table>
<h2>Когда пароль меняется не так, как ожидалось</h2>
<p dir="auto">Иногда изменения не применяются из-за кэша подключений или прав. Переподключитесь клиентом, очистите историю psql команд. В кластерах репликация паролей идёт автоматически, но primary меняет первым. Для enterprise подумайте о внешней IAM вроде LDAP - там смена через провайдера.</p>
<p dir="auto">Мы разобрали базовые и продвинутые приёмы, но Postgres эволюционирует: в версии 18 улучшен scram-sha-256. Стоит изучить документацию по ролям для групповой политики или интеграции с Kubernetes.</p>
]]></description><link>https://forum.exlends.ru/topic/804/kak-izmenit-parol-polzovatelya-v-postgresql-poshagovoe-rukovodstvo</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 08:56:48 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/804.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Feb 2026 06:29:28 GMT</pubDate><ttl>60</ttl></channel></rss>