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 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 のサーバーエクスプローラから接続の追加を行うときに表示されるダイアログです。
上のダイアログで[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 データベースの接続が表示されます。
ただし、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>