How to Install PostgreSQL with pgAdmin4 on Linux Mint 20

pgAdmin is an open-source feature-rich, frontend management tool that allows you to easily administer and manage your PostgreSQL relational database from a web browser.

It provides an easy-to-use user interface that simplifies the creation and monitoring of databases and database objects. PgAdmin 4 is an improvement of the earlier pgAdmin tool and is available for Linux, Windows, macOS systems, and even a Docker container.

In this tutorial, you will learn how to install PostgreSQL with pgAdmin4 on Linux Mint 20.

Step 1: Install PostgreSQL Database on Linux Mint

1. To start off, launch your terminal and update your packages using the apt package manager as shown.

$ sudo apt update -y

Once the update is complete, proceed to the next step.

Since pgAdmin4 provides a frontend interface for the management of PostgreSQL database objects, it’s essential to have PostgreSQL installed first.

2. To do this, we are going to install the postgresql package and postgresql-contrib which offers extended features that extend the functionality of PostgreSQL.

$ sudo apt install postgresql postgresql-contrib
Install PostgreSQL on Linux Mint
Install PostgreSQL on Linux Mint

3. Usually, PostgreSQL starts automatically on boot up. You can confirm this using the command given below:

$ sudo systemctl status postgresql
Check PostgreSQL Status
Check PostgreSQL Status

4. To log in to your PostgreSQL instance, first switch to the postgres user. The Postgres user comes included by default with the installation of PostgreSQL. Then run the psql command as shown.

$ sudo -i -u postgres
$ psql
# \q
Connect to PostgreSQL Shell
Connect to PostgreSQL Shell

5. Additionally, you can check if the database server is accepting incoming connections as shown.

$ sudo pg_isready
Check PostgreSQL Accepting Incoming Connections
Check PostgreSQL Accepting Incoming Connections

Step 2: Install pgAdmin4 on Linux Mint

pgAdmin4 is available for Ubuntu 16.04 and later versions and can easily be installed using the APT package manager. The same cannot support Linux Mint 20 and Pgadmi4 developers are yet to include support that allows users to easily install the frontend management tool using the APT package manager.

6. The only viable option is to install pgAdmin4 from a virtual environment. So first, we will install the prerequisite packages as shown.

$ sudo apt install libgmp3-dev build-essential libssl-dev
Install Prerequisite Packages
Install Prerequisite Packages

7. Next, install the Python virtual environment and associated dependencies.

$ sudo apt install python3-virtualenv python3-dev libpq-dev
Install Python Virtual Environment
Install Python Virtual Environment

8. Next, create a directory where you will create a virtual environment.

$ mkdir pgadmin4 && cd pgadmin4

9. Then create the virtual environment as shown. Here, pgadmin4env is the name of the virtual environment.

$ virtualenv pgadmin4env
Create Virtual Environment for pgAdmim4
Create Virtual Environment for pgAdmim4

10. Once the virtual environment is in place, activate it as shown.

$ source pgadmin4env/bin/activate

11. Then use the pip tool to install pgadmin4 as shown.

$ pip install https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v4.30/pip/pgadmin4-4.30-py3-none-any.whl
Install PgAdmin4 in Linux Mint
Install PgAdmin4 in Linux Mint

12. Next, create a configuration file config_local.py.

$ sudo nano pgadmin4env/lib/python3.8/site-packages/pgadmin4/config_local.py

and add the lines below.

import os
DATA_DIR = os.path.realpath(os.path.expanduser(u'~/.pgadmin/'))
LOG_FILE = os.path.join(DATA_DIR, 'pgadmin4.log')
SQLITE_PATH = os.path.join(DATA_DIR, 'pgadmin4.db')
SESSION_DB_PATH = os.path.join(DATA_DIR, 'sessions')
STORAGE_DIR = os.path.join(DATA_DIR, 'storage')
SERVER_MODE = False
Create PgAdmin4 Configuration
Create PgAdmin4 Configuration

13. To start the pgAdmin4 management tool, invoke the command:

$ python pgadmin4env/lib/python3.8/site-packages/pgadmin4/pgadmin4.py
Or
./pgadmin4env/bin/pgadmin4&
Start PgAdmin4 Service
Start PgAdmin4 Service

14. Finally, head over to your browser and browse the address shown.

http://127.0.0.1:5050

You will be prompted to set the master password, so proceed and set a strong password and click the ‘Ok’ button.

Set PgAdmin4 Password
Set PgAdmin4 Password

15. To make things easier, you can create an alias in the ~/.bashrc file as shown.

$ echo "alias startPg='~/pgAdmin4/venv/bin/python ~/pgAdmin4/venv/lib/python3.8/site-packages/pgadmin4/pgAdmin4.py'" >> ~/.bashrc

16. Next, update the bashrc file.

$ source ~/.bashrc

17. Finally, you can start the pgAdmin4 management tool by simply invoking the startpg command.

