Сбросить пароль на 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;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user;
Если требуется права суперпользователя, то:
ALTER USER user WITH SUPERUSER;
Теги: postgresql и сервер Linux