- PostgreSQL: Resetting password of PostgreSQL on Ubuntu [closed]
- 1 Answer 1
- Reset the password of the PostgreSQL superuser
- Conclusion
- How to reset your forgotten password in PostgreSQL
- Don’t Panic!
- Сбросить пароль на PostgreSQL в Debian
- Перевести PostgreSQL в режим «локального доступа»
- Первое знакомство с «новым» сервером PostgreSQL
- Добавляем нового пользователя в Postgre
- POSTGRESQL — КАК СБРОСИТЬ ПАРОЛЬ POSTGRES
- 1. Меняем порт подключения к базе данных.
- 2. Правим файл подключения pg_hba.conf.
- 3. Устанавливаем новый пароль для учетной записи postgres.
- 4. Возвращаем все как было.
PostgreSQL: Resetting password of PostgreSQL on Ubuntu [closed]
In Ubuntu, I installed PostgreSQL database and created a superuser for the server. If I forgot the password of the postgresql superuser, how can I reset it (the password) for that user? I tried uninstalling it and then installing it again but the previously created superuser is retained.
1 Answer 1
Assuming you’re the administrator of the machine, Ubuntu has granted you the right to sudo to run any command as any user.
Also assuming you did not restrict the rights in the pg_hba.conf file (in the /etc/postgresql/9.1/main directory), it should contain this line as the first rule:
# Database administrative login by Unix domain socket local all postgres peer
(About the file location: 9.1 is the major postgres version and main the name of your «cluster». It will differ if using a newer version of postgres or non-default names. Use the pg_lsclusters command to obtain this information for your version/system).
Anyway, if the pg_hba.conf file does not have that line, edit the file, add it, and reload the service with sudo service postgresql reload .
Then you should be able to log in with psql as the postgres superuser with this shell command:
Once inside psql, issue the SQL command:
ALTER USER postgres PASSWORD 'newpassword';
In this command, postgres is the name of a superuser. If the user whose password is forgotten was ritesh , the command would be:
ALTER USER ritesh PASSWORD 'newpassword';
Keep in mind that you need to type postgres with a single S at the end
If leaving the password in clear text in the history of commands or the server log is a problem, psql provides an interactive meta-command to avoid that, as an alternative to ALTER USER . PASSWORD :
It asks for the password with a double blind input, then hashes it according to the password_encryption setting and issue the ALTER USER command to the server with the hashed version of the password, instead of the clear text version.
Reset the password of the PostgreSQL superuser
This article describes the detailed steps to reset the password of the PostgreSQL superuser.
In PostgreSQL, postgres is the superuser. If you have forgotten the password of postgres , you can reset it by the following steps.
- Locate the configuration file pg_hba.conf for the PostgreSQL database server. On Windows, the configuration files for the PostgreSQL database server are located in the data directory of the PostgreSQL installation directory, for example: C:\Program Files\PostgreSQL\14\data . On Linux, the configuration file for the PostgreSQL database server is located at /etc/postgresql/14/main/pg_hba.conf .
- Back up the configuration file before modifying it so that you can restore it later.
cp pg_hba.conf pg_hba.conf.bak
local all all peer # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust # Allow replication connections from localhost, by a user with the # replication privilege. local replication all peer host replication all 127.0.0.1/32 trust host replication all ::1/128 trust
ALTER USER postgres WITH PASSWORD 'new_password';
Conclusion
This article explains the detailed steps to reset the password of superuser postgres .
How to reset your forgotten password in PostgreSQL
It’s a good practice even for your local DB server to provide a password for each user. PostgreSQL’s default user (who is also an admin) is postgres . A standard method to get access to our DB is using psql command via terminal (I’m running Manjaro Linux). So, we type:
We enter our password and we get the message
Don’t Panic!
First of all, we must find the «PostgreSQL Client Authentication Configuration File», which has the name pg_hba.conf . In Manjaro, it lives in path /var/lib/postgres/data/pg_hba.conf . Be careful that it is required to have root permissions.
sudo nano /var/lib/postgres/data/pg_hba.conf
We change the md5 authentication in «local» connection to trust
sudo systemctl restart postgresql
Now PostgreSQL doesn’t ask a password and we are allowed to connent with user postgres Next step is to reset the password We exit psql , we turn back pg_hba.conf to it’s previous state ( md5 authentication) and we restart the server. We are able to connent using our new password for user postgres . Originally published at https://www.codingnotebook.eu/postgresql-reset-password/
Сбросить пароль на 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
sudo service postrgresql restart
Далее заходим под пользователем без пароля:
Чтобы вернуть все как было, нужно выполнить все шаги в обратном порядке.
Первое знакомство с «новым» сервером 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
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 — КАК СБРОСИТЬ ПАРОЛЬ POSTGRES
В сегодняшней статье мы поговорим о том как сбросить пароль от основной учетной записи postgres в СУБД PostgreSQL. Бывают случаи когда вы случайно можете забыть либо потерять пароль от учетной записи postgres, но это не беда, его можно очень легко сбросить.
1. Меняем порт подключения к базе данных.
На всякий случай в целях безопасности перед тем как править файл подключения pg_hba.conf мы сменим порт подключения с 5432 на 5433. Для этого нам нужно найти в файле postgresql.conf параметр PORT и поменять его.
После изменения порта нужно обязательно перезапустить базу данных.
2. Правим файл подключения pg_hba.conf.
Основной файл в СУБД PostgreSQL который отвечает за доступ к базам данных называется pg_hba.conf. Вам нужно его найти и добавить в него:
Этой строчкой мы указываем что локальный пользователь сервера может подключиться в базе данных без ввода пароля от учетной записи postgres.
После внесенной строки нам нужно перезапустить базу данных либо выполнить запрос в консоли который перечитает файл pg_hba.conf и применим все изменения.
sql> SELECT pg_reload_conf();
3. Устанавливаем новый пароль для учетной записи postgres.
Теперь мы можем установить новый пароль для учетной записи postgres, для этого подключайтесь к консоли psql и выполните команду:
sql> ALTER USER postgres WITH PASSWORD ‘Qwerty123’;
4. Возвращаем все как было.
После того как мы поменяли пароль не забываем все вернуть обратно, а именно порт который мы поменяли перед роботами.
Еще обязательно удалите ту строку подключения которую мы вставляли в файл pg_hba.conf, а то получится так что мы установили новый пароль для учетной записи postgres, но все равно доступ к базе данных будет доступен без ввода пароля.
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.
Последнее обновление: 20 Июня 2023 г.