Category Archives: MySQL

MySQLをインストールし、.NET 接続する。

ずっと前、少しだけ MySQL を使ったことはあったのですが、もう殆ど忘れていました。Linux にインストールするところから Visual Studio 2008 のサーバーエクスプローラーを使ってリモートからデータ接続を行うまでの記録です。

環境は、サーバーが、

CentOS 6.2 x86_64

MySQL 5.1.61

クライアントが、

Windows 7 Ultimate SP1 32bit

Visual Studio 2008 Professional Edition SP1

.Net Framework 3.5 SP1

MySQL Connector/Net 6.5.4

サーバー側

MySQLのインストール

あまり時間もなかったので、最も簡単なGNOMEデスクトップからGUIによるインストールを行いました。一応手順を記述します。

  1. メニューから[システム]-[管理]-[ソフトウェアのの追加/削除]をクリックします。

  2. 左側ツリーから
    Database
    ┗MySQLデータベースサーバー
    を選択すると右側に現れる
    mysql-server-5.1.61-4.el6(x86_64)にチェックし[適用]ボタンをクリックします。
  3. 指示に従いインストールを続けます。
    以下が自動で追加インストールされます。
    ・perl-DBD-MySQL-4.013-3.el6(x86_64)
    ・perl-DBl-1.609-4.el6(x86_64)
    ・mysql-libs-5.1.61-4.el6(x86_64)
    ・mysql-5.1.61-4.el6(x86_64)
  4. インストールが終わったら、言語セットをUTF8に設定します。
    キャラクタセットをUTF8に設定するために “/etc/my.cnf” を編集します。

    [mysqld]
    default-character-set=utf8
    character-set-server=utf8
    [client]
    default-character-set=utf8
    
    • [mysqld]の中に “default-character-set=utf8″ と
      “character-set-server=utf8″ を追加します。
    • [client]を追加し、その中に “default-character-set=utf8″ を追加します。
  5. OSの起動時、サービスが自動起動するようにします。(userは、root)
    ※ここからは、ターミナルからキャラクタベースでコマンド入力します。

    $ chkconfig mysqld on
  6. 確認
    $ chkconfig --list mysqld
    mysqld  0:off 1:off 2:on  3:on  4:on  5:on  6:off
    

    → 2,3,4,5 が on になっていることを確認します。

  7. サービスの手動制御コマンド
    $ /etc/rc.d/init.d/mysqld start

    【引数説明】
    start       … 開始
    stop       … 停止
    status      … 実行状態を表示
    restart      … stop, start を順に実行
    condrestart   … 動作していれば停止し、再起動する

DBユーザの作成

  • rootユーザで実施しました。
    db_user というDBユーザーを作成します。

    $mysql
    mysql> grant select,insert,delete,update,create,drop,file,alter,index on *.* to db_user@'%' identified by 'password';
    mysql> grant select,insert,delete,update,create,drop,file,alter,index on *.* to db_user@'localhost' identified by 'password';
  • 最初、上の行(to db_user@’%')を実施したのですが、ssh接続したターミナルからdb_userで接続できなかったため下の行(db_user@’localhost’)を実施しました。これでよかったのかどうかはわかりませんが結果オーライでここに記述します。

データベースの作成

  1. データベースの確認
    db_user というDBユーザーで接続します。Linux User は、root 権限のない普通のユーザーで実施しています。

    $ mysql -u db_user -p
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | test               |
    +--------------------+
    
  2. データベースの作成
    user_db というデータベースを作成します。

    mysql> create database user_db;
  3. データベースの確認
    ちゃんとできているか確認します。最後に “user_db” の一行が追加されているのでOK.

    mysql> show databases
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | test               |
    | user_db            |
    +--------------------+
    mysql> exit
    
  4. 言語セットの確認
    作成したデータベースの言語セットがUTF8になっていることを確認します。
    作成したデータベースにログインするため、一旦 “\q” で mysql インタプリタを抜けてから以下を実行します。

    $ mysql -u db_user -D user_db -p
    mysql> show variables like "char%";
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | utf8                       |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | utf8                       |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    8 rows in set (0.00 sec)
    

テスト用テーブルの作成

  • DBユーザ db_user で、データベース user_db に接続し、テスト用のダミーテーブル test_tbl を作成します。
    $ mysql -u db_user -D user_db -p
    mysql> create table test_tbl (
        -> id INT NOT NULL AUTO_INCREMENT,
        -> title VARCHAR(10) NOT NULL,
        -> update_date DATE,
        -> PRIMARY KEY (id)
        -> );
    

クライアント側

.NET で接続したいので、MySQL用データプロバイダーを入手し、Visual Studio から、作成したデータベースに接続し、テスト用のテーブルにデータを挿入してみる。

ダウンロード& データプロバイダのインストール

  1. http://dev.mysql.com/downloads/ の Connector/Net をクリックしジャンプしたページの Windows (x86, 32-bit), MSI Installer [Download] をダウンロードする。
  2. ダウンロードした msi ファイルを実行、ウィザードに従い、インストール
  3. Visual Studio 2008 – サーバーエクスプローラー を開き、データ接続の上で右クリック
  4. コンテキストメニューから [接続の追加] を選択
  5. 接続の追加ダイアログにて、サーバー名(またはIP)、ユーザー名/パスワード、データベース名を入力し、[テスト接続] をクリックし、接続を確認。
  6. 接続確認がOKなら、言語セットをUTF8に設定するため、[詳細設定(V)]のボタンをクリック

    詳細プロパティダイアログにて、Character Set の内容を “utf8″ に設定。後は[OK]クリックでVS2008 サーバーエクスプローラーに戻る。
    ※このとき、必ず “utf8″ は、小文字で入力してください。
  7. Server Name に指定したサーバー名(例ではcentos6)でツリーが構成される。テスト用テーブル “test_tbl” をダブルクリックすると、デザインモードで開かれ、また右クリックして「データの取得」を選択するとグリッドがオープンされ、データを挿入したり、修正したり加工ができる。