データーベースエクスプローラーにMySQLが表示されない。

タグの編集
投稿者 ゴドー  (学生) 投稿日時 2010/5/29 11:52:51
現在VB2010でデータベースとVBの勉強をしております。
Visual Basic 中学校 でのVBからAccessへの操作(接続)方法を見て、実際にAccessへの操作はできました。


こんどはMySQLへの接続をしようとおもったらVBから接続できません。
いろいろと検索かけてできる限りのことは行ったのですが、うまくいかないのです。


URLのページの写真のように【データソースの変更】のウインドウに
【MySQLDatabase】が表示されません。
http://www.atmarkit.co.jp/fdotnet/dotnettips/789adomysql/adomysql.html

現在
MySQL Server 5.1をインストール済み。
MySQL Connector/ODBC5.1をインストール済み。
MySQL Connector Net 6.2.3をインストール済み。



そしてFC2のサーバーを借りているのですが、サーバー内にphpMyadmin
というものを使用してデータベースを作成できる環境があるのですが、
最終的にVBからこのサーバーへデータを送受信したいのです。

ご教授よろしくお願いします。
投稿者 るきお  (社会人) 投稿日時 2010/5/29 15:24:42
こんにちは。

MySQLは使ったことがありませんが一般論で書きます。

質問1.
>うまくいかないのです。
もうちょっとくわしく教えてください。
なにがうまくいかないのですか?接続ボタンがクリックできない。データベースエクスプローラが表示されないなど具体的に何ができないかわからないと回答も具体的にできないです。
特に何かエラーメッセージが表示されている場合にはそのメッセージを教えてください。

質問2.
ゴドーさんの環境を確認したいのですが、
1.VB2010がインストールされているパソコンはゴドーさんの自宅(や学校などファイアーウォールの内側にある)環境。
2.MySQLがインストールされている場所はFC2が管理するインターネットを経由したどこか遠くにある環境。

という認識でよいでしょうか?
→この構成の場合VB2010とMySQLの通信がファイアーウォールに阻まれて失敗します。

質問3.
データベースエクスプローラー以外の方法ではそのMySQLに接続することは出来ていますか?
>サーバー内にphpMyadminというものを使用してデータベースを作成できる
とあるので、少なくともphpMyadminは接続できているようですが、このほかに何かのツールやゴドーさん作成のプログラムなどから接続できていますか?
できているとすればそれはどのような方法でしょうか?
→ファイアーウォールの内側からアクセスできている方法があるか知りたいです。
投稿者 ゴドー  (社会人) 投稿日時 2010/5/29 15:50:40
ご返答ありがとうございます。

1.への返答
データベースエクスプローラーで接続を追加しようとし、データソースの変更をクリックしても
【MySQLDatabase】が一覧に表示されません。
ほかの【Access】や【SQLServer】を表示されます。
そのため、接続以前の問題になっています。

2.への返答
自宅のファイアーウォールの内側にある環境です。
MySQLはこのパソコンにもはいっていますが、FC2のサーバー側にもphpMyadminというソフト?
でデータベースがつくれるのでサーバー側にもMySQLが使える状態だと認識しております。

3.への返答
手元のパソコンからはコマンドプロンプトでパソコン内のMySQLにはアクセスできます。
VB側からは1のようにデーターベースエクスプローラーに表示じたいされないので接続できません。

また、
FC2にあるphpMyadminへはVBからではなく、FC2のサイトからログインし、そのソフトへまた
ログインしてデータベースをみているような感じです。


VB側から操作したいのですがどうしたらよいのでしょうか?
データベースエクスプローラーに表示されないと接続もできません。
投稿者 ゴドー  (社会人) 投稿日時 2010/5/29 16:00:18
追記です。

このサイトの手順11の画面の【MySQL Database」】がでないんです・・・。

手順13のこの画面でFC2にあるphpMyadmin(MySQL)のデーターベースの表示がしたいのです。



よろしくお願いします。

投稿者 るきお  (社会人) 投稿日時 2010/5/29 16:16:23
ということは、
http://www.atmarkit.co.jp/fdotnet/dotnettips/789adomysql/adomysql.html
このサイトで言うところの
>[データ ソースの変更]ダイアログの[データソース]欄から「MySQL Database」を選択して[OK]ボタンをクリックする。
をしたいけれども、一覧にMySQL Databaseが表示されていないのでできない
という状態ですね?

最初に書いたように私はやったことないのでわかりませんが、記事には
>Connector/Net 5.1でVisual Studio 2005に対応しており、Connector/Net 5.2でVisual Studio 2008(以降、VS 2008)にも対応している。
と書いてあります。
ゴドーさんがインストールされているバージョンはVB2010(VS2010)に対応しているのでしょうか?
また、対応しているとしてもExpress Editionもその対応に入っているでしょうか?

対応しているのに改善されない場合は、VB側の問題ではなく、Connector/Netの問題ということになりますし私にはお手上げです。MySQLやConnector/Netについて調べるしかないと思います。

>VB側から操作したいのですがどうしたらよいのでしょうか?
>データベースエクスプローラーに表示されないと接続もできません。
そんなことはないですよ。
データベースエクスプローラに表示されていなくてもプログラムで接続できる場合もありますよ。

でも、今回の件ではFC2側のMySQLに接続するには前の返信にも書いたようにファイアーウォールの件もあるので簡単ではないと思いますが。最悪の場合ゴドーさんがなにをやってもFC2の運営者側が接続を拒否する設定にしていた場合接続は絶対に無理です。
FC2のMySQLは今回のようにリモートで(=ネットワーク的に遠く離れた場所から)接続できることになっているのですか?

こういった面倒な問題がいろいろあるのでphpMyadminというツールが利用できるようになっているのではないかと思います。

長くなったのでちょっとまとめます。
■現時点の問題
データベースエクスプローラのデータソースにMySQL Databaseが表示されない。

・Connector/NetがVB2010(VS2010)およびExpress Editionに対応していない?
    →対応したConnector/Netをインストールする。
・対応しているのに表示されないならConnector/Netを調べるしかない。


データベースエクスプローラーに表示されないとVBから接続できない?

・データベースエクスプローラに表示されいなくてもVBのプログラムで接続できる場合はあります。SQL ServerやOracleの場合はそちらの方が普通です。

■今後予想される問題
ゴドーさんの環境からFC2側のMySQLには接続できないではないか?

・FC2側の設定次第だけれども、ファイアーウォールの設定などで接続できる可能性はある。
・FC2側がリモート接続できるとしているならば、FC2が公開している資料にリモート接続の方法が書いてあるはず。
・FC2はリモート接続を許可しておらずphpMyAdmin経由での操作および、ユーザーがFC2のサーバーに配置したプログラムからの操作しか認めていない可能性もあります。
投稿者 ゴドー  (社会人) 投稿日時 2010/5/29 16:48:33
■はい。その通りです!!

■Express Editionだから対応していない。
確かにその可能性ありますね・・・。
対応している可能性もありそうなので、Connector/Neの違うバージョンをインストールしてみます。


■データベースエクスプローラに表示されていなくてもプログラムで接続できるのですか??
そのプログラムはどのような?
直接プログラムでかけばConnector/Neやデータベースエクスプローラーは関係なくデータの更新などができるのでしょうか?


■・FC2はリモート接続を許可しておらずphpMyAdmin経由での操作および、ユーザーがFC2のサーバーに配置したプログラムからの操作しか認めていない可能性もあります。 

そうゆうこともあるんですか?
そしたらなんのためのMySQLなんでしょう?
もし許可していない場合は他のサーバーと契約をしたほうがよいのでしょうか?
よいサーバーをご存知ですか?

なんだかいろいろ質問ばかりですいません。

投稿者 るきお  (社会人) 投稿日時 2010/5/29 17:15:38
>対応している可能性もありそうなので、Connector/Neの違うバージョンをインストールしてみます。
調べてからインストールするか、知っている人に聞くなどした方がいいと思いますよ。

>直接プログラムでかけばConnector/Neやデータベースエクスプローラーは関係なくデータの更新などができるのでしょうか?
できますよ。
でも最初に書いたように私は経験がないので具体的な方法は別に調べて方がいいと思います。
Googleで検索するとプログラム例のあるサイトもヒットします。
http://www.google.co.jp/search?hl=ja&safe=off&q=VB+MySQL+%E6%8E%A5%E7%B6%9A%E3%80%80-%226.0%22&aq=f&aqi=&aql=&oq=&gs_rfai=

ただし、繰り返しになりますが、MySQL側に到達できないファイアーウォールの問題とFC2の設定の問題が解決できないと何をやってもつながらないです。
たいて、データベースエクスプローラで接続できない場合は何か問題があるので、プログラムしてもダメなケースが多いです。
私が言いたかったのは「データベースエクスプローラで接続できなければ、プログラムで接続できないわけではない」ということです。

>もし許可していない場合は他のサーバーと契約をしたほうがよいのでしょうか?
FC2とゴドーさんがどのような目的でどのようなサービスを契約したかわからないことと、私はFC2が提供しているサービスの内容についてまったく知らないことをまずご理解ください。

一般論を話しています。
一般論ではデータベースへのリモート接続を許可するかしないかは管理者次第です。レンタルDB(というのかわかりませんが)の場合でも事情は同じです。リモート接続を許可するかしないかは重要なことなので明記してあるのではないかと思います。

リモート接続を許可しないレンタルDB(?)の使い道は、プログラムとセットで考えて、プログラムをDB側のサーバーにアップロードして接続することです。
こうすると、そのプログラムから見ればデータベースがローカルにあるので接続できます。
ほとんどの場合そのプログラムはphpやASP.NET, javaなどのプログラムで、ユーザーはそのプログラムにWebブラウザからURLを使ってアクセスし、そのプログラムが裏でデータベースに接続する形になります。
この掲示板もマイクロソフトのSQL Azureというレンタル的なデータベースを利用しており、プログラム自体もマイクロソフトのサーバーにアップロードしています。(プログラムは私が作っています。なお、SQL Azureの場合はリモート接続も可能です。)

ですので、ゴドーさんがこのサービスを利用し続けるか、他のサービスを探すかは
1.ゴドーさんは何をやりたいのか
2.ゴドーさんが契約しているFC2のサービスの内容は何か
の2点を考えて決める必要があり、ゴドーさんのやりたいことがFC2で実現できないのであれば別のサービスを探したほうがいいとは思いますが、現時点で私は1も2もわからない状況なのでなんとも言えません。

1がわからないので、たとえば、自分で作成したプログラムのデータ保存場所としてMySQLを利用したいということと仮定すると
アドバイスとしては、
①まず、データベースエクスプローラを使ってゴドーさんのローカルのMySQLに接続する方法を模索。
②それができたら、次に、FC2側のMySQLに接続する方法を模索。
③それができなければ、プログラム自体をFC2側にアップロードすることの可否を調べる。
④それが可であれば、プログラムを作成しアップロードする
という流れになるのかと思います。

難易度としてはプロのプログラマーでも経験1、2年レベルの人には厳しいかもしれないレベルかなと思います。

よかったら、1のゴドーさんがやりたいことを教えてください。
ひょっとするともっといい方法があるかもしれません。
投稿者 るきお  (社会人) 投稿日時 2010/5/29 17:22:01
知識のある方のために一応補足しておきます。

>リモート接続を許可しないレンタルDB(?)の使い道は、プログラムとセットで考えて、プログラムをDB側のサーバーにアップロードして接続することです。
>こうすると、そのプログラムから見ればデータベースがローカルにあるので接続できます。
厳密には「ローカルにあるので」というのは間違いで、
「管理者側でプログラムとデータベースが通信できるように設定しているはずなので」というのがより正確です。
ただし、説明を簡単にするために意図的に正確ではない言葉を使いました。

