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

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

ただいまの
回答率

90.54%

  • MySQL

    5837questions

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

  • PowerShell

    350questions

    Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

PowerShellでMySQL接続

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 531

HelloWorld2

score 2

初めての投稿で、PowerShellも初心者なので、拙い文章ですが、ご回答頂けると幸いです。

--------------------以下本文--------------------

PowerShellでAWSサーバ上のMySQLからデータを取得したいです。

AWSサーバ上のSQL Serverからはデータを取得できましたが、MySQLではどうもうまくいきません。(そもそも接続がうまくいきません)

SQLServerのデータは下記のコードで取得しております(接続情報・クエリは省略します)
$objConnection = New-Object -TypeName System.Data.SqlClient.SqlConnection;
$objConnection.ConnectionString = $strConnectionString;
$objCommand = $objConnection.CreateCommand();
$objCommand.CommandText = $strSQL;
$objAdapter = New-Object -TypeName System.Data.SqlClient.SqlDataAdapter $objCommand;
$objDataset = New-Object -TypeName System.Data.DataSet;
[void]$objAdapter.fill($objDataSet);

もちろん上記はSQLServer用のメソッドなので、コネクションを以下にしてみたり、アセンブリをインストールして読み込んでみたりしましたが、接続できません。
New-Object MySql.Data.MySqlClient.MySqlConnection

PowerShellを用いてPowerShellに接続する場合、どのクラスのどのメソッドを用いるのがスタンダードなのでしょうか?
また、アセンブリのインストール・読み込み等は、MySQLでは必須なのでしょうか?

できれば初心者にもわかりやすい解説だと幸いです。
よろしくお願いいたします。

Windowsバージョン7
PowerShellバージョン2.0
アセンブリ:MySQL.data.dll

--------------------以下追記--------------------
実行したコマンドと、エラーの内容を下記に記載しました。

■New-MySQLConnection -User "" -Password "" -HostAddress ""
用語 'New-MySQLConnection' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識さ
れません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行し
てください。

■[void][System.Reflection.Assembly]::LoadFile(~\~\~\MySQL.Data.dll)
"1" 個の引数を指定して "LoadFile" を呼び出し中に例外が発生しました: "このアセンブリは現在読み込まれているランタイムより
新しいランタイムでビルドされているため、読み込むことができません。 (HRESULT からの例外: 0x8013101B)"

■New-Object MySQL.Data.MySqlClient.MySqlConnection
New-Object : 型 [MySQL.Data.MySqlClient.MySqlConnection] が見つかりません。この型を含むアセンブリが読み込まれていること
を確認してください。

■ [void][System.Reflection.Assembly]::LoadWithPartialName("~\~\~\MySQL.Data.dll")
"1" 個の引数を指定して "LoadWithPartialName" を呼び出し中に例外が発生しました: "指定されたアセンブリ名またはコードベー
スは無効です。 (HRESULT からの例外: 0x80131047)"

■ [void][System.Reflection.Assembly]::LoadWithPartialName("MySQL.Data.dll")
※エラーは発生しないが、voidを削除し、変数に格納し、変数表示させても無反応。
読み込めたと仮定し、接続コマンドを入力しても同様のエラー。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • sazi

    2018/07/10 10:10

    上手くいかないだけでは分からないので、エラーメッセージなどを追記されたほうが良いですよ。

    キャンセル

  • sysjojo

    2018/07/10 12:21

    追記された内容はhttp://tech.guitarrapc.com/entry/2013/05/02/230551を使おうとしてますか?元々の質問内容はSQLServerでのコードはこう書いていました、なので追記の中で使っているコマンドがやりたいこと、でよいですか?

    キャンセル

  • HelloWorld2

    2018/07/10 13:35

    ご質問ありがとうございます。参照しているサイトは複数あり、ご指摘頂いたサイトも含みます。質問の趣旨としては、とにかくMySQLに接続したい、データを取得したい、というところで、SQLServerのコードと類似した形で書けたら理想的ですので、参考までに記載しました。よろしくお願いいたします。

    キャンセル

  • sysjojo

    2018/07/12 15:06

    バージョン変更で解決したのであればsaziさんの回答をベストアンサーにされた方がよいですよ。

    キャンセル

回答 2

checkベストアンサー

0

手元のWindowsPCからEC2上のMySQLに接続する、という話だと思いますが、まずMySQL側で外部ホストからの接続を許可されていますか?
許可していたとして、AWSのセキュリティグループの設定およびEc2上のゲストのファイアウォールで接続ポートを開放していますか?
これらが行われていなければ、手元のPCから接続することはできないかと。

