C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: MySQLへの接続が拒否されます。


(過去ログ 178 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■101918 / inTopicNo.1)  MySQLへの接続が拒否されます。
  
□投稿者/ kitakitune (13回)-(2023/05/13(Sat) 14:45:09)

分類:[データベース全般] 

VB.NETでフォームアプリを作成し、外部Ubuntuサーバーに接続して
サーバー上のMySQLに接続しています。

(クライアント : OS/windows10
サーバー: OS/ubuntu 20.04 LTS MySQL 8.0)

MySQLへの接続を以下のように公開鍵認証SSH接続を用いて試みると
コネクションのオープン時拒否されます。
エラーメッセージは35行目で
"Unable to connect to any of the specified MySQL hosts"
と示されています。

(TCP/IPでのパスワード認証による接続を 公開鍵認証 SSH接続 に変更しようとしています。)

公開鍵認証でサーバーへのログインまでは正常に実行できているようなのですが、
解決方法・間違いなど御指摘頂けないでしょうか?

尚、
接続文字列中のMySQLユーザーは
TCP/IPでの通信及びMySQL Workbenchを利用したクライアント側からの操作では
正常に接続できています。
またクライアント側で/etc/mysql/mysql.conf.d/mysqld/cnfのバインドアドレスを
bind-address = 0.0.0.0
と編集しています。

SSH接続でのデータベース接続
--------------------------------------------------
01 Imports Renci.SshNet
02 Imports MySql.Data.MySqlClient
-------------------------------------------------
03 Public Class Main_Form
04  'SSH接続準備
05  Private ssh_cninf As ConnectionInfo
06  Private ssh_client As SshClient

07  Private ssh_host As String = "サーバーのIPアドレス"
08  Private ssh_user As String = "sshクライアントのユーザーID"
09  Private ssh_key As PrivateKeyFile = New PrivateKeyFile("クライアント側の秘密鍵のパス", "秘密鍵のパスフレーズ")

10 Sub New()

11  InitializeComponent()

12  'SSH接続
13  try
14    '設定
15    Dim ssh_mthd As AuthenticationMethod = New PrivateKeyAuthenticationMethod(ssh_user, ssh_key)
16    ssh_cninf = New ConnectionInfo(ssh_host, ssh_user, ssh_mthd)
17    '接続
18    ssh_client = New SshClient(ssh_cninf)
19    ssh_client.Connect()
20  Catch ex As Exception
21    MessageBox.Show("SSH接続NG", "SSH接続", MessageBoxButtons.OK)
22  End Try

23  'DB接続
24  '接続文字列
25  Dim cnstr As String = "server=127.0.0.1;" &
26             "port=3306;" &
27             "database=db01;" &
28             "userid=user01;" &
29             "password=pass_for_user01"
30  Try
31    Dim sqlcn As New MySqlConnection(cnstr)
32    sqlcn.Open()
33    MessageBox.Show("db接続OK", "DB_ssh接続", MessageBoxButtons.OK)
34  Catch ex As Exception
35    MessageBox.Show("db接続NG " & ex.Message, "DB_ssh接続", MessageBoxButtons.OK)
36  End Try
--------------------------------------------------

なお,以下のように接続方法(TCP/IP)ではMySQLとの接続が確立され、
以降適切記述することでSQLを発行できています。

TCP/IP通信でのデータベース接続 (コネクションの確立まで)
--------------------------------------------------
01 Imports MySql.Data.MySqlClient
-------------------------------------------------
02 Public Class Main_Form
・・・・・・・
   ・・・・・・・・
03 Sub New()

04  InitializeComponent()

05  'DB接続
06  '接続文字列
07  Dim cnstr As String = "server=’サーバーのIPアドレス’;" &
08             "port=3306;" &
09             "database=db01;" &
10             "userid=user01;" &
11             "password=pass_for_user01"
12  Try
13    Dim sqlcn As New MySqlConnection(cnstr)
14    sqlcn.Open()
15    MessageBox.Show("db接続OK", "DB接続", MessageBoxButtons.OK)
16  Catch ex As Exception
17    MessageBox.Show("db接続NG " & ex.Message, "DB接続", MessageBoxButtons.OK)
18  End Try

   以下DB操作
--------------------------------------------------

長文になりましたが、最後まで目を通していただきありがとうございます。
宜しくお願い致します。


引用返信 編集キー/
■101919 / inTopicNo.2)  Re[1]: MySQLへの接続が拒否されます。
□投稿者/ 伝説のカレー (103回)-(2023/05/13(Sat) 15:15:42)
No101918 (kitakitune さん) に返信

SSHクライアントでサーバに接続して
プログラムは127.0.0.1にアクセスしてMySQLに接続したい感じですよね

SSHクライアントでポートフォワーディングを行って
SSHクライアントのポートフォワーディングで127.0.0.1をリッスンする感じでいんじゃないですかね

YuOさんが書いてくださってたはず

http://bbs.wankuma.com/index.cgi?mode=al2&namber=101835

> // ポートフォワードの設定。ローカルポートは自動的に設定。
> using var fpl = new ForwardedPortLocal("127.0.0.1", MySqlHost, MySqlPort);
> ssh.AddForwardedPort(fpl);
> fpl.Start();
> if (!fpl.IsStarted)
> {
> Console.WriteLine("ポートフォワード失敗");
> return;
> }

こちらでいんじゃないですかね
引用返信 編集キー/
■101920 / inTopicNo.3)  Re[2]: MySQLへの接続が拒否されます。
□投稿者/ kitakitune (14回)-(2023/05/13(Sat) 16:10:37)
No101919 (伝説のカレー さん) に返信
ポートフォワーディングが全然わからないので、
今一度、学習します。

以前の投稿で
親切に御返信頂いていたにもかかわらず、
ほったらかしにしておいたことを反省します。

今一度、自己解決できるよう頑張ってみます。

御丁寧なご回答ありがとうございました。
引用返信 編集キー/
■101921 / inTopicNo.4)  Re[3]: MySQLへの接続が拒否されます。
□投稿者/ kitakitune (15回)-(2023/05/13(Sat) 16:13:11)
No101920 (kitakitune さん) に返信
> ■No101919 (伝説のカレー さん) に返信
> ポートフォワーディングが全然わからないので、
> 今一度、学習します。
>
> 以前の投稿で
> 親切に御返信頂いていたにもかかわらず、
> ほったらかしにしておいたことを反省します。
>
> 今一度、自己解決できるよう頑張ってみます。
>
> 御丁寧なご回答ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -