※当サイトの記事には、広告・プロモーションが含まれます。

VS Codeの拡張機能MySQL Shell for VS Codeで踏み台サーバー経由でMySQLに接続する

www.itmedia.co.jp

 米Google8月13日に予告したGeminiアプリの「一時チャット」機能が、30日ごろからモバイルとデスクトップで広く利用可能になっている。対象は個人ユーザーだ。

履歴を残さず会話できるGeminiアプリの「一時チャット」、利用可能に - ITmedia NEWS

 一時チャットでやり取りしたデータは、モデルのトレーニングやユーザー体験のパーソナライズ(Geminiアプリ アクティビティ)に使われず、アクティビティ欄の履歴にも残らない。ただし、Geminiでの応答やセキュリティ維持のため、データは72時間保存される。

履歴を残さず会話できるGeminiアプリの「一時チャット」、利用可能に - ITmedia NEWS

⇧ う~む...、悪用される未来しか見えませんな...

セキュリティ云々を謳うのであれば、履歴の保持に制限を設けるべきではない気がしますしな...

ちなみに、

gigazine.net

メッセージアプリのTelegramはロシア政府と微妙な関係にあり、過去には2年間にわたって使用が禁止されており、2024年にもウクライナによるスパイ行為に利用されることを懸念して、軍関係者がTelegramを利用することを禁止しています。

Telegramを支える技術インフラはロシアの諜報機関と協力関係にある企業を経営するロシア人によって管理されている - GIGAZINE

しかし、Telegramを支える技術インフラストラクチャーは、ロシアの諜報機関と協力関係にある企業を経営するロシア人によって管理されていることが明らかになっています。

Telegramを支える技術インフラはロシアの諜報機関と協力関係にある企業を経営するロシア人によって管理されている - GIGAZINE

セキュリティ専門家のミハウ・リシエク・ウォジニャク氏によると、この「暗号化された各メッセージの先頭にある暗号化されていない要素」は「auth_key_id」と呼ばれており、これにより特定のユーザーデバイスを識別することが可能になる模様。

Telegramを支える技術インフラはロシアの諜報機関と協力関係にある企業を経営するロシア人によって管理されている - GIGAZINE

ウォジニャク氏は「あなたのデバイスの『auth_key_id』がわかっていれば、データを処理するネットワークを傍受できます。つまり、Telegramサーバーと通信しているのがあなたの特定のデバイスだと分かるわけです。

Telegramを支える技術インフラはロシアの諜報機関と協力関係にある企業を経営するロシア人によって管理されている - GIGAZINE

さらにネットワークパケットを調べることで、特定の時間におけるあなたのIPアドレスも取得できるため、おおよその地理的位置も分かります」と説明しました。

Telegramを支える技術インフラはロシアの諜報機関と協力関係にある企業を経営するロシア人によって管理されている - GIGAZINE

つまり、Telegramのネットワークトラフィックを制御する人物は、メッセージ自体を読むことができなくても、ユーザー自身を追跡することはできるというわけです。

Telegramを支える技術インフラはロシアの諜報機関と協力関係にある企業を経営するロシア人によって管理されている - GIGAZINE

⇧ 犯罪の温床になっているという「Telegram」の問題があったのだが、実はユーザーを追跡できる仕組みになっているらしいという話で、「軍事利用」されている疑いもあるそうな...

まぁ、「企業倫理」なんてものは「建前」であって、あって無いようなものということですかね...

VS Code拡張機能MySQL Shell for VS Codeで踏み台サーバー経由でMySQLに接続する

前回、

ts0818.hatenablog.com

⇧ 上記の記事の時に、「MySQL」に対して、「名前解決(DNS:Domain Name System)」での接続ができる環境を構築しました。

で、まぁ、実際の「ソフトウェア開発」では、「GUI」で操作できる「MySQLクライアント」から「MySQL」に接続することが多いと思うのですが、

gihyo.jp

MySQL Shell for VS CodeではMySQLサーバーやOCI上のMySQL HeatWaveインスタンスへの接続の管理、MySQL HeatWaveの起動停止、またMySQL HeatWaveを利用するにあたって必要となる踏み台サーバー相当のコンピュートインスタンスやBastion(要塞)サービスの設定や管理が可能です。

第85回 【祝】連載8年目突入、MySQL Shell for VS Codeの機能紹介、Postgres Vision Tokyo 2022がまもなく開催 | gihyo.jp

⇧ 上記のサイト様によりますと、「VS CodeVisual Studio Code)」の「拡張機能」の「MySQL Shell for VS Code」というもので、「踏み台サーバー」経由の接続ができるらしい。

とりあえず、前回、構築しておいた環境(仮想マシン群)を起動しておきます。

