> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cockroachlabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DROP USER

The `DROP USER` [statement](https://docs.cockroachlabs.com/docs/v24.2/sql-statements) removes one or more SQL users. You can use the keywords `ROLE` and `USER` interchangeably. `DROP USER` is an alias for [`DROP ROLE`](https://docs.cockroachlabs.com/docs/v24.2/drop-role).

> [!NOTE]
>
> The `DROP USER` statement performs a schema change. For more information about how online schema changes work in CockroachDB, see [Online Schema Changes](https://docs.cockroachlabs.com/docs/v24.2/online-schema-changes).

## Considerations

* The `admin` user/role cannot be dropped, and `root` must always be a member of `admin`.
* A user/role cannot be dropped if it has privileges. Use [`REVOKE`](https://docs.cockroachlabs.com/docs/v24.2/revoke) to remove privileges.
* Users/roles that [own objects](https://docs.cockroachlabs.com/docs/v24.2/security-reference/authorization#object-ownership) (such as databases, tables, schemas, and types) cannot be dropped until the [ownership is transferred to another user/role](https://docs.cockroachlabs.com/docs/v24.2/alter-database).
* If a user/role is logged in while a [different session](https://docs.cockroachlabs.com/docs/v24.2/show-sessions) drops that user, CockroachDB checks that the user exists before allowing it to inherit privileges from [the `public` role](https://docs.cockroachlabs.com/docs/v24.2/security-reference/authorization). In addition, any active [web](https://docs.cockroachlabs.com/docs/v24.2/ui-overview#authentication) [sessions](https://docs.cockroachlabs.com/docs/v24.2/cockroach-auth-session) are revoked when a user is dropped.

## Required privileges

Non-admin users cannot drop admin users. To drop non-admin users, the user must be a member of the `admin` role or have the [`CREATEROLE`](https://docs.cockroachlabs.com/docs/v24.2/create-user#create-a-user-that-can-create-other-users-and-manage-authentication-methods-for-the-new-users) parameter set.

## Synopsis

See [`DROP ROLE`: Synopsis](https://docs.cockroachlabs.com/docs/v24.2/drop-role#synopsis).

## Parameters

| Parameter | Description |
| - | - |
| `user_name` | The name of the user to remove. To remove multiple users, use a comma-separate list of usernames. You can use [`SHOW USERS`](https://docs.cockroachlabs.com/docs/v24.2/show-users) to find usernames. |

## Example

### Remove privileges

All of a user's privileges must be revoked before the user can be dropped.

In this example, first check a user's privileges. Then, revoke the user's privileges before removing the user.

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
CREATE DATABASE test;
CREATE TABLE customers (k int, v int);
CREATE USER max;
GRANT ALL ON TABLE customers TO max;
```

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
SHOW GRANTS ON customers FOR max;
```

```
  database_name | schema_name | table_name | grantee | privilege_type | is_grantable
----------------+-------------+------------+---------+----------------+---------------
  test          | public      | customers  | max     | ALL            |      f
(1 row)
```

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
REVOKE CREATE,INSERT,UPDATE ON customers FROM max;
```

### Remove default privileges

In addition to removing a user's privileges, a user's [default privileges](https://docs.cockroachlabs.com/docs/v24.2/security-reference/authorization#default-privileges) must be removed prior to dropping the user. If you attempt to drop a user with modified default privileges, you will encounter an error like the following:

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
DROP USER max;
```

```
ERROR: cannot drop role/user max: grants still exist on test.public.customers
SQLSTATE: 2BP01
```

To see what privileges the user still has remaining on the table, issue the following statement:

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
SHOW GRANTS ON TABLE test.customers FOR max;
```

```
  database_name | schema_name | table_name | grantee | privilege_type | is_grantable
----------------+-------------+------------+---------+----------------+---------------
  test          | public      | customers  | max     | BACKUP         |      f
  test          | public      | customers  | max     | CHANGEFEED     |      f
  test          | public      | customers  | max     | DELETE         |      f
  test          | public      | customers  | max     | DROP           |      f
  test          | public      | customers  | max     | SELECT         |      f
  test          | public      | customers  | max     | ZONECONFIG     |      f
(6 rows)
```

To drop the user you must revoke all of the user's remaining privileges:

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
REVOKE ALL ON TABLE public.customers FROM max;
```

Now dropping the user should succeed:

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
DROP USER max;
```

## See also

* [`CREATE USER`](https://docs.cockroachlabs.com/docs/v24.2/create-user)
* [`ALTER USER`](https://docs.cockroachlabs.com/docs/v24.2/alter-user)
* [`SHOW USERS`](https://docs.cockroachlabs.com/docs/v24.2/show-users)
* [`GRANT`](https://docs.cockroachlabs.com/docs/v24.2/grant)
* [`SHOW GRANTS`](https://docs.cockroachlabs.com/docs/v24.2/show-grants)
* [Create Security Certificates](https://docs.cockroachlabs.com/docs/v24.2/cockroach-cert)
* [SQL Statements](https://docs.cockroachlabs.com/docs/v24.2/sql-statements)
