VisualBasic2008 で外部のサーバーにあるMySQLに接続できません。
Cnn.Open()の所で、こんなエラーがでます。
Unable to connect to any of the specified MySQL hosts.
MysqlTest.vshost.exe Error: 0 : Unable to connect to any of the specified MySQL hosts.
'MySql.Data.MySqlClient.MySqlException' の初回例外が MySql.Data.dll で発生しました。
System.Transactions Critical: 0 : <TraceRecord xmlns="http://schemas.microsoft.com/2004~
~~
PC内にあるMySQLには接続できるんですが。
外部のサーバーのMySQLには接続できないのでしょうか。
-------コード------------------
Dim sqlStr As String = "SELECT * FROM allitem"
Dim CnnStr As String = "server=xxxxxxxxxxx.com:3306;database=PGTESTDB;User Id=pgtestuser;Password=xxxxxx"
Dim Cnn As MySqlConnection = New MySqlConnection
Cnn = New MySqlConnection(CnnStr)
Cnn.Open()
貴殿の書かれてたことがやっとどうにか理解でき、やってみたところ下記のエラーが出ました。
Authentication with old password no longer supported. use 4.1 style passwords
検索してみたら、ここに詳しくのってました、ターゲットのMySQLはver5.1.73です。
http://d.hatena.ne.jp/hilapon/20131204/1386151837
説明にある通り、下記実行してみたら、接続できるようになりました。
set session old_passwords = 0;
set password for 'xxxxx'@'%' = password('yyyyyyyy');
色々な勉強になり、知識も増えました。
本当にありがとうございました。
感謝感謝!!!
他の皆様もありがとうございました。感謝しております。
質問者
補足
失礼しました、WinXPコマンドプロンプトから下記で接続でき、SHOW DATABASES;で中を確認できます。
またWinXP「管理ツール」の「データソース(ODBC)」からも接続に成功します。
サーバー屋さんにも確認し、「何ら規制はかけてないので、VB2008側の問題だ」と言われてます。
VB2008についてはほとんど初心者程度です。
何とかよろしくお願いいたします。
コマンドプロンプトで-----------------
mysql -h xxxxx.com -u yyyyyy -p
Enter password: zzzzz
ついつい慣れているC#で書いてしまいましたので,VBに直しておきます。
PropertyGridとButtonを配置して,Form1.vbに以下のコードを記述します。
# ついでに,Close()をClone()と間違えていた部分を修正しています。
Private _mscsb As New MySql.Data.MySqlClient.MySqlConnectionStringBuilder
Protected Overrides Sub OnLoad(e As EventArgs)
PropertyGrid1.SelectedObject = _mscsb
MyBase.OnLoad(e)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim conn As MySql.Data.MySqlClient.MySqlConnection = Nothing
Try
conn = New MySql.Data.MySqlClient.MySqlConnection(_mscsb.ConnectionString)
conn.Open()
If conn.Ping() Then
MessageBox.Show(Me, "Ping 成功")
Else
MessageBox.Show(Me, "Ping 失敗")
End If
Catch ex As Exception
MessageBox.Show(Me, ex.Message, ex.GetType().Name)
Finally
If conn IsNot Nothing Then
Try
conn.Close()
Catch
End Try
Try
Dim disposable As IDisposable = conn
disposable.Dispose()
Catch
End Try
conn = Nothing
End If
End Try
End Sub
ただ,根本的な部分で,CLIで繋げることができるか,というのは重要です。
CLIでなくても,例えばMySql Workbenchで繋げることができていなければ,もっと根本の問題になります。
下記どれでも結果は変わらず、つながりません。
困りました。
Dim CnnStr As String = "Server=xxxxxxx.com;database=PGTESTDB;User Id=pgtestuser;Password=xxxxx"
Dim CnnStr As String = "Server=xxxxxxx.com;Port=3306;database=PGTESTDB;User Id=pgtestuser;Password=xxxxx"
お礼
貴殿の書かれてたことがやっとどうにか理解でき、やってみたところ下記のエラーが出ました。 Authentication with old password no longer supported. use 4.1 style passwords 検索してみたら、ここに詳しくのってました、ターゲットのMySQLはver5.1.73です。 http://d.hatena.ne.jp/hilapon/20131204/1386151837 説明にある通り、下記実行してみたら、接続できるようになりました。 set session old_passwords = 0; set password for 'xxxxx'@'%' = password('yyyyyyyy'); 色々な勉強になり、知識も増えました。 本当にありがとうございました。 感謝感謝!!! 他の皆様もありがとうございました。感謝しております。
補足
失礼しました、WinXPコマンドプロンプトから下記で接続でき、SHOW DATABASES;で中を確認できます。 またWinXP「管理ツール」の「データソース(ODBC)」からも接続に成功します。 サーバー屋さんにも確認し、「何ら規制はかけてないので、VB2008側の問題だ」と言われてます。 VB2008についてはほとんど初心者程度です。 何とかよろしくお願いいたします。 コマンドプロンプトで----------------- mysql -h xxxxx.com -u yyyyyy -p Enter password: zzzzz