質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

4222閲覧

VB.NETからMySQL接続時に初回だけ認証エラーが発生する

sr_yy

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2021/05/18 08:59

前提・実現したいこと

今回初めて質問させていただきます。よろしくお願いします。

VB.NETからMySQLへ接続し、Selectした結果をGridViewへ表示するといったプログラムを作成しています。(Textbox1にselect文を記述)

vb.netからはMySql.Data.MySqlClientを利用して、下記のコードで接続しています。
そこで、初回接続時に、10秒程度経ってからエラーが発生します。しかし、そのあとすぐにもう一度トライすると、一瞬で成功します。このあと、15分程度たってからもう一度接続するとまたエラー発生、その後は一瞬でつながるを繰り返しています。

なかなか調べても合致するものが見つかりませんでしたので、教えていただきたく思います。

エラーメッセージ

ソースコード内、Catchでのエラー内容を記述します。
※一部、[]で変更しています。

System.Security.Authentication.AuthenticationException: Authentication to host '[IPアドレス]' faied. 場所 MySql.Data.Common.Ssl.StartSSL(Stream& baseStream, Encoding encoding, String connectionString) 場所 MySql.Data.MySqlClient.NativeDriver.Open() 場所 MySql.Data.MySqlClient.Driver.Open() 場所 MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings) 場所 MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection() 場所 MySql.Data.MySqlClient.MySqlPool.GetPooledConnection() 場所 MySql.Data.MySqlClient.MySqlPool.TryToGetDriver() 場所 MySql.Data.MySqlClient.MySqlPool.GetConnection() 場所 MySql.Data.MySqlClient.MySqlConnection.Open() 場所 [class].Button1_Click(Object sender, EventArgs e) 場所 [プロジェクト保存先]

該当のソースコード

※一部、[]で変更しています。

vb

1Imports MySql.Data.MySqlClient 2Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 3 4 'DB接続文字列の作成 5 Dim Builder = New MySqlConnectionStringBuilder() 6 7 'DB接続情報 8 Builder.Server = "[IPアドレス]" 9 Builder.Port = 3306 10 Builder.UserID = "[ID]" 11 Builder.Password = "[Passsword]" 12 Builder.Database = "[DB名]" 13 Builder.ConnectionTimeout = "2" 14 15 Dim Constr As String = Builder.ToString() 16 17 'DB接続 18 Dim Con As New MySqlConnection 19 Con.ConnectionString = Constr 20     21 'select文 22 Dim strSQL As String = TextBox1.Text 23 24 Try 25 Con.Open() 26 27 'DBから取得 28 Dim Adapter = New MySqlDataAdapter(strSQL, Con) 29 Dim dt As DataTable = New DataTable 30 Adapter.Fill(dt) 31 GridView.DataSource = dt 32 GridView.DataBind() 33 Label1.Text = "" 34 Catch ex As Exception 35 Label1.Text = ex.ToString 36 Finally 37 Con.Close() 38 End Try 39 40 End Sub

試したこと

一番よく出てきたskip-name-resolveは試しましたが、変わりませんでした。

今回初めてDB接続に携わったため、ほかに試すこともわかりませんでした。
試すといいこともありましたら教えてください。

補足情報(FW/ツールのバージョンなど)

vb.net+asp.netはwindows server 2012にアップロードして使用しています。
MySQLはWindows10のPCへインストールして使用しています。バージョンは8.0.23です。

初心者のため説明が足らない部分も多いと思いますが、どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2021/05/18 09:52

ConnectionTimeout の値を大きくしても変わりませんか?
sr_yy

2021/05/18 10:09

変わりませんでした。これは、Timeoutの時間を早くしてわざと1回失敗させてから接続するといった方法で現在動かしているため、この短さとなっています。
sazi

2021/05/18 10:17

SSL認証のようですが、鍵はどのような扱いですか?(クライアント?サーバー?)
sr_yy

2021/05/18 10:20

ssl認証というのがよくわからず苦戦しています。ローカルで組んでいるシステムですので、特に認証などは気にしていなく、使用する必要もないと思っています。この認証に問題があるなら教えていただきたいです。ちなみに、sslmode="None"にしても変わりませんでした。
退会済みユーザー

退会済みユーザー

2021/05/18 12:52

> vb.net+asp.netはwindows server 2012にアップロードして使用しています。 > MySQLはWindows10のPCへインストールして使用しています。バージョンは8.0.23です。 そこに問題の原因があるような気がします。 Windows10 の PC に開発環境はないのですか? あれば、問題の切り分けのため、すべて Windows 10 PC ローカルでやってみたらどうですか?
sr_yy

2021/05/19 01:44

会社環境のため実施が難しいため、MySQLを外部サーバーとして接続していることが気になり、調べてみるとSSL接続に関する記述がありました。現在sslを無効化してテストしています。
sazi

2021/05/19 02:15 編集

会社環境なら先ずは社内の人に確認する方が確実だと思いますけど。
sr_yy

2021/05/19 02:17

確認したのですが、やったことがある人がおらず、ここに頼った次第です。。。
guest

回答1

0

自己解決

MySQLを外部サーバーとして接続していることが気になり、調べてみるとSSL接続に関する記述がありました。そこで、my.iniに

skip_ssl
ssl = OFF

と記述すると、ssl認証が行われなくなり、正常に接続できるようになりました。
今回は、インターネット公開せずローカルのシステムなので、これでいいかなと考えています。
解決のヒントをいただきありがとうございました。

投稿2021/05/19 02:24

sr_yy

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問