Creating a user with PSQL

Connect to your PostgreSQL server instance using the following command:

`sudo -u postgres psql`

Select the database you would like to connect to Chartio:

`\c databasename;`

Create a new role for your Chartio read-only user:

`CREATE ROLE chartio_read_only_user LOGIN PASSWORD 'secure_password';`

Grant the necessary privileges for the new user to connect to your
database:

`GRANT CONNECT ON DATABASE exampledb TO chartio_read_only_user;`
`GRANT USAGE ON SCHEMA public TO chartio_read_only_user;`

Run the following command to generate the queries that will grant select
access to your new user:

`SELECT 'GRANT SELECT ON '||schemaname||'."'||tablename||'" TO`
`chartio_read_only_user;' FROM pg_tables WHERE schemaname IN`
`('public') ORDER BY schemaname, tablename;`

You will see a list of GRANT statements similar to the following:

Copy the GRANT statements generated by the query and then paste them
into your terminal window.  To restrict access to a subset of tables only run the GRANT statements for the corresponding tables.  To limit access to specific columns please see the knowledgebase article on limiting PostgreSQL access using schema.

`GRANT SELECT ON public."album" TO chartio_read_only_user;`
`GRANT SELECT ON public."artist" TO chartio_read_only_user;`
`GRANT SELECT ON public."customer" TO chartio_read_only_user;`
`GRANT SELECT ON public."employee" TO chartio_read_only_user;`
`GRANT SELECT ON public."genre" TO chartio_read_only_user;`
`GRANT SELECT ON public."invoice" TO chartio_read_only_user;`
`GRANT SELECT ON public."invoiceline" TO chartio_read_only_user;`
`GRANT SELECT ON public."mediatype" TO chartio_read_only_user;`
`GRANT SELECT ON public."playlist" TO chartio_read_only_user;`
`GRANT SELECT ON public."playlisttrack" TO chartio_read_only_user;`
`GRANT SELECT ON public."track" TO chartio_read_only_user;` 

Your new read-only user now has the necessary permissions for Chartio to
connect to your database.