# Connection URLs (/docs/orm/v6/reference/connection-urls)

Location: ORM > v6 > Reference > Connection URLs

Prisma ORM needs a connection URL to be able to connect to your database, e.g. when sending queries with [Prisma Client](/orm/v6/prisma-client/setup-and-configuration/introduction) or when changing the database schema with [Prisma Migrate](/orm/v6/prisma-migrate/getting-started).

The connection URL is provided via the `url` field of a `datasource` block in your Prisma config (or Prisma schema if on version 6). It usually consists of the following components (except for SQLite and [Prisma Postgres](/postgres)):

* **User**: The name of your database user
* **Password**: The password for your database user
* **Host**: The IP or domain name of the machine where your database server is running
* **Port**: The port on which your database server is running
* **Database name**: The name of the database you want to use

Make sure you have this information at hand when getting started with Prisma ORM. If you don't have a database server running yet, you can either use a local SQLite database file (see the [Quickstart](/prisma-orm/quickstart/sqlite)) or [setup a free PostgreSQL database with Prisma Postgres](/postgres).

Format [#format]

The format of the connection URL depends on the *database connector* you're using. Prisma ORM generally supports the standard formats for each database. You can find out more about the connection URL of your database on the dedicated docs page:

* [PostgreSQL](/orm/v6/overview/databases/postgresql)
* [MySQL](/orm/v6/overview/databases/mysql)
* [SQLite](/orm/v6/overview/databases/sqlite)
* [MongoDB](/orm/v6/overview/databases/mongodb)
* [Microsoft SQL Server](/orm/v6/overview/databases/sql-server)
* [CockroachDB](/orm/v6/overview/databases/cockroachdb)

Special characters [#special-characters]

For MySQL, PostgreSQL and CockroachDB you must [percentage-encode special characters](https://developer.mozilla.org/en-US/docs/Glossary/Percent-encoding) in any part of your connection URL - including passwords. For example, `p@$$w0rd` becomes `p%40%24%24w0rd`.

For Microsoft SQL Server, you must [escape special characters](/orm/v6/overview/databases/sql-server#connection-details) in any part of your connection string.

Examples [#examples]

Here are examples for the connection URLs of the databases Prisma ORM supports:

Prisma Postgres [#prisma-postgres]

[Prisma Postgres](/postgres) is a managed PostgreSQL service running on unikernels. There are several ways to connect to Prisma Postgres:

* via direct TCP connections (lets you connect via any ORM or database tool)
* via [Prisma Accelerate](/accelerate) (only supported with Prisma ORM)
* locally

The connection string formats of these are covered below.

Direct TCP [#direct-tcp]

When you connect to Prisma Postgres via direct TCP, your connection string looks as follows:

```bash
DATABASE_URL="postgres://USER:PASSWORD@db.prisma.io:5432/?sslmode=require"
```

The `USER` and `PASSWORD` values are provided when you generate credentials for your Prisma Postgres instance in the [Prisma Console](https://console.prisma.io/?utm_source=docs-v6\&utm_medium=content\&utm_content=orm). Here is an example with sample values:

```bash
DATABASE_URL="postgres://2f9881cc7eef46f094ac913df34c1fb441502fe66cbe28cc48998d4e6b20336b:sk_QZ3u8fMPFfBzOID4ol-mV@db.prisma.io:5432/?sslmode=require"
```

Via Prisma Accelerate (HTTP) [#via-prisma-accelerate-http]

When connecting via Prisma Accelerate, the connection string doesn't require a user/password like a conventional connection string does. Instead, authentication works via an API key:

  

#### Prisma 7

```ts title="prisma.config.ts" 
export default defineConfig({
  datasource: {
    url: "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
  },
});
```

#### Prisma 6

```prisma title="schema.prisma" 
datasource db {
  provider = "postgresql"
  url      = "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
} 
```

In this snippet, `API_KEY` is a placeholder for the API key you are receiving when setting up a new Prismas Postgres instance via the [Prisma Console](https://console.prisma.io/?utm_source=docs-v6\&utm_medium=content\&utm_content=orm). Here is an example for what a real connection URL to Prisma Postgres may look like:

  

#### Prisma 7

```ts title="prisma.config.ts" 
export default defineConfig({
  datasource: {
    url: "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY_EXAMPLE"
  },
});
```

#### Prisma 6

```prisma title="schema.prisma" 
datasource db {
  provider = "postgresql"
  url      = "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY_EXAMPLE"
}
```

Local Prisma Postgres [#local-prisma-postgres]

The connection string for connecting to a [local Prisma Postgres](/postgres/database/local-development) instance mirrors the structure of a remote instance via Accelerate:

  

#### Prisma 7

```ts title="prisma.config.ts" 
export default defineConfig({
  datasource: {
    url: "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
  },
});
```

#### Prisma 6

```prisma title="schema.prisma" 
datasource db {
  provider = "postgresql"
  url      = "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
} 
```

However, in this case the `API_KEY` doesn't provide authentication details. Instead, it encodes information about the local Prisma Postgres instance. You can obtain a local connection string via the [`prisma dev`](/orm/v6/reference/prisma-cli-reference#dev) command.

PostgreSQL [#postgresql]

  

#### Prisma 7

```ts title="prisma.config.ts" 
export default defineConfig({
  datasource: {
    url: "postgresql://janedoe:mypassword@localhost:5432/mydb?schema=sample"
  },
});
```

#### Prisma 6

```prisma title="schema.prisma" 
datasource db {
  provider = "postgresql"
  url      = "postgresql://janedoe:mypassword@localhost:5432/mydb?schema=sample"
}
```

MySQL [#mysql]

  

#### Prisma 7

```ts title="prisma.config.ts" 
export default defineConfig({
  datasource: {
    url: "mysql://janedoe:mypassword@localhost:3306/mydb"
  },
});
```

#### Prisma 6

```prisma title="schema.prisma" 
datasource db {
  provider = "mysql"
  url      = "mysql://janedoe:mypassword@localhost:3306/mydb"
}
```

Microsoft SQL Server [#microsoft-sql-server]

  

#### Prisma 7

```ts title="prisma.config.ts" 
export default defineConfig({
  datasource: {
    url: "sqlserver://localhost:1433;initial catalog=sample;user=sa;password=mypassword;"
  },
});
```

#### Prisma 6

```prisma title="schema.prisma" 
datasource db {
  provider = "sqlserver"
  url      = "sqlserver://localhost:1433;initial catalog=sample;user=sa;password=mypassword;"
}
```

SQLite [#sqlite]

  

#### Prisma 7

```ts title="prisma.config.ts" 
export default defineConfig({
  datasource: {
    url: "file:./dev.db"
  },
});
```

#### Prisma 6

```prisma title="schema.prisma" 
datasource db {
  provider = "sqlite"
  url      = "file:./dev.db"
}
```

CockroachDB [#cockroachdb]

  

#### Prisma 7

```ts title="prisma.config.ts" 
export default defineConfig({
  datasource: {
    url: "postgresql://janedoe:mypassword@localhost:26257/mydb?schema=public"
  },
});
```

#### Prisma 6

```prisma title="schema.prisma" 
datasource db {
  provider = "cockroachdb"
  url      = "postgresql://janedoe:mypassword@localhost:26257/mydb?schema=public"
}
```

MongoDB [#mongodb]

*Support for MongoDB is limited to Prisma 6. We're working on support for MongoDB in Prisma 7*

```prisma title="schema.prisma"
datasource db {
  provider = "mongodb"
  url      = "mongodb+srv://root:<password>@cluster0.ab1cd.mongodb.net/myDatabase?retryWrites=true&w=majority"
}
```

.env [#env]

You can also provide the connection URL as an environment variable:

```prisma title="schema.prisma"
datasource db {
  provider = "postgresql"
}
```

You can then either set the environment variable in your terminal or by providing a [dotenv](https://github.com/motdotla/dotenv) file named `.env`. This will automatically be picked up by the Prisma CLI.

Prisma ORM reads the connection URL from the dotenv file in the following situations:

* When it updates the schema during build time
* When it connects to the database during run time

```
DATABASE_URL=postgresql://janedoe:mypassword@localhost:5432/mydb
```

## Related pages

- [`Database features matrix`](https://www.prisma.io/docs/orm/v6/reference/database-features): Learn which database features are supported in Prisma ORM and how they map to the different Prisma ORM tools.
- [`Environment variables reference`](https://www.prisma.io/docs/orm/v6/reference/environment-variables-reference): This page gives an overview of all environment variables available for use.
- [`Error message reference`](https://www.prisma.io/docs/orm/v6/reference/error-reference): Prisma Client, Migrate, Introspection error message reference
- [`Preview features`](https://www.prisma.io/docs/orm/v6/reference/preview-features): Previews are typically available behind a feature flag or require some form of opt-in.
- [`Prisma CLI reference`](https://www.prisma.io/docs/orm/v6/reference/prisma-cli-reference): This page gives an overview of all available Prisma CLI commands, explains their options and shows numerous usage examples.