Connecting PostgreSQL running on WSL from DBeaver on Windows (FATAL: password authentication failed for user “postgres”)
Image by Seadya - hkhazo.biz.id

Connecting PostgreSQL running on WSL from DBeaver on Windows (FATAL: password authentication failed for user “postgres”)

Posted on

Are you frustrated with the “FATAL: password authentication failed for user ‘postgres'” error when trying to connect to your PostgreSQL database running on Windows Subsystem for Linux (WSL) from DBeaver on Windows? Don’t worry, you’re not alone! In this article, we’ll guide you through a step-by-step process to resolve this issue and get you connected in no time.

Prerequisites

Before we dive in, make sure you have:

  • WSL installed on your Windows machine
  • PostgreSQL installed and running on WSL
  • DBeaver installed on your Windows machine
  • A basic understanding of WSL, PostgreSQL, and DBeaver

Understanding the Error

The “FATAL: password authentication failed for user ‘postgres'” error occurs when DBeaver tries to connect to your PostgreSQL database using the default ‘postgres’ user, but the password authentication fails. This is because PostgreSQL on WSL uses a different authentication mechanism than what DBeaver expects.

WSL and PostgreSQL

When you run PostgreSQL on WSL, it uses the Linux authentication mechanism, which is different from the Windows authentication mechanism used by DBeaver. To connect to PostgreSQL on WSL from DBeaver on Windows, you need to configure PostgreSQL to use password authentication.

Step-by-Step Solution

Follow these steps to configure PostgreSQL on WSL to use password authentication and connect to it from DBeaver on Windows:

Step 1: Configure PostgreSQL on WSL

Open a WSL terminal and navigate to the directory where your PostgreSQL configuration file is located (usually `/etc/postgresql/13/main` on Ubuntu-based systems):

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

Edit the `pg_hba.conf` file by adding the following line at the end of the file:

host all all 127.0.0.1/32 md5

This line enables password authentication for all users (including the ‘postgres’ user) connecting from the loopback address (127.0.0.1). Save and exit the editor.

Step 2: Restart PostgreSQL on WSL

Restart the PostgreSQL service to apply the changes:

sudo service postgresql restart

Step 3: Create a New User and Password

Create a new user and password for PostgreSQL (or use an existing one). You’ll need this to connect to the database from DBeaver:

sudo -u postgres psql -c "CREATE ROLE dbeaver_user WITH PASSWORD 'dbeaver_password' SUPERUSER;"

Replace `dbeaver_user` and `dbeaver_password` with your desired username and password.

Step 4: Configure DBeaver on Windows

Open DBeaver on Windows and create a new connection:

In the “Connection” tab:

Parameter Value
Host 127.0.0.1
Port 5432
Database your_database_name
Username dbeaver_user
Password dbeaver_password

Replace `your_database_name` with the name of your PostgreSQL database on WSL.

Step 5: Test the Connection

Click the “Test Connection” button to verify the connection:

If everything is set up correctly, you should see a success message indicating that the connection was established.

Troubleshooting

If you encounter issues during the process, refer to the following common errors and solutions:

Error 1: Connection Refused

If you receive a “Connection refused” error, ensure that:

  • PostgreSQL is running on WSL
  • The `pg_hba.conf` file has been edited correctly
  • The PostgreSQL service has been restarted

Error 2: Authentication Failed

If you receive an “Authentication failed” error, ensure that:

  • The username and password are correct
  • The password has been set correctly in the `pg_hba.conf` file
  • The new user and password have been created successfully

Conclusion

By following these steps, you should now be able to connect to your PostgreSQL database running on WSL from DBeaver on Windows. Remember to update your `pg_hba.conf` file to allow password authentication, create a new user and password, and configure DBeaver to use these credentials. If you encounter any issues, refer to the troubleshooting section for common errors and solutions.

Happy connecting!

Frequently Asked Question

Got stuck while trying to connect PostgreSQL running on WSL from DBeaver on Windows? Don’t worry, we’ve got you covered!

Q1: Why am I getting a “FATAL: password authentication failed for user ‘postgres'” error?

This error usually occurs when the password for the ‘postgres’ user is not set or is incorrect. Make sure to set a password for the ‘postgres’ user in your PostgreSQL instance on WSL. You can do this by running the command `ALTER USER postgres WITH PASSWORD ‘your_password’;` in the PostgreSQL console.

Q2: How do I set a password for the ‘postgres’ user in PostgreSQL on WSL?

To set a password for the ‘postgres’ user, open the PostgreSQL console on WSL by running the command `sudo -u postgres psql`. Then, run the command `ALTER USER postgres WITH PASSWORD ‘your_password’;` to set a password. Replace ‘your_password’ with your desired password.

Q3: What are the correct connection settings in DBeaver for PostgreSQL on WSL?

In DBeaver, create a new connection with the following settings: Host – localhost, Port – 5432, Database – postgres, Username – postgres, Password – your_password (the one you set earlier). Make sure to check the “Show all databases” checkbox to see all available databases.

Q4: Do I need to configure any firewall settings to connect to PostgreSQL on WSL from DBeaver?

By default, PostgreSQL on WSL only listens to local connections. To allow connections from DBeaver on Windows, you need to configure PostgreSQL to listen to all IP addresses. You can do this by editing the `postgresql.conf` file and setting `listen_addresses = ‘*’`. Additionally, you may need to configure Windows Defender Firewall to allow incoming connections to PostgreSQL.

Q5: What if I’m still getting an error after trying all the above steps?

If you’re still getting an error, try checking the PostgreSQL logs for more detailed error messages. You can do this by running the command `sudo -u postgres psql -l` in the WSL console. Also, ensure that your DBeaver connection settings are correct and that you’ve restarted the PostgreSQL service after making any configuration changes.