--- title: "Create a database" description: "Create a managed PostgreSQL database in TIR DBaaS, choosing its version, plan, disk, IP allowlist, VPC, and extensions, and watch it launch." content_type: "how-to" product: "tir-dbaas" platform: "TIR" url: "/tir/tir-dbaas/how-to/create-a-database/" topic: ["create"] --- # Create a database Create a PostgreSQL database in your TIR project. A new database has one node, the primary, and shows **Running** when it is ready to accept connections. ## Before you begin - A TIR project in Chennai, the region where DBaaS is offered. - Permission to create databases in the project. A project member gets DBaaS permission only through their policies. See [TIR Access Control](/tir/tir-iam/). - The public IPv4 addresses or CIDR ranges that will connect to the database, such as your office network or your application servers. - (Optional) A TIR VPC in the **Active** state with at least one free IP address, if VMs and services in a VPC will connect to the database. To make one, see [Create a VPC](/tir/tir-vpc/how-to/create-a-vpc/). ## Open the create page In your project, open **Databases** > **DBaaS** and select **Create Database**. ## Name the database and set the first login 1. In **Database Name**, keep the name TIR suggests, `database-` followed by the date and time, or enter your own. A name is 3 to 50 characters of lowercase letters, numbers, and hyphens. It starts with a letter, ends with a letter or number, and must be unique in the project. The name stays the same for the life of the database. 2. In **Username**, keep `admin` or enter another name for the first login. A username starts with a lowercase letter, then uses lowercase letters, numbers, or underscores, up to 63 characters. The platform keeps a few names for itself, such as `postgres`, so choose another. Like the name, the username is set for the life of the database. 3. In **Password**, enter a password of 12 to 64 characters with at least one uppercase letter, one lowercase letter, one number, and one symbol. For a random 20-character password that meets the rule, select **Suggest**. 4. Copy the password and keep it somewhere safe. The connection details show `` in its place, so you need your own copy to connect. If you lose it, you can set a new one; see [Reset a user's password](/tir/tir-dbaas/how-to/reset-a-user-password/). ## Choose the version and the plan 1. Under **Database Engine**, PostgreSQL is the only engine offered. In **Version**, keep the suggested version or pick another that E2E offers for new databases. The version stays fixed after you create the database. 2. Under **Compute Plan**, choose a plan by its vCPU, memory, and price per hour. The database gets the vCPU and memory of the plan. The plan stays fixed too, so choose one that fits the load you expect. ## Set the disk Under **Storage**, set **Disk** to the size the database needs. It starts at 100 GB and can be 20 GB to 1,000 GB. Drag the slider in 10 GB steps, or type any whole number of GB. The disk holds the operating system as well as your data, so less than the full size is free for data. You can increase the disk later; the size you set here is the smallest it will ever be. The disk has a price per month of its own. ## Choose who can connect Under **Network & Security**: 1. In **IP Allowlist**, add the addresses that can reach the database over the internet. Only these addresses can reach its public endpoint, and the list needs at least one. - To add your own address, select **Add my IP**. It adds the public IPv4 address you are browsing from. If TIR cannot detect your address, type it in instead. - To add another address or range, type an IPv4 address or CIDR range, such as `203.0.113.0/24`, and an optional description of up to 63 characters. Then select **Add** or press Enter. A single address is saved as a /32 range. - **Allow from anywhere** adds `0.0.0.0/0`, which lets any IPv4 address reach the database. Use it only for short tests, and replace it with the ranges you need once you know them. The list holds up to 50 ranges, IPv4 only. A range left typed in the box stops the launch until you add it or clear the box. 2. (Optional) In **VPC**, choose a VPC so that VMs and services in it can connect privately. You can choose an **Active** VPC with at least one free IP address. Connections from inside the VPC bypass the IP allowlist. To make a VPC first, select **Click here**, then refresh the VPC list. TIR attaches the VPC after the launch, once the database turns **Running**. You can change the allowlist and the VPC later; see [Control network access](/tir/tir-dbaas/how-to/control-network-access/). ## Choose extensions Open **Advanced Settings**. In **Extensions**, keep or change the extensions to install. pg_stat_statements, for query statistics, and vector, for pgvector similarity search, are chosen for you. The others on offer are pg_trgm, uuid-ossp, pgcrypto, hstore, citext, btree_gin, btree_gist, ltree, and unaccent. They are installed in `defaultdb` when the database is created. pg_stat_statements is installed on every database, even if you clear it here. You can add more extensions later. The portal can only add them, so an installed extension stays; choose only what the database needs. See [Add extensions](/tir/tir-dbaas/how-to/add-extensions/). **Parameter Group**, also under **Advanced Settings**, is optional. To run the database with your own PostgreSQL settings, attach a group from **Edit** once the database is **Running**. See [Use parameter groups](/tir/tir-dbaas/how-to/use-parameter-groups/). ## Check the cost and launch Before you launch, check **Estimated cost**: the price per hour of the plan and the disk together, and about how much that is per month over 730 hours. For how this is worked out, see [Billing for TIR DBaaS](/tir/tir-dbaas/concepts/billing-options/). Select **Launch Database**. TIR checks that there is capacity for the database and, on a prepaid account, that you have enough credit. When TIR accepts the request, it opens the new database's page. If TIR refuses it, it gives the reason, and the form keeps what you entered. ## Watch it launch While the database is **Creating**, its page tracks each setup step through to the last one, **Ready**. The database turns **Running** once PostgreSQL accepts connections and the admin user exists. Its address and port are then under **Public Endpoint** in **Connection Details**. If the setup fails, the status changes to **Failed**, and the page marks the step that failed. Select **Retry launch** to run the setup again on the same database, or **Delete database** to remove it. For more help, see [Troubleshooting TIR DBaaS](/tir/tir-dbaas/troubleshooting/tir-dbaas/). Next, [connect to the database](/tir/tir-dbaas/how-to/connect-to-a-database/) from your app or from psql, and [schedule snapshots](/tir/tir-dbaas/how-to/schedule-snapshots/) to keep copies of your data.