PostgresSQL SETPGPASSWORD not setting password - windows

I am trying to push to Heroku and I got the password prompt with the wrong user like many people, so I went and did
SET PGUSER=[pg_username]
SET PGPASSWORD=[pg_password]
I am putting in the command:
heroku pg:push mylocaldb DATABASE_URL --app my-app
It changed the username but the password didn't work and I get the error message:
connection to database "mylocaldb" failed: FATAL: password authentication failed for user "Janet"
How do I change/find the password?
my pg_hba file looks like this :
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all [redacted] trust
# IPv6 local connections:
host all all [redacted] md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host replication all [redacted] trust
host replication all [redacted] trust

Related

psql SQL STATE[08006] Password Authentication Failed for User. Laravel

This is my first time working with Laravel, and I have a project set up, but I cannot connect to the database I created in Postgres. Whenever I try to connect to the database for a query (or anything), I get this error:
PDOException
SQLSTATE[08006] [7] FATAL: password authentication failed for user "marlie" FATAL: password authentication failed for user "marlie"
I'm using Windows 10, PostgreSQL 11, Laravel 6.0.4. I can connect to the database through pgAdmin4, command line, and psycopg2 without any password authentication issues. Only Laravel is giving me a hard time.
I've tried creating a new Laravel project, creating a new superuser (which I've tested, can successfully access the database from the other programs I mentioned above). I've also tried putting the username and password in both single and double quotes. I tried changing the database name to the OID number value in my postgreSQL file for the database. I've also tried adding the absolute file directory. I've tried changing port from 5432 to 54320. I've also tried other passwords.
Some search results suggested I play with the pg_hba.conf file and adding some lines such as (the indentation here is a little funny, but in the actual file it's all lined up):
local all marlie md5
local all marlie trust
host all all ::1/0 trust
host all all all trust
I've also tried changing everything to trust, in which case I can log in from command line without a password, but Laravel still won't let me! Also, my Windows laptop doesn't seem to support local connections since they're Unix-socket domains, so any local entries in pg_hba.conf end with the file not being able to load at all. Currently, my pg_hba.conf file is back to the default settings.
I've tried logging in by ssh into my Laravel project through Homestead.
$ vagrant ssh
$ psql -d natureFun -U marlie -W
Password:
psql: FATAL: Peer authentication failed for user "marlie"
I thought this was interesting because nowhere in my conf file do I say to use peer authentication. I've only ever tried trust and md5.
This is my .env file from Laravel
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=natureFun
DB_USERNAME=marlie
DB_PASSWORD=secret
This is pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all 127.0.0.1/32 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
It seems that your first pg_hba.conf has a typo:
host all all all trust
Should be:
host all all <ip_address>/<netmask> trust
If it's a dev machine and you don't care about security (for now), just try:
host all all 0.0.0.0/0 trust
Also, unless you're acutally using IPv6, I'd recommend getting rid of the entire line containing ::1/0
Your second pg_hba.conf that you pasted should work, given that you restarted/reloaded the postmaster process -- you can usually do that through pg_ctl reload from the terminal or SELECT pg_reload_conf() from psql
Disclosure: I am an EnterpriseDB (EDB) employee
SOLVED! I misunderstood how Homestead worked (and also failed to mention that I am using it, sorry!)
when I put localhost or 127.0.0.1 in my .env file in my Laravel project, it references the Homestead Virtual as the localhost, NOT my actual computer.
Changing DB_HOST to my computer's IP address solved the problem and I am now happily connected.

Postgresql (PgAdmin4) password changed (without me telling it to) on my local and I now cannot log in

I was working on our company's new API build for the last 6 months and when I was made aware of a problem with our existing system. I tried to access my local env again to try to debug and found my local DB locked down for an unknown reason with a password that was not root (the initial password I set). Now, I cannot log in at all to my local DB server and editing the pg_hba.conf file and restarting the server did nothing. It was still asking for a password. Any advice is greatly appreciated. specs and screenshot below:
Environment: Windows 10 Pro
Codebase Language: Elixir
DB: postgresql 10
Port: 5432
config :rog_api, RogApi.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "root",
database: "rog_api_local",
hostname: "localhost",
pool_size: 18
pg_hba.conf file:
# TYPE DATABASE USER ADDRESS METHOD
host all all all trust
# IPv4 local connections:
#host all all 127.0.0.1/32 md5
# IPv6 local connections:
#host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host replication all 127.0.0.1/32 md5
#host replication all ::1/128 md5

heroku pg:psql --app error CLI FATAL: no pg_hba.conf entry for host "hostIp", user "user name", database "Name", SSL off

I added the data base PostgreSQL on my Heroku app, I am trying to connect through CLI and pgadmin I getting the same error as below:
FATAL: no pg_hba.conf entry for host "hostIp", user "user name", database "Name", SSL off
I tried adding pg_hba.conf below entries:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all all md5
# IPv6 local connections:
host all all ::1/128 md5
host all all all md5
still no luck, Hope anyone can assist me in that.
For this answer, I made an assumption that you are on Windows.
I ran into this problem as well and soon found out that I missed an important step which is to add the binaries of the PostgreSQL to the PATH environment variable.
This is where I found out:
Remember to update your PATH environment variable to add the bin directory of your Postgres installation. The directory will be similar to this: C:\Program Files\PostgreSQL<VERSION>\bin. If you forget to update your PATH, commands like heroku pg:psql won’t work.

How to use psql as postgres (asks for password, but I don't have one)?

I have installed Postgres using HomeBrew and I try to create a new user in it.
I try to use psql to create a new user and database in Postgres, so first I try to open up it by using sudo -u postgres psql, but it prompts me for a password. As far as I know there should be no password for this user by default.
I also tried to edit my pg_hba.conf, but this also seems fine for me:
# "local" is for Unix domain socket connections only
local all all trust
# 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 trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
Why does it keep prompting me a password (if there is a password what should be it)? If I simply try to run psql to log in using my current system user instead of postgres, and then provide my current user's password, that doesn't work either (I am on macOS by the way).

Forgot Admin Password on Postgres (Windows Installation), can't reset

I have a Windows PostgreSQL installation.
According to some posts, there is no default password set for the 'postgres' user yet I can't connect using an empty password string.
I'm receiving this exception when I try to connect:
Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"
The most relevant tip was this:
https://stackoverflow.com/a/25943227/1005607
Open pg_hba.conf
Change md5 -> TRUST
then restart PgAdmin.
I tried that and restarted PGAdmin but it still asks me for the password when I try to connect:
The task manager in Windows shows some PostgreSQL processes are running. I can't switch them off.
I have tried this and it failed:
pg_ctl restart
ERROR:
pg_ctl: no database directory specified and environment variable PGDATA unset
psql.exe postgres
Password: (none)
ERROR:
psql: fe_sendauth: no password supplied
How can I reset the default password for user 'postgres'?
Based on AK47's answer and some additional info I fixed it by doing the following,
1) Stop Postgres if currently running, command line below. Need to give it the 'data' dir. In my case C:\PostgreSQL\data
pg_ctl -D C:\PostgreSQL\data stop
2) Edit the file pg_hba.conf (it's also in the \data dir) as follows:
As AK40 wrote, change all MD5 references to trust , e.g.
# TYPE DATABASE USER ADDRESS METHOD
# 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.
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
3) Now run
psql -U postgres
4) In the PG Command Prompt that appears type,
ALTER USER Postgres WITH PASSWORD '<newpassword>';
5) Save this by typing wq enter to exit the PG Prompt
6) Now start Postgres
pg_ctl -D C:\PostgreSQL\data start
7) Might want to revert the MD5 -> Trust change later in the pg_hba.conf.
Update your pg_hba.conf file to allow for trusted local connections
[root#server] vim pg_hba.conf
>> local all all trust
then restart your PostgreSQL server
[user#machine] pg_ctl -D C:\PostgreSQL\data restart (Windows)
[root#server] service postgresql restart (Linux)
at this point you can connect to your server as postgres user using a local connection without the need to enter a password (omitting the -h parameter when calling the psql command will use a local connection - if you pass -h then this will match the line host all all 0.0.0.0/0 <method> in your pg_hba.conf file)
[root#server] psql -U postgres
You can then alter the postgres user role and set the password to whatever you like using the following command in the psql terminal
[psql] alter role postgres password <new_password>;
Once this is done you can restart your PostgreSQL server again
[user#machine] pg_ctl -D C:\PostgreSQL\data restart (Windows)
[root#server] service postgresql restart (Linux)
and at this point your password should be changed to the new password
I was having the same issue and I couldn't use Postgres in the CLI on my windows machine but I managed to trace down where the passwords were stored via
%APPDATA%\PostgreSQL\pgpass.conf
NB: You must have selected store password option when creating a server or database in the pgAdmin.
I hope this helps. Thanks.

Resources