ただ、DBへの接続ポートを直接開放するのは私はあまりお勧めしません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/10 11:53

    ご回答ありがとうございます。
    まだ設定の確認ができていないのですが、
    A5から該当MySQLのDBに接続する際は、
    ユーザID,パスワード,ホスト名,データベース,ポート番号の入力のみで接続できるので、
    外部ホストからの接続の許可・接続ポートの解放はされているのではないかと考えています。
    見当違いでしたら申し訳ございません。

    キャンセル

  • 2018/07/10 12:01

    A5ってなんですか?
    FUJITSU Cloud Service A5 for Microsoft Azure?
    回答の前提(手元のWindowsからAWS)ってあってますか?
    どこからどこの接続の問題か、など前提条件を質問に書かれた方がよいかと。
    あと同じことが違う環境からならできるのであれば、出来ている環境についても書かれた方がよいかと。

    キャンセル

  • 2018/07/10 12:06

    A5がFujitsu Cloudと仮定して補足しますが、A5から接続ができるのはA5に対してFW等を許可しているからで、他のところから接続しようとしたときにはそこに対しても許可してやる必要が普通はあります。どこからでも接続できるように設定されている場合は別ですが。

    キャンセル

  • 2018/07/10 12:28

    説明不足で申し訳ございません。
    A5とは、A5:SQL Mk-2のことで、SQL開発ツールのことです。
    接続は、ご認識の通り、ローカルのwindowsからAWSです。
    A5からの接続も同じマシンから行っております。

    キャンセル

  • 2018/07/10 12:34

    同じ環境からツールの違いで接続できる、出来ないが変わるのであれば、サーバー側の問題の可能性は低いですね。saziさんご指摘の通り、Powershellから接続するための環境に不備があるのでしょう。質問のコメントに挙げたツールを使おうとしているのであれば、githubからダウンロードしてこないと使えないと思いますがそのあたりは大丈夫です?

    キャンセル

  • 2018/07/10 14:05

    質問のコメントにあるサイトに関してですが、勘違いをしておりました。
    githubからのダウンロードが必要なのですね。
    できれば、Powershel以外のモジュールはシンプルにしたいので、ツールを使用しての実現は一度保留とさせてください。
    お手数お掛けして申し訳ございません。

    キャンセル

0

