Creating Users

If you have more than one person working with your Segment Warehouse, you might want to create users for your team so that each person can have a discrete login. The three steps in this section will show you how to create a user, grant usage on a schema and then grant the privileges that the user will need to interact with that schema.

1. Creating a user with the CREATE USER command

CREATE USER <name>
[IN GROUP <group>]
WITH PASSWORD <password>
[VALID UNTIL <abstime>]

The code above in [] is optional, you don’t need to group your users or give their credentials an expiration date, the code works without it. However, if you do choose to use those parameters, <abstime> should be formatted as ‘2015-09-13’ which translates to September 13th, 2015.

For instance, you can create a user named stephencolbert as

CREATE USER stephencolbert
WITH PASSWORD 'Americanpistachio1942'

This creates a user, you can run the following to get a list of users in your database.

SELECT * FROM pg_user

Now that we’ve confirmed that the user has been created, they already have access to the public schema that contains systems-level information about the cluster but we need to give them access to the specific schemas that they’ll be working in.

2. GRANT USAGE on the schema to the user we just created

GRANT USAGE ON SCHEMA <schema_name> TO <user>

The above SQL command grants the user USAGE priveleges on a schema. Let’s assume you want to grant stephencolbert access to your development schema, it would look like below

GRANT USAGE ON SCHEMA development TO stephencolbert

Our new user now has usage rights on the development schema, now we need to grant the type of SQL commands they’ll be able to run against the cluster. For the purposes of this example, we’re going to give the user read only privileges.

3. GRANT SELECT privileges so the user can query the tables

GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <user>

The above SQL command grants the user SELECT rights on all tables in the chosen schema. For our stephencolbert user and the development schema, it would look like below.

GRANT SELECT ON ALL TABLES IN SCHEMA development TO stephencolbert

Doing these three steps will result in a new user that can query all the tables in a given schema. If you want to give access to more than one schema then you can simply repeat steps 2 and 3 for each additional schema. If you have any questions or if you’re running into any issues getting this set up, contact us.


If you have any questions or see anywhere we can improve our documentation, please let us know or kick off a conversation in the Segment Community!