WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

MySQL をインストールしました

by WebSurfer 2011年4月23日 23:12

2017/1/30 追記:
2017/1/27 時点での最新版 MySQL Community Server 5.7.17 と Connector/Net 6.9.9 をWindows 10 Pre 64-bit PC にインストールした時の話を「MySQL をインストールしました(その 2)」に書きました。以下の記事は 2011 年 4 月とかなり昔の話で、それからやり方が変わってきていますのでご注意ください。

自分が使っているホスティングサービスでは SQL Server の他に MySQL もサポートしているので、SQL Server が容量オーバーになる前に MySQL の方にも DB を分散できないか検討するため、開発環境に MySQL をインストールしました。

MySQL

インストールしたのは、このポストを書いている時点での最新版 MySQL Community Server 5.5.11 と Connector/Net 6.3.6 です。Connector/Net 6.3.x は .NET 4 と VS2010 をサポートしています。詳細は MySQL のサイトの Documentation の中の Chapter 2 Connector/Net Versions を参照してください。

まず、MySQL の ダウンロードサイト で MySQL Community Server(サーバー本体)と Connector/NET(ADO.NET や SqlMembershipProvider 相当のライブラリが含まれている)をダウンロードしてきます。

インストールの際、MySQL Community Server の方は細かい設定のオプションがあって、インストーラが英文でいろいろ聞いてきますが、よく読んで進めて行けば問題なく完了すると思います。ファイアウォールのポートの穴あけはデフォルトではない(チェックを入れる必要がある)ので注意してください。インストールの際設定するパスワードは後で使いますので、覚えておいてください。

Connector/Net の方は何も設定する必要はなく、VS2008 と VS2010 の設定まで自動でやってくれます。インストールすると Visual Studio から MySQL に接続できるようになります。

下の画像は Visual Studio のサーバーエクスプローラから接続の追加を行うときに表示されるダイアログです。

接続する DB の種類の選択

上のダイアログで[OK]をクリックすると「接続の追加」ダイアログ(下の画像)が現れます。ここで、先に MySQL Community Server のインストールの際に設定した Server name, User name, Password を入力し、接続する Database name を選択します。

接続の追加

上のダイアログで[詳細設定(V)...]をクリックすると「詳細プロパティ」ダイアログ(下の画像)が表示されます。ここで、Character Set の設定を、先に MySQL Community Server のインストールの際に設定したものにします。インストールのとき Best Support For Multilingualism を選択していると UTF-8 になります(ここでは UTF-8 ではなく utf8 と記入してください)。その他の設定は、自分が試した限りではデフォルトのままで OK でした。

接続の詳細プロパティの設定

以上の設定が終了すると、SQL Server データベースと同様に、サーバーエクスプローラに MySQL データベースの接続が表示されます。

Visual Studio から MySQL への接続

ただし、SQL Server と同様に新規テーブルを作成することはできないようです。自分が試した限りですが、どうしても主キーの設定ができませんでした。

自分が知らないだけで、やり方はあるのかもしれませんが、どうしても Visual Studio からはできなかったので、コマンドラインから作りました。

コマンドラインからテーブルの作成

アプリケーションの作成には Connector/NET 関係の dll への参照の追加が必要です。ただし、レンタルサーバーなど、Connector/NET がインストールされてない場合など、参照設定ではダメな場合は bin フォルダに dll をコピーすることになります。

2013/10/1 追記:ダウンロードした msi インストーラーを使って Connector/NET をインストール すると、自動的(勝手)に GAC に dll が登録され、さらに machine.config ファイルの DbProviderFactories セクション に MySQL 用プロバイダの構成情報が登録されます。なので、開発マシンに Connector/NET をインストールした場合、開発マシンでは Bin に dll をコピーするとか、machine.config を修正することは不要です。

先にも書きましたが、Connector/NET 6.3.x は .NET 4 にも対応していますが、.NET 2.0, 3.0, 3.5 と .NET 4 では使う dll が異なるので注意してください。

デフォルト設定のままインストールすると以下のフォルダに v2.0 と v4.0 という 2 つのフォルダができます。

C:\Program Files\MySQL\MySQL Connector Net 6.3.6\Assemblies

ASP.NET 2.0, 3.0, 3.5 では v2.0 の中の MySql.Data.dll を、ASP.NET 4 なら v4.0 の中のものを bin フォルダにコピーしてください。

接続文字列は、上の画像の「詳細プロパティ」ダイアログの下のほうに表示される Visual Studio からの接続文字列を参考に以下のように web.config に設定します。パスワードの設定に注意してください。

<connectionStrings>
  <add name="MySQL" 
    connectionString="server=localhost;User Id=root;
        database=test;Character Set=utf8;Pwd=********" 
    providerName="MySql.Data.MySqlClient" />
</connectionStrings>

後は名前空間 MySql.Data.MySqlClient をインポートすれば、SqlConnection, SqlCommand などに代えて MySqlConnection, MySqlCommand を使えるようになります。以下のような感じです。

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="MySql.Data.MySqlClient" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  DataTable CreateDataTable()
  {
    string connString =
      ConfigurationManager.
      ConnectionStrings["MySQL"].ConnectionString;
    string query = "SELECT * FROM products";
    using (MySqlConnection connection = 
        new MySqlConnection(connString))
    {
      MySqlCommand command = 
        new MySqlCommand(query, connection);
      MySqlDataAdapter adapter = new MySqlDataAdapter();
      adapter.SelectCommand = command;

      DataSet ds = new DataSet();
      adapter.Fill(ds);

      return ds.Tables[0];
    }
  }
    
  void Page_Load(Object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
      GridView1.DataSource = CreateDataTable();
      GridView1.DataBind();
    }
  }
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title></title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <asp:GridView ID="GridView1" runat="server">
    </asp:GridView>
  </div>
  </form>
</body>
</html>

Tags: ,

MySQL

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年3月  >>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

View posts in large calendar