$ startpg
Start PgAdmin4 Tool
Start PgAdmin4 Tool

Once again head over to your browser and log in to the PgAdmin4 interface. And this concludes the installation of pgAdmin4 on Linux Mint.

If you liked this article, then do subscribe to email alerts for Linux tutorials. If you have any questions or doubts? do ask for help in the comments section.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

10 thoughts on “How to Install PostgreSQL with pgAdmin4 on Linux Mint 20”

  1. pgadmin4env) [email protected]:~/pgadmin4# python pgadmin4env/lib/python3.8/site-packages/pgadmin4/pgAdmin4.py
    NOTE: Configuring authentication for DESKTOP mode.
    Traceback (most recent call last):
    File “/root/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/engine/base.py”, line 1771, in _execute_context
    self.dialect.do_execute(
    File “/root/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/engine/default.py”, line 717, in do_execute
    cursor.execute(statement, parameters)
    sqlite3.OperationalError: table version already exists

    Reply
      • Can I ask that want version of python you used, because I got error like this:

        (pgadmin4env) [email protected]:~/pgadmin4$ ./pgadmin4env/bin/pgadmin4&
        [1] 38587
        (pgadmin4env) [email protected]:~/pgadmin4$ NOTE: Configuring authentication for DESKTOP mode.
        Traceback (most recent call last):
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", 
        line 1705, in _execute_context
            self.dialect.do_execute(
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/engine/default.py", 
        line 691, in do_execute
            cursor.execute(statement, parameters)
        sqlite3.OperationalError: table version already exists
        

        The above exception was the direct cause of the following exception:

        Traceback (most recent call last):
          File "./pgadmin4env/bin/pgadmin4", line 5, in 
            from pgadmin4.pgAdmin4 import main
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/pgadmin4/pgAdmin4.py", line 94, in 
            app = create_app()
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/pgadmin4/pgadmin/__init__.py", line 351, in create_app
            db_upgrade(app)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/pgadmin4/pgadmin/setup/db_upgrade.py", line 25, in db_upgrade
            flask_migrate.upgrade(migration_folder)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/flask_migrate/__init__.py", line 95, in wrapped
            f(*args, **kwargs)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/flask_migrate/__init__.py", line 280, in upgrade
            command.upgrade(config, revision, sql=sql, tag=tag)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/alembic/command.py", line 294, in upgrade
            script.run_env()
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/alembic/script/base.py", line 490, in run_env
            util.load_python_file(self.dir, "env.py")
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 97, in load_python_file
            module = load_module_py(module_id, path)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/alembic/util/compat.py", line 182, in load_module_py
            spec.loader.exec_module(module)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/pgadmin4/pgadmin/setup/../../migrations/env.py", line 93, in 
            run_migrations_online()
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/pgadmin4/pgadmin/setup/../../migrations/env.py", line 86, in run_migrations_online
            context.run_migrations()
          File "", line 8, in run_migrations
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/alembic/runtime/environment.py", line 813, in run_migrations
            self.get_context().run_migrations(**kw)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/alembic/runtime/migration.py", line 560, in run_migrations
            step.migration_fn(**kw)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/pgadmin4/migrations/versions/fdc58d9bd449_.py", line 45, in upgrade
            op.create_table('version',
          File "", line 8, in create_table
          File "", line 3, in create_table
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/alembic/operations/ops.py", line 1109, in create_table
            return operations.invoke(op)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/alembic/operations/base.py", line 354, in invoke
            return fn(self, operation)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/alembic/operations/toimpl.py", line 101, in create_table
            operations.impl.create_table(table)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/alembic/ddl/impl.py", line 277, in create_table
            self._exec(schema.CreateTable(table))
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/alembic/ddl/impl.py", line 146, in _exec
            return conn.execute(construct, multiparams)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1200, in execute
            return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/sql/ddl.py", line 77, in _execute_on_connection
            return connection._execute_ddl(
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1290, in _execute_ddl
            ret = self._execute_context(
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1748, in _execute_context
            self._handle_dbapi_exception(
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1929, in _handle_dbapi_exception
            util.raise_(
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
            raise exception
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1705, in _execute_context
            self.dialect.do_execute(
          File "/home/lj/pgadmin4/pgadmin4env/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 691, in do_execute
            cursor.execute(statement, parameters)
        sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table version already exists
        [SQL: 
        CREATE TABLE version (
        	name VARCHAR(32) NOT NULL, 
        	value INTEGER NOT NULL, 
        	PRIMARY KEY (name)
        )
        
        ]
        (Background on this error at: http://sqlalche.me/e/14/e3q8)
        ^C
        [1]+  Exit 1                  ./pgadmin4env/bin/pgadmin4
        
        Reply

Got something to say? Join the discussion.

Have a question or suggestion? Please leave a comment to start the discussion. Please keep in mind that all comments are moderated and your email address will NOT be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.