How to create a PostgreSQL database and users using psql and pgAdmin

December 5, 2019

SUMMARY: This article covers the steps for creating new databases and users in PostgreSQL using both psql and pgAdmin:

           1. Using psql

                   a.     Creating a user with psql

                   b.     Creating a database with psql

         2. Using pgAdmin

                  a. Creating a user with pgAdmin
                  b. Creating a database with pgAdmin

 

While working with PostgreSQL the two basic requirements is to create a database and set up a few users. This will help us in eliminating the need for reinstallation, if we mess up the default set of databases or users that already exist, while trying to learn and build our understanding. We will  go through the steps for both psql and pgAdmin in order to ensure that you do not get stuck if you are using one or the other. 

Using psql

Creating a user with psql

In PostgreSQL, a user can easily be created using the CREATE USER command :

postgres=# create user amit;

CREATE ROLE

postgres=#

 

The reason the command success is returned as CREATE ROLE is that Postgres does not differentiate between a role and a user. The terms can be used interchangeably. If you are interested in learning more, you can read the documentation at the following link: https://www.postgresql.org/docs/12/sql-createrole.html.

There are a few useful options that can be used while creating the user. Let’s begin with the formatting for the command:

CREATE USER: This is the SQL syntax that is used to initiate the request for creating the user.

<username>: the next step is to provide the username that you are trying to create.

Following the username, you can specify the privileges that you want to grant to the new user. Some of the most common are:

-s --superuser: whether you want to make the user a superuser (a user without restrictions)

-P --pwprompt: this will prompt the user to change the password on their first attempt to log in

-w --no-password: the user will not need to enter a password when connecting. (This is useful if you are using a .pgpass file while trying to run scripts.)

There are several other options available, which you can find at the following link: https://www.postgresql.org/docs/12/app-createuser.html.

Creating a database with psql

Similar to creating a user, creating a database is very easy::

postgres=# create database amit;

CREATE DATABASE

 

If CREATE DATABASE is returned, then it has successfully created the database for you. 

Once again let’s take a look at the command that was passed at the psql prompt::

CREATE DATABASE: This is the SQL syntax used to initiate the request for creating the database.

<database name>: the name of the database that you want to create, which in my example was “amit”.

If you are creating databases with similar structures, then one of the most useful additions to the CREATE DATABASE argument is the template. You can modify the default database template, template1, in the default installation, and then while trying to replicate it within the same instance you can use the following at the psql prompt::

postgres=# create database amit1 template template1;

CREATE DATABASE

postgres=#

 

For additional options you can visit the following link: https://www.postgresql.org/docs/12/sql-createdatabase.html

 

Using pgAdmin

Creating a user with pgAdmin

As described above, in PostgreSQL a user and a role are the same. Hence, pgAdmin gives the option to create a Login/Role in the options rather than a user. We will be using this option to create additional users. Since in PostgreSQL the users or roles exist at the server level and not at the database level, you will need to right-click on the server in which you want to create the user:

 

Once you select Login/Group Role, a new window will allow you to provide the name of the user:

 

After providing the user name, proceed to the Definition tab. The Definition tab is where you provide the password for the user, account expiry if you want to set one, and the number of connections that you want that user to create. By default, connection limit is set to -1, which results in no connection limit.

 

After providing the password, proceed to the Privileges tab to provide the privileges that use would need require. These include login, superuser, and creation roles.

 

After providing the required privileges, you can click Save, and the user will be saved and added at the server level.

 

Creating a database with pgAdmin

In the pgAdmin window select and log in to the server in which you want to create the database. Once you are in, select the server and right-click for the contextual menu. You will get the create database option:

 

Selecting Database will open a new window where you can start creating the new database by providing the database’s name of the database and owner:

 

Name and owner are the minimum requirements to create the database. If you want to do some further customizations, you can select the Definition tab, where you can specify the template, encoding, and custom tablespace :

 

Click Save and you will find the database available under the Server you selected in the left-hand panel of pgAdmin: