Redashを使い込んでいくと、だんだんRedash内部のMetadataデータベースに直接クエリーをかけたくなってきます。
どんな用途があるのか上記記事が色々と参考になりますが、私の環境ではバージョンの違いなのか、記事に書いているようなユーザー名とパスワードでDBにアクセスすることができなかったので、Postgreの新規ユーザーを作りRedashでアクセスするまでの手順をまとめました。AMIからRedash環境を構築した場合の話ですのでDockerから作っている人には必要のない手順かと思います。
まずはsshでRedashを立ち上げているサーバーにログインし、postgresユーザーでredashデータベースに接続します。
sudo -u postgres psql redash
現状のユーザー一覧を確認します。
redash=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
redash | | {}
redash
というユーザーが存在することがわかりますが、今回はこれとは別に読み込み専用のユーザーを作成しようと思います。ユーザー名はredash_reader
、パスワードredash_reader
で作成しますので、自由に変更してください。
#redash_readerを"redash_reader"というパスワードで作成
redash=# CREATE ROLE redash_reader WITH PASSWORD 'redash_reader' NOCREATEROLE NOCREATEDB NOSUPERUSER LOGIN;
#redash_readerユーザーにSELECT権限を付与
redash=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO redash_reader;
念のためredash_readerユーザーが作成されたことを確認します。
redash=# \du
List of roles
Role name | Attributes | Member of
---------------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
redash | | {}
redash_reader | | {}
後はredashの管理画面のDATA SOURCESからPostgreSQLを選択肢、先ほど作成したユーザー名とパスワードを入力。Database Nameはredash
です。
Test Connectionが成功すればあとはクエリーを書くだけです。