|
分類:[データベース全般]
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操作 --------------------------------------------------
長文になりましたが、最後まで目を通していただきありがとうございます。 宜しくお願い致します。
|