Skip to main content

PostgreSQL database

How to run a PostgreSQL database in CGC with cgc db create, its default configuration (user, password, database name) and how to connect to it.

PostgreSQL is a powerful, open source, object-relational database system with over 35 years of active development that has earned it a strong reputation for reliability, feature robustness and performance.

How to run it

Create volume for the data:

cgc volume create -s 5 -sc <storage_class> psql-volume

Run database with volume attached:

cgc db create --name psql01 -c 4 -m 4 -v psql-volume postgresql
warning

Always create the database with a mounted volume. Without -v the database writes to the pod's ephemeral disk, so every restart (cgc resource restart, node maintenance, a crash) initialises PostgreSQL from scratch and all data is lost after a single restart. With a volume (mounted at /var/lib/postgresql/data, which holds PGDATA) the same rows survived cgc resource restart, and they also survived deleting the database and creating it again with the same name and the same volume.

Default configuration

The default configuration for PostgreSQL is set to use the PostgreSQL database engine. The database will be created with the following parameters:

  • POSTGRES_PASSWORD: The password for the PostgreSQL user. This is set to CGC specific app_token that you receive after creating the database.
  • POSTGRES_USER=admin: The user for the PostgreSQL database.
  • POSTGRES_DB=db: The name of the PostgreSQL database. It is always db, it is not set to the app name you provided.
  • POSTGRES_HOST_AUTH_METHOD=trust: Configures PostgreSQL to skip password verification for connections, trusting that authentication has already occurred at the system level. This is convenient for development but creates a significant security risk in production environments.
  • PGDATA=/var/lib/postgresql/data/pgdata: The data directory, a subdirectory of the mounted volume.
info

If you wish to overwrite POSTGRES_PASSWORD and keep it displayed correctly during cgc db list -d, we advice using CGC flag -ce app_token=YOUR_PASSWORD

How to connect

To learn more about the usage of CGC SDK, please visit here