私の頭の中にある図は
A.ファイアーウォールの外側にあるMySQLへのリモート接続
B.ファイアーウォールの内側にあるMySQLへのリモート接続
C.ローカルにあるMySQLへのリモート接続
の3つで、
現在のゴドーさんとFC2の関係はA、プログラムをアップロードした場合の関係はBになるという想像です。
Bが表現しにくかったので「ローカル」と簡単に表現してしまいましたが、「ローカル」と言えばCの状態になるのでこれは間違いです。
投稿者 ゴドー  (社会人) 投稿日時 2010/5/29 17:38:15

FC2にリモートアクセスできるかをまず確認してみます!!
その後

①まず、データベースエクスプローラを使ってゴドーさんのローカルのMySQLに接続する方法を模索。
②それができたら、次に、FC2側のMySQLに接続する方法を模索。
③それができなければ、プログラム自体をFC2側にアップロードすることの可否を調べる。
④それが可であれば、プログラムを作成しアップロードする

を勉強していこうと思います。

なかなかうまくいかないものですね・・・。


あっ!
じつは父親にたのまれまして。

お店をやっていて、現在紙のポイントカードを使用しているそうなんですが、
それを店舗共通のポイントカードでバーコード化して管理・運営したいとのこと!

Accessでは同時アクセスができないのは知っていいるのですが、
VBからの操作をデータの箱としてAccessを使用し、DropBoxという無料のフリーソフトのサーバー?にAccessのデータを共有して設置し・・・・。
といった感じで作成終了までいったのですが、やはり他の店舗との同時アクセスでバグりまして。


それでSQLserverやらMySQLに手をつけるしかないと思い勉強しはじめたのです。

つまりは使用はポイントの加算・減算・修正を他店と同時アクセスでも動くアプリケーションをつくりたいのです。


小遣いかせぎに必死になってる状態ですけね^^
投稿者 るきお  (社会人) 投稿日時 2010/5/29 17:55:05
その要件から考えてみました。


店舗どおしがWANでネットワーク化されているのであれば、1台サーバー(規模によってはパソコンでも可)を用意して、SQL Server Express EditionとVBで作ったASP.NET Webアプリケーションを稼働させ、各店舗からはWebブラウザ経由でプログラムとその裏にあるデータベースにアクセスするのがよいと思います。
サーバーは専用でなくてもよく、すでにある何かのパソコンを転用できるのであれば人件費以外は無料でシステム化できます。

WANになっていないのであれば、インターネット経由で通信するしかなく通信内容を傍受される恐れがありますが、構成としては上と同様の構成だけれどもインターネット上にあるサーバーにSQL Server Express EditionなどのデータベースとVBでつくったASP.NET Webアプリケーションを稼働させ、各添付からはWebブラウザ経由でアクセスするのがもっとも手軽と思います。

インターネット上にあるサーバーは私のこの掲示板のようにWindows Azureを使用することもできますが、知識があれば自分で構築することもできます。探せばブログやWebサイト開設サービスなどのように無料で貸してくれるサービスもあるかもしれませんが、想定するシステム構成がとれるのかどうか確認は必要です。(多分、そういうつもりでFC2と契約されたのでしょうか。FC2で要件が満たせればまったく問題はないです。)

あるいは、各店舗のパソコンにプログラムを配布して、各店舗からデータベースに直接アクセスする方法もありますが、この場合はこのデータベースにはリモートアクセスできる必要があることと、インターネットなどの一般回線を通じる場合は傍受される危険がありのがネックです。
(このようなシステム構成をクラサバと呼びます。)

他にもいくつか考えられそうです。
投稿者 るきお  (社会人) 投稿日時 2010/5/29 17:57:34
あ、でも、Webアプリケーションにしてしまうとバーコードの扱いが難しいです。

やはり各店舗にはプログラムを配布する形でデータの更新だけサーバーと通信する形の方がよさそうですね。
配布もかなり自動化する方法がありますし、サーバーの通信方法もいくつかは選択肢があります。

ぜひ、楽しんで作ってみてください。
投稿者 ゴドー  (社会人) 投稿日時 2010/5/29 18:03:08
SQL Serverはお金かかりますよね?
だからMySQLを選択したのもありまして・・・。

でもいろいろとありがとうございまうす。

>やはり各店舗にはプログラムを配布する形でデータの更新だけサーバーと通信する形の方がよさそうですね。

の方法でまた模索してみます。
またわからないことがでてくると思いますので、新規にまた投稿すますね^^

いろいろとご教授ありがとうございます。
投稿者 るきお  (社会人) 投稿日時 2010/5/29 18:34:51
>SQL Serverはお金かかりますよね?
>だからMySQLを選択したのもありまして・・・。
Express Editionであれば無償ですよ。
Express Editionでもデータの保存場所として普通に使えるのでご検討ください。

あと、勘違いしていました。
バーコードリーダーで読み取るレベルであればWebアプリケーションでもクラサバでもバーコードの扱いやすさは変わりません。
投稿者 ゴドー  (社会人) 投稿日時 2010/5/29 18:37:42
今ちょうど調べていたら無償ってしりました^^
さっそくインストールしました♪

使い方?利用方法がいまいち・・・。
これはどこにデータベースの情報を保存していることになるのでしょうか?
投稿者 るきお  (社会人) 投稿日時 2010/5/29 21:34:48
>使い方?利用方法がいまいち・・・。
>これはどこにデータベースの情報を保存していることになるのでしょうか? 
接続先です。
物理的には接続先のデータベースで設定されているmdfファイルです。
Express Edition以外ではndfファイルに保存される場合もあります。
投稿者 葉流  (社会人) 投稿日時 2010/5/29 22:37:44
> さっそくインストールしました♪
> これはどこにデータベースの情報を保存していることになるのでしょうか? 

SQL Server Expressの事でしょうか?であれば、普通にSetupした場合、
Microsoft SQL Server Management Studio ExpressもSetupして、これで
データ管理が行えますよ。しかし使う場合、かなり下調べが必要でしょう。
ネット上に解説は多くありますよ。
 
  
投稿者 ゴドー  (社会人) 投稿日時 2010/5/30 11:09:12
るきおさん・葉流 さんいろいろとありがとうございます。

葉流さんのおっしゃるとおりSQL Server Express2005です。
インストール後Microsoft SQL Server Management Studio Expressインストールしました。

新しくデータベースを作成し、テーブルをひとつ追加しました。

そしてVBの
①データベースエクスプローラー
②Microsoft SQL Serverデータベース
③参照でデータのファイルパスを指定
④Windows認証
を行ってデータベースへの接続ができ、VBからそのデータベースがみれました!!


そこで!
現在このデータベースは
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\ファイル名
に保存されているのですが、VBで作成したソフトからデータベースにアクセスするにはこのファイルを
レンタルサーバーなどに設置するということなのでしょうか?
というのも、先ほど記載したように他の店舗同士で同時にこのデータベースにアクセスさせたいので!
投稿者 葉流  (社会人) 投稿日時 2010/5/30 13:53:33
LANの中か、外かで変るでしょうが、いわゆる社外なら当然LANの外ですね。
その場合、リモート接続で。いずれにしてもファイル共有で、エクスプローラから
見える必要があると思います。残念ながらネットワークに強くないから未詳です。
いづれにしても、例えば D:\SqlData のようにフォルダを作ってそこに置くのでしょう。
共有フォルダの設定など、ネットワーク管理の知識が要求されると思います。
多分、ネットワーク認証になると思いますが、Expressでそこまで出来るか知りません。
当方、これ以上は知りません。ネットワークになると、ハードル高そうですね。
(もしSQLServerで行くなら、スレッド変える方がよろしいのでは?)
投稿者 ゴドー  (社会人) 投稿日時 2010/5/30 14:07:17
たしかに変えたほうがいいかもですね。

最後に
ふと思ったのですが、

MySQLはレンタルサーバーなどにおいて操作するもの。
SQLServerは自分でサーバーをつくるなり、各PCからそのフォルダ(ファイル)が見れるように
ネットワーク環境を整えて操作するもの。

ということなんでしょうか?
投稿者 ?-?  (その他) 投稿日時 2010/5/30 14:16:44
> MySQLはレンタルサーバーなどにおいて操作するもの。
> SQLServerは自分でサーバーをつくるなり、各PCからそのフォルダ(ファイル)が見れるように
> ネットワーク環境を整えて操作するもの。

