Tableau

【手順解説】MacでRedshiftに接続できない時の原因と対処法【Tableau経由】

はじめに

今回は、私(ヨナハ)が実際に業務でトラブったことをシェアしたいと思います。
状況としては、
・リモートデスクトップ(Linux)でRedshiftに接続することはできる。
・Macで「RedshiftをデータソースとするTableauファイル」が開けない。
という感じです。
会社でTableau Server / Onlineを利用するMacユーザーであれば、今後起こり得るトラブルなのでぜひ参考にしてみて下さい。

実行手順およびその結果

①Macでターミナルを開いて以下のコマンドを実行(psqlインストール)
$ brew install postgresql

※既にPostgreSQL(ポストグレエスキューエル)をインストールしている方はこの手順をスキップして下さい。
※この段階でエラーが出る方はHomebrewをインストールして下さい(参考
<解説>
PostgreSQLは通称ポスグレと呼ばれており、SQLを用いたデータベースの一つです。
また、HomebrewはMacでプログラムをインストールしたりするシステムです(雑

②psqlを用いて接続にトライ
$ psql -h (会社によって違う).redshift.amazonaws.com -d (データベース名) -U (接続ユーザー名) -p (ポート名)

<結果>
psql: error: could not connect to server: could not connect to server: Operation timed out
Is the server running on host “(会社によって違う).redshift.amazonaws.com” (接続先IPアドレス) and accepting
TCP/IP connections on port (接続先ポート)?
<解説>
psqlのオプションは以下の通りです。
-h (ホスト名):実行するサーバーのホスト名を指定。
-d (データベース名):接続するデータベースの名前を指定。
-U (接続ユーザー名):指定したユーザー名でデータベースへ接続。
-p (ポート名):サーバーが接続監視を行うポート名を指定。通常4桁。

③telnetでトライ
$ telnet (ホスト名) (ポート名)

<結果>
Trying (接続先IPアドレス)…
telnet: connect to address (接続先IPアドレス): Operation timed out
telnet: Unable to connect to remote host
<解説>
ホストに接続できないとのことなので、どうやら私が以前ホストを書き換えていた可能性が浮上した(全く記憶はないが
応答したIPアドレスがパブリックのものだったので、ドメインの解決に問題があると分かった。

④アドレスに直で繋いでみる
$ psql -h (②とは異なるホスト名) -d (データベース名) -U (接続ユーザー名) -p (ポート名)
→パスワードの要求が出たら入力。

<結果>
Password for user (接続ユーザー名):
psql (サーバー情報とか)
SSL connection (protocol、cipher、bitsの情報とかが色々)
Type “help” for help.
(データベース名)=> psql -h (会社によって違う).redshift.amazonaws.com -d (データベース名) -U (接続ユーザー名) -p (ポート名)
(データベース名)->
<解説>
②と異なり、大元のホスト名を指定して直で接続した。

⑤Redshiftのドメインがどこで解決されているかを調査
$ nslookup -h (会社によって違う).redshift.amazonaws.com

<結果>
Server: (サーバー名)
Address: (IPアドレス情報)
Non-authoritative answer:
(会社によって違う).redshift.amazonaws.com canonical name = (会社によって違う).compute.amazonaws.com.
Name: (会社によって違う).compute.amazonaws.com
<解説>
nslookupを用いてDNS情報を取得した。
→DNSとは「ドメイン(人間がわかりやすい住所)」と「IPアドレス(コンピュータで管理する住所)」の対応表のこと。
調べた結果、Redshiftのドメインがローカルで解決されていることを知った。
→IPアドレスがローカルのものだった。
ここで、hostsを書き換えている説が濃厚となった。

⑥hostsを確認
MacのFinderの検索窓で「hosts」と検索すれば、「hosts」というファイルが見つかるのでそれを開く

<結果>
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
(hosts名) (会社によって違う).compute.amazonaws.com
~
~
~
<解説>
hostsが正しくないことが分かった。
本来であれば最後の行が(hosts名)だけになるはずだからである。

⑦hostsを書き換えてDNSのキャッシュをクリアしpsqlに再接続
hostsの編集:ターミナル版とテキストエディット版
DNSのキャッシュをクリア:$ sudo killall -HUP mDNSResponder
psqlに再接続:$ psql -h (会社によって違う).redshift.amazonaws.com -d (データベース名) -U (接続ユーザー名) -p (ポート名)
(psqlは②と同じ)

<結果>
Last login: (日付と時間)
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
$ sudo killall -HUP mDNSResponder
Password:
$ psql h (会社によって違う).redshift.amazonaws.com -d (データベース名) -U (接続ユーザー名) -p (ポート名)
Password for user exture:
psql (12.2, server 8.0.2)
SSL connection (protocol、cipher、bitsの情報とかが色々)
Type “help” for help.
(データベース名)=>
<解説>
成功。

まとめ

今回の原因は「Redshiftの名前解決をVPNで行っていた」ということでした。
私と同じミスをした方の参考になれば幸いです。
最後まで目を通していただきありがとうございました。

関連記事

  1. Tableau

    Tableauのリレーションシップを理解して過剰結合を防ぐ

    リレーションシップとはTableau Desktop 2020.2…

  2. Tableau

    Tableauで強調円グラフを作ってみた〜特殊チャート①〜

    はじめにこんにちは!インターン生の與那覇(ヨナハ)です今回は、…

  3. Tableau

    Tableau Tips〜Onlineで利用可能なフォント〜

    はじめにTableau Server/Onlineで利用可能なフォ…

  4. Tableau

    【2019年版】Tableau Desktop Certified Associate 受験レポート…

    はじめにこんにちは!インターンの與那覇(ヨナハ)です今回は私が…

  5. Tableau

    Tableau Desktop 2020.1の新機能を全て解説してみた。

    はじめに昨日(2020/2/25)、Tableau Desktop…

  6. Tableau

    Tableau-折れ線グラフ

    こんにちは!インターン生の市川です。今回は、私の主観なのですが、で…

PAGE TOP