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

# Quickstart

> Get up and running with Quill in less than a minute

### 1. Create a read-only user

<Tabs>
  <Tab title="PostgreSQL">
    To create a read-only user in PostgreSQL, do the following:

    <Steps>
      <Step title="Create a new user">
        ```SQL PostgreSQL theme={null}
        -- Replace 'password' with a strong password.
        CREATE USER quill_read_only WITH PASSWORD 'password';
        ```
      </Step>

      <Step title="Grant CONNECT privileges">
        ```SQL PostgreSQL theme={null}
        -- Allows the user to connect to the database.
        GRANT CONNECT ON DATABASE your_database TO quill_read_only;
        ```
      </Step>

      <Step title="Grant USAGE on the schema">
        ```SQL PostgreSQL theme={null}
        -- Allows the user to access the objects within the schema.
        GRANT USAGE ON SCHEMA your_schema TO quill_read_only;
        ```
      </Step>

      <Step title="Grant SELECT privileges on the schema">
        ```SQL PostgreSQL theme={null}
        -- Allows the user to read data from the tables.
        GRANT SELECT ON ALL TABLES IN SCHEMA your_schema TO quill_read_only;
        ```
      </Step>
    </Steps>

    <Tip>
      The connection string for the read-only user we just created will be something like: `postgresql://quill_read_only:password@db.example.com:5432/your_database`.
    </Tip>

    <img src="https://mintcdn.com/quill/uJxYp0QfD2nyydTi/images/onboard_1_pg.png?fit=max&auto=format&n=uJxYp0QfD2nyydTi&q=85&s=2ca73475c14f398b930dea68495db821" width="863" height="871" data-path="images/onboard_1_pg.png" />
  </Tab>

  <Tab title="Big Query">
    To create a read-only user in Big Query, do the following:

    <Steps>
      <Step title="Create a service account for Quill">
        In the Google Cloud Console, navigate to the IAM & Admin > Service Accounts page. Click `Create Service Account` and follow the prompts to create a new service account.
      </Step>

      <Step title="Grant permissions to the service account">
        Grant the `bigquery.dataViewer` role to the service account for a dataset. You can do this by navigating to the dataset’s Permissions page and adding the service account with the `bigquery.dataViewer` role.
      </Step>

      <Step title="Create the access token">
        Create a new JSON key for the service account by clicking the `Actions` dropdown next to the service account on the IAM & Admin > Service Accounts page, and then selecting `Create Key`. Select `JSON` as the key type and click `Create`. This will prompt you to save it one your local machine.

        In the next step you’ll upload this JSON file into the Quill BI Platform.
      </Step>
    </Steps>

    <img src="https://mintcdn.com/quill/uJxYp0QfD2nyydTi/images/onboard_1_bq.png?fit=max&auto=format&n=uJxYp0QfD2nyydTi&q=85&s=27cf5c4c6a1fa67b04fa60e2f34b027d" width="859" height="728" data-path="images/onboard_1_bq.png" />
  </Tab>

  <Tab title="Snowflake">
    To create a read-only user in Snowflake, do the following:

    <Steps>
      <Step title="Create a new user">
        ```SQL Snowflake SQL theme={null}
        -- Replace 'password' with a strong password.
        CREATE USER quill_read_only PASSWORD 'password';
        ```
      </Step>

      <Step title="Create a new read-only role">
        ```SQL Snowflake SQL theme={null}
        -- Creates a role specifically for read-only access.
        CREATE ROLE quill_read_only_role;
        ```
      </Step>

      <Step title="Grant SELECT privileges to the role">
        ```SQL Snowflake SQL theme={null}
        -- Allows the role to read data from the tables.
        GRANT SELECT ON ALL TABLES IN SCHEMA my_schema TO quill_read_only_role;
        ```
      </Step>

      <Step title="Assign the user to the role">
        ```SQL Snowflake SQL theme={null}
        -- Gives user the permissions of the role
        GRANT quill_read_only_role TO quill_read_only;
        ```
      </Step>
    </Steps>

    <img src="https://mintcdn.com/quill/uJxYp0QfD2nyydTi/images/onboard_1_sf.png?fit=max&auto=format&n=uJxYp0QfD2nyydTi&q=85&s=2eda8ac5b60842c19bd49c8380a01299" width="866" height="865" data-path="images/onboard_1_sf.png" />
  </Tab>

  <Tab title="MySQL">
    To create a read-only user in MySQL, do the following:

    <Steps>
      <Step title="Create a new user">
        ```SQL MySQL theme={null}
        -- Replace 'password' with a strong password.
        CREATE USER 'quill_read_only'@'%' IDENTIFIED BY 'password';
        ```
      </Step>

      <Step title="Grant USAGE on the schema">
        ```SQL MySQL theme={null}
        -- Allows the user to read data from the tables.
        GRANT SELECT ON your_database.* TO 'quill_read_only'@'%';
        ```
      </Step>
    </Steps>

    <Tip>
      The connection string for the read-only user we just created will be something like: `mysql://quill_read_only:password@db.example.com:3306/your_database`.
    </Tip>

    <img src="https://mintcdn.com/quill/uJxYp0QfD2nyydTi/images/onboard_1_ms.png?fit=max&auto=format&n=uJxYp0QfD2nyydTi&q=85&s=adaa4fd65a9eed7892dbb1d8bb84b8ba" width="859" height="868" data-path="images/onboard_1_ms.png" />
  </Tab>
</Tabs>

### 2. Connect your database

Go to [https://app.quill.co/onboard](https://app.quill.co/onboard) and enter the read-only database connection string that we created in the last step.

<Tip>
  If you're using our fully-managed Quill instance, make sure to add the Quill
  server to your database IP whitelist, if you have one. Requests from Quill
  will always come from `34.133.137.225`, `209.71.81.30/32`, or `209.71.101.146`
</Tip>

<Info>
  For more information about data and access control, you can read our
  self-hosting guide [here](/bi-platform/self-host).
</Info>

### 3. Connect your schema

The Quill platform provides powerful filtering and reporting tools to help you get the insights you want, faster. Since Quill provides organization-based filtering out-of-the-box, simply let us know which table to use and Quill will automatically partition your data by organization.

<img src="https://mintcdn.com/quill/uJxYp0QfD2nyydTi/images/onboard_2.png?fit=max&auto=format&n=uJxYp0QfD2nyydTi&q=85&s=7964ae2df846e125172ba98abb5c413c" width="850" height="814" data-path="images/onboard_2.png" />

### 4. Add SQL Views

Create a cleaned schema that makes it easier to write queries and reports. The views you create here will be used to create charts and tables later on. Don't worry, you can always create and edit these views later.

<img src="https://mintcdn.com/quill/uJxYp0QfD2nyydTi/images/onboard_3.png?fit=max&auto=format&n=uJxYp0QfD2nyydTi&q=85&s=5335a558a77b60ff6b9532fd4f6625de" width="1829" height="982" data-path="images/onboard_3.png" />

### Next Steps

Once you have connected your database, you're ready to create your first dashboard! Check out our guides on how to create your first dashboard below.

<Card title="Create a dashboard" icon="square-1" href={"/bi-platform/dashboard"}>
  Build your first dashboard with Quill in less than a minute.
</Card>
