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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MySQL

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

2回答

9577閲覧

Visual Studio上でMySQL接続したい/bind-addressの設定

STIW8

総合スコア6

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MySQL

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2017/12/11 14:50

編集2022/01/12 10:55

(はじめて利用します。不慣れですがよろしくお願い致します。)

###前提・実現したいこと
visual studio for macでmysqlの接続を試みていますが上手くいきません。
Nugetで追加済:
MySql.Data
MySql.Web
EntityFramework

###発生している問題・エラーメッセージ
conn.Open()でエラーがでます。

using System; using MySql.Data.MySqlClient; namespace mysqlsample { class MainClass { public static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.ReadLine(); string connstr = "Database=test_20171211;Data Source=localhost;User Id=dbuser;Password=******"; MySqlConnection conn = new MySqlConnection(connstr); conn.Open(); Console.WriteLine("接続しました!"); Console.ReadLine(); } } }

###試したこと
接続文字列の書き方がサイトによってまばらだったので調べたものはすべて試しました。
NugetでMySql.Dataを追加すれば十分かと思ってMySql Connector/Netは入れてません。

###補足情報(言語/FW/ツール等のバージョンなど)
MySql.Data
MySql.Web
EntityFramework
3つとも参照した状態でのエラー:
The type initializer for 'MySql.Data.MySqlClient.Replication.ReplicationManager' threw an exception.

MySql.Dataのみ参照した状態でのエラー:
Unable to connect to any of the specified MySQL hosts.

追記 17/12/14
mysql設定の問題のようです。
すべてのホストから接続できるdbuserを作りました。

イメージ説明

以下のコマンド実行結果を見るにbind-addressの設定がされていないことが原因かと思って、my.cnfを書き換えてbind-addressを127.0.0.1にしたり、ネットにつないでいるIPにしたりしましたが全敗でした。
(visual studioのデバッグでもMySQL Workbenchでも両方接続できません)
mysql -h [ip or address] -u dbuser -p
イメージ説明

追記 17/12/16
mysqlのバージョン 5.6.35 MySQL Community Server (GPL)
mysql workbench のバージョン 6.3.10

再度確認しました。
イメージ説明

パスワードは'dbuser'と打ってます。
イメージ説明

やはり接続できません
イメージ説明

mysql -h [ip or address] -u dbuser -p
イメージ説明

もうmysqlあきらめたほうがいいのでしょうか。
visual studio で書いたプログラム上でデータベースにアクセスできるなら
なんでもいいです。
Macで導入の簡単なデータベースてなんでしょうか。。

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

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

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

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

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

cauliflowerjoe

2017/12/12 02:18

エラーメッセージの内容を記載していただければ、解決への糸口が見えるかもしれません。
STIW8

2017/12/13 22:25

エラーメッセージ追加しました。ご指摘ありがとうございます。
guest

回答2

0

MySQL Workbenchのスクリーンショットですが

127.0**,**0.1

カンマが混入していますが、これ本題とは関係ないですよね・・?

投稿2017/12/19 02:04

cauliflowerjoe

総合スコア102

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

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

0

VisualStudio for Mac を使って、.NET Coreアプリケーションのプロジェクトを作成し、プログラミング言語はC#を選択した場合の話でしょうか?

connstrをもう一度確認してください。
本当に正しい接続情報が入っているか確認して下さい。

こちらの環境でDB名接続先IPアドレスユーザー名パスワードだけを変更して実行しましたが、正常に動作し「接続しました!」と出力されました。

また、C#タグを追加する事をおすすめします。

投稿2017/12/13 23:46

aglkjggg

総合スコア769

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

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

STIW8

2017/12/14 03:06

テストしていただきありがとうございます。 接続文字列でサーバー名localhostだけではなくIPアドレスも必要ということでしょうか? よろしければ試していただいた時の接続文字列を教えていただきたいです。 >VisualStudio for Mac を使って、.NET Coreアプリケーションのプロジェクトを作成し、プログラミング言語はC#を選択した場合の話でしょうか? →ご認識のとおりです。C#タグ追加しました。
aglkjggg

2017/12/14 03:19 編集

>接続文字列でサーバー名localhostだけではなくIPアドレスも必要ということでしょうか? connstrに接続先を2つ指定する事はできません。 「localhostをIPv4アドレスの形式に変換してから入力する必要があるか」という意味でしょうか? その意味でしたら、IPv4アドレスの形式にする必要はありません。 >よろしければ試していただいた時の接続文字列を教えていただきたいです。 回答した通り、値のみを変更してテストしましたが動作しました。 string connstr = "Database=*****;Data Source=localhost;User Id=*****;Password=******"; また、MySQLサーバは問題なく動作しているのでしょうか? MySQL WorkbenchやHeidiSQL等のアプリケーションから接続できますか? まずは、問題がC#側の接続先文字列(connstr)にあるのか、MySQL側にあるのかを切り分けたほうがいいです。
STIW8

2017/12/14 11:50

MySQL Workbenchダウンロードしてみましたが接続できませんでした。ターミナルで直接MySQLに接続はできるので、外部アドレスbind adressが設定されていないことが原因らしいことはわかりました。my.cnfというファイル内のbind adressの設定を書き換えればいいようなのですが、ターミナルでどうコマンドを打ったらいいのかまでたどり着きません泣
aglkjggg

2017/12/16 10:20 編集

> my.cnfを書き換えてbind-addressを127.0.0.1にしたり、ネットにつないでいるIPにしたりしましたが全敗でした。 bind-addressは外部から接続するときのみ変更する必要があります。 よって、今回のように全てがローカルなので127.0.0.1のままでOKです。 また、家庭向けの一般的なネットワークを利用している場合グローバルIPアドレスを指定するのは間違いです。 ルータの設定次第ですが多くの場合は192.168.x.xという指定になります。 > すべてのホストから接続できるdbuserを作りました。 先程の回答同様、ローカルなのでdbuser@%を作成する必要はありません。 私のmacOS上で一度MySQLをアンインストールし、再度MySQLの環境を一から構築しなおしました。 その時のメモです。こちらを参考にして下さい。 あくまで接続テスト用の最低限の設定です。 ローカル開発環境用途以外での利用時はセキュリティ面を再考して下さい。 https://gist.github.com/anonymous/27bb0ba0fc848f3116d8bfdfb3f7e6fa
STIW8

2017/12/18 15:01

aglkjgggさん アドバイスだけでなくたくさんても動かしていただいてありがとうございます。 大変申し訳無いのですがアンインストール、再インストール、一連やってみましたがやはり接続ができません。。なにがどう悪いのかがわかりません。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問