> ということなんでしょうか? 

違いますよ。
どっちも、レンタルサーバにおいて操作することも、ネットワーク共有にすることも不可能では無いです。
ただし、現実において、レンタルサーバがWindowsサーバでない可能性もあり、実現するために、なかなか難しい、ということです。

大抵のレンタルサーバでデータベースを利用する場合、レンタルサーバ側のセキュリティや、利用者側のLANのセキュリティの関連で、直接データベースを接続は出来なかったりします。
最初に話があったphpMyAdminは、Webブラウザでアクセスしていたと思いますが、これは、外部からはWebサーバへのアクセスが可能にしてあるだけで、そのサーバ内だけでデータベース操作が出来るようになっている可能性が高いです。
こうすることによって、外部からはHTTP通信のみでデータベース操作をするようにして、悪意あるユーザーや、悪意は無いがちょっと知識あるユーザーの間違った操作で、データベースの中身を直接弄れないようにし、常にサーバにおいていあるPHPなどで作ったプログラムのみをアクセスすることでセキュリティを保っている、という見方になります。
投稿者 ?-?  (その他) 投稿日時 2010/5/30 14:25:58
これ見ててちょっと考えたのですが、
・レンタルサーバにMySQLを利用
・MySQLのデータ操作は、レンタルサーバ側にプログラム(PHP、Perlなど)を配置
・レンタルサーバと各店舗のアクセスはHTTPによってアクセス、データはXMLなどでやりとり
・レンタルサーバと各店舗アクセスするソフトはVBにて作成、このVBにて、XML形式データを作成などする
っていうほうがよいのかなぁと。
問題は、VBだけの知識じゃなく、PHPなど、サーバ側で動かすソフトの知識、XMLに関する知識などが必要になってしまうこと、ですけど。
投稿者 ゴドー  (社会人) 投稿日時 2010/5/30 14:29:14
?-?さん
ありがとうございます。


現実的にはかなり難しいということですね!
サーバーに置かれているMySQLにデータの更新などを命令するのであれば、
HTML(ブラウザ)からの操作が基本ということですかね。
セキュリティの問題もあり、ローカルで作動しているソフトからサーバーのMySQLへのアクセスは難しいと・・・。

なんだか暗礁に乗り上げたような感じに・・・。

みなさん色々ありがとうございます。
投稿者 葉月  (社会人) 投稿日時 2010/5/30 15:21:09
私はJava&ポスグレしかやったことがないので、
ASP.NETはわかりませんが――
MSDNにホスティングサービス情報がありました。
よかったら関連URLを見てください。
投稿者 ヴァン  (社会人) 投稿日時 2010/5/31 15:09:10
こんにちは。

PHPとMySQLのシステム(Webブラウザで表示)で行けそうな案件だと思います。
バーコードリーダーで読み込んだ結果はTextBoxに文字列として入力させることができます。
なので、それほど難しいことはしなくても大丈夫なはずです。
投稿者 ?-?  (その他) 投稿日時 2010/5/31 16:39:01
PHPとMySQLで、Webブラウザによるやりとりだと、トップのページのURLがわかれば誰でも使える形になるのでそれを避けたくてVBでなんとかならんか、とやってるのかな?と思いました。
それを無視すれば確かにバーコードリーダーはキーボードによる入力と扱いは変わらないので、やろうとしていることは、VBである必要は無いかもしれませんね。
投稿者 ?-?  (その他) 投稿日時 2010/5/31 17:29:44
思い出した。
MySQLは、ユーザーIDとパスワードのみでログインチェックしているだけでなく、接続元のアドレスのチェック(ローカル、LAN内、LAN外)もしています。
たとえば、高い権限のユーザーIDでは、ローカルでしか接続できず、少し低い権限のユーザーではLAN内からいくらでもアクセスできる、LAN外からはたとえそのユーザーでも接続できない、とか。
ファイアウォールのポートを開けて貰っても、IDに外部からの接続権限設定してもらわないとなら無いでしょうから、大変でしょうね。