Как изменить пароль postgres ubuntu

Обновлено: 05.07.2024

Изменить /etc/postgresql/9.1/main/pg_hba.conf (путь будет отличаться) и изменить:

Затем перезапустите сервер:

какой пароль по умолчанию для postgres? изменил это случайно; можно сбросить? (на psql 9.2), если я наберу \p , он дает мне пароль; если я \password postgres \p extra argument "assword" ignored; \p extra argument "postgres" ignored Это намного лучше, чем оставить пароль в истории команд SQL. Чтобы изменить пароль для пользователя postgres в Linux: sudo passwd postgres

Вы можете и должны иметь пароль пользователя в зашифрованном виде:

Осторожно! @ John29 комментарий только верно от Postgresql 10 и выше. Для всех других версий имеет значение флаг ENCRYPTED.

Я считаю, что лучший способ изменить пароль - это просто использовать:

в консоли Postgres.

Это также может быть использовано для изменения паролей для других пользователей: \password username

Чтобы изменить пароль с помощью командной строки Linux, используйте:

Просто помните, что это, вероятно, сохранит пароль пользователя базы данных в вашей истории команд. Вы можете использовать переменные среды здесь? Я хочу автоматизировать это в сценарии развертывания

Теперь введите новый пароль и подтвердите

Перейдите к вашему Postgresql Config и отредактируйте pg_hba.conf

sudo vim /etc/postgresql/9.3/main/pg_hba.conf

Затем измени эту строку:

затем перезапустите сервис PostgreSQL с помощью команды SUDO

Вы будете введены и увидите терминал Postgresql.

и введите НОВЫЙ пароль для пользователя по умолчанию в Postgres. После успешного изменения пароля снова перейдите в pg_hba.conf и верните изменение в «md5».

теперь вы будете авторизованы как

с вашим новым паролем.

Дайте мне знать, если вы все найдете какие-либо проблемы в этом.

$ psql -U postgres psql: FATAL: Peer authentication failed for user "postgres"

Хорошо, выполните другой метод sudo su - postgres psql. Вы войдете в терминал, а затем смените там пароль. Это альтернативный способ. Дайте мне знать, если это работает для вас, или вам нужно полное объяснение мм я пробовал, но у меня есть другая ошибка: / usr / bin / psql: строка 19: использовать: команда не найдена / usr / bin / psql: строка 21: использовать: команда не найдена / usr / bin / psql: строка 23: use: команда не найдена / usr / bin / psql: строка 24: use: команда не найдена / usr / bin / psql: psql: строка 26: синтаксическая ошибка рядом с неожиданным токеном $version,' /usr/bin/psql: psql: line 26: my ($ version, $ cluster, $ db, $ port , $ host); ' Спасибо за вашу помощь!

Чтобы запросить новый пароль для пользователя postgres (не показывая его в команде):

Конфигурация, которую я получил на своем сервере, была сильно изменена, и мне удалось изменить пароль только после того, как я установил доверительную аутентификацию в pg_hba.conf файле :

Не забудьте изменить это обратно на пароль или md5

вам также нужно перезапустить службу postgres, чтобы изменения вступили в силу sudo systemctl restart postgresql.service

Это был первый результат в Google, когда я искал, как переименовать пользователя, поэтому:

Несколько других команд, полезных для управления пользователями:

Переместить пользователя в другую группу

Для моего случая на Ubuntu 14.04 установлен Postgres 10.3. Мне нужно выполнить следующие шаги

  • su - postgres переключить пользователя на postgres
  • psql войти в оболочку postgres
  • \password затем введите свой пароль
  • \q выйти из сеанса оболочки

Затем вы переключаетесь обратно в root, выполняя exit и настраивая pg_hba.conf (у меня в /etc/postgresql/10/main/pg_hba.conf ), убедившись, что у вас есть следующая строка

local all postgres md5

Я не думаю, что вам действительно нужно перезапустить сервис postgresql после смены пароля. Я смог сбросить пароль и перезапустить его. \ пароль - самый быстрый способ. Или же вам нужна команда ALTER USER.

введите новый пароль, который вы хотите для этого пользователя, а затем подтвердите его. Если вы не помните пароль и хотите изменить его, вы можете войти в систему как postgres, а затем использовать это:

Подобно другим ответам в синтаксисе, но следует знать, что вы также можете передать md5 пароля, чтобы не передавать простой текстовый пароль.

Вот несколько сценариев непреднамеренных последствий изменения пароля пользователя в виде обычного текста.

  1. Если у вас нет SSL и вы изменяете удаленно, вы передаете простой текстовый пароль по сети.
  2. Если у вас настроена конфигурация ведения журнала, чтобы записывать DDL-операторы log_statement = ddl записей или выше, то ваш простой текстовый пароль будет отображаться в журналах ошибок.
    1. Если вы не защищаете эти журналы, это проблема.
    2. Если вы соберете эти журналы / ETL и покажете их там, где другие имеют доступ, они могут в конечном итоге увидеть этот пароль и т. Д.
    3. Если вы позволяете пользователю управлять своим паролем, он неосознанно раскрывает пароль администратору или сотруднику низкого уровня, которому поручено просматривать журналы.

    С учетом сказанного, вот как мы можем изменить пароль пользователя, создав md5-пароль.

      Postgres, когда хеширует пароль как md5, солит пароль с именем пользователя, затем добавляет текст «md5» к полученному хешу.

    например: "md5" + md5 (пароль + имя пользователя)

    • В PowerShell:
    • Итак, наконец наша ALTER USER команда будет выглядеть

    Пароль всегда хранится в зашифрованном виде в системных каталогах. Ключевое слово ENCRYPTED не имеет никакого эффекта, но принимается для обратной совместимости. Способ шифрования определяется параметром конфигурации password_encryption. Если представленная строка пароля уже имеет формат MD5 или SCRAM, то она сохраняется как есть, независимо от password_encryption (поскольку система не может расшифровать указанную зашифрованную строку пароля, чтобы зашифровать ее в другом формате). Это позволяет перезагрузить зашифрованные пароли во время дампа / восстановления.

    • Отредактируйте pg_hba.conf в каталоге данных кластера БД, к которому вы пытаетесь подключиться.
      • Папку каталога данных можно найти, проверив командную строку systemd, которую легко получить с помощью systemctl status postgresql@VERSION-DB_CLUSTER . Замените VERSION своей версией PSQL, а DB_CLUSTER - именем вашего кластера базы данных. Это может быть основным, если он был создан автоматически, например. postgresql@13-main . В качестве альтернативы мой bash предоставил автозаполнение после ввода postgresql@ , так что вы можете попробовать это или поискать службы postgresql в списке всех служб ( systemctl -a ). После того, как вы получите вывод состояния, найдите вторую командную строку после CGroup, которая должна быть довольно длинной, и начните с /usr/lib/postgresql/13/bin/postgres или аналогичного (в зависимости от версии, дистрибутива и метода установки). Вы ищете каталог после -D , например /var/lib/postgresql/13/main .

      У меня была Windows (Server 2019; PG 10), поэтому соединения типа local ( pg_hba.conf : local all all peer ) не поддерживаются. Следующее должно работать как в системах Windows, так и в Unix:

      1. резервное копирование pg_hba.conf на pg_hba.orig.conf например
      2. создайте pg_hba.conf только с этим: host all all 127.0.0.1/32 trust
      3. перезапустить pg (сервис)
      4. выполнить psql -U postgres -h 127.0.0.1
      5. введите (в консоли pgctl) alter user postgres with password 'SomePass';
      6. восстановить pg_hba.conf из 1. выше

      Если используется метод аутентификации «одноранговый», имя пользователя / пароль операционной системы клиента должны совпадать с именем пользователя и паролем базы данных. В этом случае установите одинаковые пароли для пользователя Linux postgres и пользователя БД postgres.

      В общем, просто используйте пользовательский интерфейс администратора pg для выполнения действий, связанных с базой данных.

      Если вместо этого вы больше сосредотачиваетесь на автоматизации настройки базы данных для вашей локальной разработки или CI и т. Д .

      Например, вы можете использовать такую ​​простую комбинацию.

      (a) Создайте фиктивного суперпользователя через jenkins с помощью команды, подобной этой:

      Это создаст суперпользователя с именем эксперимент001 в вашей базе данных postgres.

      (b) Дайте этому пользователю пароль, выполнив НЕИнтерактивную команду SQL.

      Postgres, вероятно, лучшая база данных для инструментов командной строки (неинтерактивных). Создание пользователей, запуск SQL, резервное копирование базы данных и т. Д. В целом с postgres все довольно просто, и в целом довольно тривиально интегрировать это в сценарии установки разработки или в автоматизированную конфигурацию CI.

      И полностью автоматизированный способ с помощью bash и expect (в этом примере мы предоставляем новому администратору postgres только что подготовленный postgres pw как на уровне ОС, так и на уровне времени выполнения postgres)

      Подобно другим ответам по синтаксису, но следует знать, что вы также можете передать md5 пароля, чтобы вы не передавали пароль в виде простого текста.

      Вот несколько сценариев непредвиденных последствий изменения пароля пользователя в виде обычного текста.

      1. Если у вас нет SSL и вы изменяете удаленно, вы передаете пароль в виде обычного текста по сети.
      2. Если ваша конфигурация ведения журнала настроена на регистрацию заявлений DDL log_statement = ddl или выше, то ваш простой текстовый пароль будет отображаться в журналах ошибок.
        1. Если вы не защищаете эти журналы, это проблема.
        2. Если вы соберете эти журналы / ETL и отобразите их там, где у других есть доступ, они могут увидеть этот пароль и т. д.
        3. Если вы разрешите пользователю управлять своим паролем, он неосознанно откроет пароль администратору или сотруднику нижнего уровня, которому поручено просматривать журналы.

        С учетом вышесказанного, вот как мы можем изменить пароль пользователя, построив md5 пароля.

          Postgres, когда хеширует пароль как md5, объединяет пароль с именем пользователя, а затем добавляет текст «md5» к результирующему хешу.

        пример: "md5" + md5 (пароль + имя пользователя)

        • В PowerShell:
        • Итак, наконец, наша команда ALTER USER будет выглядеть так

        Пароль всегда хранится в зашифрованном виде в системных каталогах. Ключевое слово ENCRYPTED не действует, но допускается для обратной совместимости. Метод шифрования определяется параметром конфигурации password_encryption. Если представленная строка пароля уже находится в формате с шифрованием MD5 или SCRAM, то она сохраняется как есть, независимо от password_encryption (поскольку система не может расшифровать указанную зашифрованную строку пароля, чтобы зашифровать ее в другом формате). Это позволяет перезагружать зашифрованные пароли во время дампа / восстановления.

        TL; DR:

        Во многих системах учетная запись пользователя часто содержит точку или какую-то точку (пользователь: john.smith, horise.johnson). В этих случаях необходимо будет внести изменения в принятый выше ответ. Изменение требует, чтобы имя пользователя было заключено в двойные кавычки.

        Рационально:

        Postgres весьма разборчив в том, когда использовать «двойные кавычки», а когда «одинарные кавычки». Обычно при вводе строки вы используете одинарные кавычки.

        Введите новый пароль, который вы хотите для этого пользователя, а затем подтвердите его. Если вы не помните пароль и хотите его изменить, вы можете войти в систему как postgres, а затем использовать это:

        В моем случае на Ubuntu 14.04, установленной с postgres 10.3. Мне нужно выполнить следующие шаги

        • su - postgres для переключения пользователя на postgres
        • psql для входа в оболочку postgres
        • \password затем введите свой пароль
        • \q для выхода из сеанса оболочки

        Затем вы переключаетесь обратно на root, выполняя exit и настраиваете свой pg_hba.conf (у меня на /etc/postgresql/10/main/pg_hba.conf ), убедившись, что у вас есть следующая строка

        local all postgres md5

        Если вы на windows.

        Откройте файл pg_hba.conf и измените его с md5 на peer

        Откройте cmd, введите psql postgres postgres

        Затем введите \password , чтобы получить запрос на ввод нового пароля.

        См. этот средний пост для получения дополнительной информации и подробных шагов.

        Конфигурация, которая у меня есть на моем сервере, была сильно изменена, и мне удалось изменить пароль только после того, как я установил аутентификацию trust в pg_hba.conf файл:

        Не забудьте снова изменить его на пароль или md5

        Чтобы запросить новый пароль для пользователя postgres (не показывая его в команде):

        Это был первый результат в Google, когда я искал, как переименовать пользователя, поэтому:

        Пара других команд, полезных для управления пользователями:

        Переместить пользователя в другую группу

        Перейдите в свою конфигурацию Postgresql и отредактируйте pg_hba.conf

        sudo vim /etc/postgresql/9.3/main/pg_hba.conf

        Затем измените эту строку:

        Затем перезапустите службу PostgreSQL с помощью команды SUDO, затем

        Вы войдете и увидите терминал Postgresql

        И введите НОВЫЙ пароль для пользователя Postgres по умолчанию. После успешного изменения пароля снова перейдите в pg_hba.conf и верните изменение на «md5»

        Теперь вы войдете в систему как

        С новым паролем.

        Дайте мне знать, если вы все найдете в нем какие-либо проблемы.

        Чтобы изменить пароль

        Теперь введите новый пароль и подтвердите

        Затем \q для выхода

        Чтобы изменить пароль с помощью командной строки Linux, используйте:

        Я считаю, что лучший способ изменить пароль - это просто использовать:

        В консоли Postgres.

        Согласно ALTER USER документации:

        для пароля меньше логин:

        чтобы сбросить пароль, если вы забыли:

        потом типа:

        затем:

        затем бросить psql :

        если это не помогает, настройте проверку подлинности.

        Edit /etc/postgresql/9.1/main/pg_hba.conf (путь будет отличаться) и меняться:

        to:

        перезапустите сервер:

        вы можете и должны зашифровать пароль пользователя:

        изменить пароль с помощью командной строки в Ubuntu, используйте:

        перейдите в свою конфигурацию Postgresql и отредактируйте pg_hba.conf

        sudo vim /etc/postgresql/9.3/main/pg_hba.conf

        затем измените эту строку :

        to:

        затем перезапустите службу PostgreSQL с помощью команды SUDO, затем

        psql -U postgres

        теперь вы будете введены и увидите терминал Postgresql

        и введите новый пароль Пользователь Postgres по умолчанию, после успешного изменения пароля перейдите в файле pg_hba.conf и вернуть изменение на "md5"

        теперь вы войдете в систему как

        С новым паролем.

        Дайте мне знать, если вы обнаружите какие-либо проблемы в нем.

        Это был первый результат в Google, когда я искал как переименовать пользователя, так:

        несколько других команд, полезных для управления пользователями:

        переместить пользователя в другую группу

        конфигурация, которую я получил на своем сервере, была настроена много, и мне удалось изменить пароль только после того, как я установил доверие аутентификация в pg_hba.conf file:

        Не забудьте изменить это обратно на пароль или md5

        запросить новый пароль postgres пользователь (не показывая его в команде):

        • su - postgres к postgres
        • psql чтобы войти в оболочку postgres
        • \password введите пароль
        • \q чтобы выйти из сеанса оболочки
        • затем вы переключаетесь обратно в корень, выполнив exit и настроить свой pg_hba.conf (мое-в /etc/postgresql/10/main/pg_hba.conf ), убедившись, что у вас есть следующие линия

          local all postgres md5

        • перезапустите службу postgres с помощью service postgresql restart
        • теперь переключаемся на postgres пользователь и снова введите оболочку postgres. Он предложит вам пароль.

        используйте этот:

        введите новый пароль для этого пользователя, а затем подтвердите его. Если вы не помните пароль и хотите его изменить, вы можете войти в систему как postgres, а затем использовать это:

        Часть нижеописанных операций нужно выполнять в командной оболочке PostgreSQL. Она может быть запущена от пользователя postgres — чтобы войти в систему от данного пользователя, вводим:

        * если система выдаст ошибку, связанную с нехваткой прав, сначала повышаем привилегии командой sudo su или su.

        Теперь запускаем командную оболочку PostgreSQL:

        $ psql -Upostgres template1

        * в данном примере, вход выполняется от учетной записи postgres к шаблонной базе template1.

        Для просмотра всех пользователей СУБД:

        Создание нового пользователя

        Для того, чтобы была возможность подключения к СУБД PostgreSQL от нового пользователя, необходимо создать данного пользователя, назначить ему права, выполнить настройку файла pg_hba.conf.

        1. Создание пользователя

        а) Добавление новой роли (пользователя) из оболочки SQL:

        * в примере создана роль dmosk с паролем myPassword.

        б) Добавление новой роли (пользователя) из командной строки Linux:

        createuser -P dmosk

        2. Назначение прав на использование базы данных

        Даем права на базу командой:

        Теперь подключаемся к базе, к которой хотим дать доступ:

        * в примере подсоединимся к базе с названием database1.

        а) Так мы добавим все права на использование всех таблиц в базе database1 учетной записи dmosk:

        * в большинстве случаев, используется схема по умолчанию public. Но администратор может создать новую схему. Это нужно учитывать при назначении прав.

        б) Также можно дать доступ к базе для определенных таблиц:

        * в данном примере мы даем права на таблицу table1.

        Выходим из SQL-оболочки:

        3. Настройка файла pg_hba.conf

        Для возможности подключиться к СУБД от созданного пользователя, необходимо проверить настройки прав в конфигурационном файле pg_hba.conf.

        Для начала смотрим путь расположения данных для PostgreSQL:

        В ответ мы получим, что-то на подобие:

        * в данном примере /var/lib/pgsql/9.6/data/ — путь расположения конфигурационных файлов.

        Добавляем права на подключение нашему созданному пользователю:

        * в данном примере мы разрешили подключаться пользователю dmosk ко всем базам на сервере (all) от узла 127.0.0.1 (localhost) с требованием пароля (md5).
        * необходимо, чтобы данная строка была выше строки, которая прописана по умолчанию
        host all all 127.0.0.1/32 ident.

        После перезапускаем службу:

        systemctl restart postgresql-9.6

        * в данном примере установлен postgresql версии 9.6, для разных версий на разных операционных системах команды для перезапуска сервиса могут быть разные.

        4. Проверка

        Для теста пробуем подключиться к Postgre с помощью созданного пользователя:

        psql -Udmosk template1 -h127.0.0.1

        Настройка прав доступа к базе с помощью групп

        Сначала создадим групповую роль:

        * данной командой создана группа myRole с минимальными правами.

        Теперь добавим ранее созданного пользователя dmosk в эту группу:

        Подключимся к базе данных, для которой хотим настроить права

        и предоставим все права для группы myRole всем таблицам базы database1

        Редактирование пользователя

        1. Смена пароля

        Рассмотрим несколько примеров смены пароля пользователя.

        * в данном примере мы зададим пароль password для пользователя postgres.

        С запросов ввода пароля:

        * после ввода данной команды система потребует дважды ввести пароль для пользователя (в нашем примере, postgres).

        Из командной строки Linux:

        * по сути, мы выполняем также запрос в оболочке sql.

        Удаление пользователей и групп

        Удаление пользователя выполняется следующей командой:

        * обратите внимание, данный запрос отличается от предоставления прав двумя моментами: 1) вместо GRANT пишем REVOKE; 2) вместо TO "dmosk" пишем FROM "dmosk";

        Назначение особых прав пользователям PostgreSQL

        Помимо ALL PRIVILEGES можно выдавать права на особые операции, например:

        * команда позволит выдать права на получение данных, их обновление и добавление. Другие операции, например, удаление будут запрещены для пользователя dmosk.

        Назначение прав для определенной таблицы:

        * в данном примере мы предоставим все права на таблицу table_users в базе данных database1;

        Учетная запись для резервного копирования

        Для выполнения резервного копирования лучше всего подключаться к базе с минимальными привилегиями.

        Сначала создаем роль, которую будем использовать для выполнения резервного копирования:

        * мы создадим учетную запись bkpuser с паролем bkppasswd.

        Предоставляем права на подключения к базе

        * в данном примере к базе database.

        Подключаемся к базе (в нашем примере database):

        Даем права на все последовательности в схеме:

        * мы дали права для схемы public. Это схема является схемой по умолчанию, но в вашем случае она может быть другой. В таком случае, подставляем свое значение.

        Графический интерфейс

        Иногда проще воспользоваться программой для выставления прав и работы с PostgreSQL. Могу посоветовать приложение pgAdmin. Оно позволит в оконном режиме не только создать и удалить пользователей, но и полноценно работать с СУБД.

        Читайте также: