Сбросить пароль на PostgreSQL в Debian

Очень часто при появлении нового системного администратора, есть сервера, к которым нет доступа. Пароль от сервера есть у предыдущего администратора, но говорить он его по какой-то причине отказывается. Так произошло и у нас. Есть сервер PostgreSQL. Он работает, а пароля от суперпользователя ни у кого нет.

В PostgreSQL можно с легкостью все восстановить.

В любой базе данных есть режим так называемого «локального доступа». К примеру, в MySQL восстановить пароль можно так.

Перевести PostgreSQL в режим «локального доступа»

В Debian все конфигурационные файлы PostgreSQL находится в директории /etc/postgresql/9.6/main/, где 9.6 — это версия. У Вас она, возможно, будет другой.

sudo nano /etc/postgresql/9.6/main/pg_hba.conf

Комментируем одну строку и ниже добавляем другую:

# local all postgres peer
local all postgres trust

Перезапускаем PostgreSQL:

sudo service postrgresql restart

Далее заходим под пользователем без пароля:

psql -U postgres

Чтобы вернуть все как было, нужно выполнить все шаги в обратном порядке.

Первое знакомство с «новым» сервером PostgreSQL

Посмотреть список всех БД

\l
                                  Список баз данных
    Имя    | Владелец | Кодировка | LC_COLLATE  |  LC_CTYPE   |     Права доступа
-----------+----------+-----------+-------------+-------------+-----------------------
 CB        | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 postgres  | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |
 template0 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |          |           |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |          |           |             |             | postgres=CTc/postgres
(4 строки)

В листинге выше «боевая» база данных – это CB.

Посмотреть список пользователей

select * from pg_user;
usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
 postgres |       10 | t           | t        | t       | t            | ******** |          |
(1 строка)

postgres — это стандартная учетная запись.

Меняем пароль пользователю postgres

ALTER USER postgres WITH PASSWORD 'new_password';

Добавляем нового пользователя в Postgre

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

Добавляем пользователя:

CREATE USER user WITH PASSWORD 'myPassword';
CREATE ROLE

Добавляем права на доступ к базе данных. В нашем примере это база CB. Добавляем нашему пользователю доступ:

GRANT ALL PRIVILEGES ON DATABASE "CB" to user;
\c CB
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user;

Если требуется права суперпользователя, то:

ALTER USER user WITH SUPERUSER;

Теги:

Комментарии






Комментарии
Интересное