そしたらば、「VS CodeVisual Studio Code)」を起動し、該当の「拡張機能」をインストール。

「Trust Publisher & install」を選択。おそらく、「拡張機能」の「MySQL Shell for VS Code」をインストールする初回のみ必要。

「はい」を選択。

「Reload VS Code Windows」を選択。

これで漸く「拡張機能」の「MySQL Shell for VS Code」が利用できるようなったようなので、「New Connection」で「MySQL」の「接続情報」を設定する。

「踏み台サーバー」経由で接続したいので、「Basic」タブの「Tunneling options」で「Connect using SSH Tunnel」にチェックすると、「SSH Tunnel」タブが増える。

SSH Tunnel」タブを選択し、「踏み台サーバー」に対する接続の設定を行うのだが、「パスワード認証」に対応していないっぽいので、「Vagrant」で「vagrant ssh」する際に参照していると思われる「C:\Users\[ユーザー名]\.vagrant.d\insecure_private_keys\vagrant.key.rsa」を「SSH Private Key File」に設定した。

2025年9月6日(土)追記:↓ ここから

何やら、

『The connection could not be opened: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.』

というエラーが出るようになって、「ChatGPT」に質問したところ、「SSL Mode」が「Disable」になっていたのが駄目らしい。

「Require」に変更したところ、接続されました。

前回は、「Disable」で接続できてたのだが、謎過ぎる...

一応、「MySQL」の公式のドキュメントで、「MySQL Shell for VS Code」についてのページがあるのだが、

dev.mysql.com

dev.mysql.com

dev.mysql.com

⇧ 特に「SSL Mode」を「Disable」にすることの影響についての説明は無い...

ネットの情報を漁っていたところ、

yoku0825.blogspot.com

要は、 caching_sha2_password だと初回の認証成功時にパスワードキャッシュをサーバーサイドに作るらしいんだけど、そこでMITM攻撃を食らうとマズいからこんな仕様になっているらしい。

日々の覚書: MySQL 8.0のcaching_sha2_password + 非SSL接続が転ける

⇧ 上記サイト様で事象が説明されていた。

なるほど、だとしても、「Vagrant」で「MySQL サーバー」作り直してるから「サーバーサイド」に「パスワードキャッシュ」は存在しない状態になる気がするのだが...

つまり、前回、「MySQL Shell for VS Code」の接続設定で「SSL Mode」が「Disable」で接続できてしまった理由が分からない...

VS CodeVisual Studio Code)」の「拡張機能」の「MySQL Shell for VS Code」のバグなんかなぁ...

いずれにしろ、公式のドキュメントで注釈を記載して欲しいですわな...

2025年9月6日(土)追記:↑ ここまで

「Basic」タブの方では、「MySQL」の「接続情報」を設定する。

で、「DATABASE CONNECTIONS」で、上記で作成した「MySQL接続情報」である「New Connection 1」の左端のプルダウンのアイコンを選択すると、「仮想マシンMySQLクライアント用)」に対するSSH接続の「パスワード」入力を求められるので、入力する。

Vagrant」を使っていてデフォルトのままならば、「vagrant」のはず。

2回入力する。

続いて、「MySQL」に対する「接続情報」にある「パスワード」を入力する。

自分と同じ環境で構築しているのであれば、前回、作成した環境で利用した「D:\work-soft\vagrant\mysql\vms\mysql-server\scripts\setup.sh」に記載の「MySQLユーザー」が「client_user」に設定した「パスワード」。

同じく2回入力。

 

接続できました。

それにしても、「UI」からの接続方法が分かり辛い...


毎度モヤモヤ感が半端ない…

今回はこのへんで。

 

おまけ

何やら、「VS CodeVisual Studio Code)」の「拡張機能」の「MySQL Shell for VS Code」の「認証」について、別の「UI」のパターンもあるので、メモとして残しておく。

で、「DATABASE CONNECTIONS」で、上記で作成した「MySQL接続情報」である「New Connection 1」を選択した状態で右クリックし、「Open New Database Connection」を選択。

仮想マシンMySQLクライアント用)」に対するSSH接続のパスワードを入力。「Vagrant」を使っていてデフォルトのままならば、「vagrant」のはず。

MySQL」に対する「接続情報」にある「パスワード」を入力する。

自分と同じ環境であれば、前回、作成した環境で利用した「D:\work-soft\vagrant\mysql\vms\mysql-server\scripts\setup.sh」に記載の「MySQLユーザー」が「client_user」に設定した「パスワード」。

「認証」の際の「UI」が統一されないのは、「VS CodeVisual Studio Code)」側の問題なんですかね?

利用者側からすると、混乱の元になるだけなので、挙動を統一して欲しいのだが...