エラーの内容からは、環境が構築されていないように思えます。
やってみたことはないのでアレですが、「PowerShell MySQL」というキーワードだけでも結構サンプルはHITします。
取り敢えず以下などはどうでしょうか。
Connector/NetとPowerShellでMySQLのデータ取得

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/10 12:48

    これがないので

    >New-Object : 型 [MySQL.Data.MySqlClient.MySqlConnection] が見つかりません。この型を含むアセンブリが読み込まれていることを確認してください。

    これが出ている気がしますね。

    キャンセル

  • 2018/07/10 13:01 編集

    そうですね。
    接続方法を模索している感じの質問なので、取り敢えず繋がれば良いのかな、って感じです。

    キャンセル

  • 2018/07/10 13:58

    ご回答ありがとうございます。

    >接続方法を模索している感じの質問なので、取り敢えず繋がれば良いのかな
    おっしゃる通りです。

    環境とは、Connector/Netとアセンブリの読み込みのことですかね?
    Connector/Netに関しては、インストールしました。(フォルダ内にMySQL.Data.dllなどのファイルが存在しました)
    ご教示頂いたサイトの、「[reflection.assembly]::LoadWithPartialName("MySQL.Data")」コマンドを入力したのですが、無反応です。
    その後「New-Object MySql.Data.MySqlClient.MySqlConnection($connStr)」コマンドを入力しましたが、下記エラーが発生しました。

    New-Object : 型 [MySql.Data.MySqlClient.MySqlConnection] が見つかりません。この型を含むアセンブリが読み込まれていることを確認してください。

    キャンセル

  • 2018/07/10 14:47

    >ご教示頂いたサイトの、「[reflection.assembly]::LoadWithPartialName("MySQL.Data")」コマンドを入力したのですが、無反応です。

    ちゃんとインストールできてないんじゃないですかね?
    入れてないPCで叩くと無応答ですが、入れるとGAC/Version/Locationの出力が返ってくるようになるので。

    キャンセル

  • 2018/07/10 14:50

    現在、インストールされたデフォルトのフォルダ内にモジュールが格納されているのですが、
    どこか特定の場所に格納する必要ってありますか?
    現在の格納場所(Connector/Netをインストールされた際に作成されたフォルダ)
    \MySQL Connector Net 8.0.11\Assemblies\v4.5.2

    キャンセル

  • 2018/07/10 15:02

    Set-Location でインストール先にカレントディレクトリを変更してみてはどうですか

    キャンセル

  • 2018/07/10 15:02

    格納場所は気にしてないですね。
    https://dev.mysql.com/downloads/connector/net/からダウンロードしたmsiを実行しただけなので。
    %ProgramFiles(x86)%\MySQL\MySQL Connector Net 8.0.11\Assemblies\v4.5.2にファイルはありますね。

    キャンセル

  • 2018/07/10 16:02 編集

    >saziさん
    カレントディレクトリを\MySQL Connector Net 8.0.11\Assemblies\4.5.2に変更してみましたが、LoadWithPartialNameは無反応でした。
    [System.AppDomain]::CurrentDomain.GetAssemblies() | % { $_.GetName().Name }で、ロードされているアセンブリを見てみましたが、MySQL.Dataは存在していません。

    >sysjojoさん
    そうなんですね。。。
    私も、同じサイトからダウンロードして、同じ格納場所にアセンブリが存在しています。
    Connector/Netのバージョンの関係とかですかね・・・?

    キャンセル

  • 2018/07/10 16:16

    次に進んだなら、インストールに失敗してるんでしょうね。
    別のクリーンな環境でインストールから行ってみたほうが悩まなくて済むかもしれません。

    キャンセル

  • 2018/07/10 16:18 編集

    パス見る限りまったく同じバージョンのように思いますが、私はPoweershellのバージョンが3ですね。

    > PS C:\Users\sysjojo> $PSVersionTable
    >
    > Name Value
    > ---- -----
    > PSVersion 3.0
    > WSManStackVersion 3.0
    > SerializationVersion 1.1.0.1
    > CLRVersion 4.0.30319.42000
    > BuildVersion 6.2.9200.22198
    > PSCompatibleVersions {1.0, 2.0, 3.0}
    > PSRemotingProtocolVersion 2.2

    Powershellのバージョンというよりは.NETのバージョンが関係してそうですが。

    キャンセル

  • 2018/07/10 18:00

    >saziさん
    非常に苦しいことに、別の環境から行うのは難しいんですよね。。。
    もう少しもがいてみます!ありがとうございます。

    >sysjojoさん
    やはりその可能性はありますかね。
    一回.NETのバージョンを下げて、実行してみます。

    ちなみに私の端末からPowerShellのバージョン調べた結果です。
    >$PSVersionTable
    Name Value
    ---- -----
    CLRVersion 2.0.50727.5466
    BuildVersion 6.1.7601.17514
    PSVersion 2.0
    WSManStackVersion 2.0
    PSCompatibleVersions {1.0, 2.0}
    SerializationVersion 1.1.0.1
    PSRemotingProtocolVersion 2.1

    キャンセル

  • 2018/07/10 23:22

    知人にお願いして、同じ動作を試してみました。

    結論から述べると、connector/netのversion8.0.11をインストールして、LoadWithPartialNameを実行したところ、適切にアセンブリを読み込めました。
    戻り値は以下です。(途中から省略)
    GAC Version Location
    --- ------- --------
    True v4.0.30319 C:\windows\Microsoft.Net\assembly\GAC_MSIL\MySQL.Data\v4.0_8.0.11....

    知人のPCの環境は以下の通りでした。
    ほぼ購入時と同じ状態(インストールファイル等がかなり少ない)
    PowerShellのversionが3.0
    windows8(私のPCはwindows7)

    まだ原因は特定できず、事象の解決には至りませんが、
    いったん、進んでる方向が正しい確証を得ることができました。

    今後は、原因の特定に努めます。

    キャンセル

  • 2018/07/10 23:30

    ふと思ったのですが、
    get-item 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full'
    上記コマンドを実行した際、私のpcでは、戻り値はあるものの、バージョン等が表示されていませんでした。これが関係あるんですかね?

    知人PCで実行すると以下のようになります。

    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4


    Name Property
    ---- --------
    Full Version : 4.5.50709
    CBS : 1
    TargetVersion : 4.0.0
    Install : 1
    InstallPath : C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
    Servicing : 0
    Release : 378389

    私のpcだとpropertyが1行だけ、version,○○○・・・(詳細は忘れました、たぶん項目名の羅列です)と出ていただけでした。

    キャンセル

  • 2018/07/11 05:06 編集

    >一回.NETのバージョンを下げて、実行してみます。

    ここに上がった上手くいってる環境は、.NET4.0以降な気がしますが、HelloWorld2さんの環境は.NET3.5以前なので、むしろ上げるべきなんじゃ?
    .NET4.0以降を入れてみては?
    Powershell2では.NETも3.5以前が使われるようなのでPowershellも上げてみては?

    https://qiita.com/miyamiya/items/95745587ced2c02a1966

    https://cheshire-wara.com/powershell/ps-textbooks/basic-knowledge/powershell-started2/

    そもそも.NET3.5以前じゃ要件満たしてないですね。
    https://dev.mysql.com/doc/connector-net/en/connector-net-versions.html

    キャンセル

  • 2018/07/12 15:03

    connector/netのバージョンを、mysql5.6に対応している一番低いバージョンにしてみた結果、
    アセンブリの読み込みができました!

    長い間お付き合い、本当にありがとうございました!
    また詰まった時は、ぜひご教示の程よろしくお願いいたします。

    キャンセル

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

  • ただいまの回答率 90.54%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • MySQL

    5837questions

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

  • PowerShell

    350questions

    Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。