*MySQL [#tdd5cdf8] -いろいろ紆余曲折あって、2011年12月現在、Oracle社が権利を持っているデータベース。 -無料で使用できるエディションあり。 **目次 [#v1ccb95f] #contents **インストール [#d5e28608] -ダウンロードページから、MySQL Community Server 5.5.19(無料)をダウンロードした時の話。 +MySQL Community Serverをクリック。 +プラットフォームを選ぶ。⇒「Microsoft Windows」 +提供形態を選ぶ。⇒「Windows (x86, 64-bit), MSI Installer」 +ここでログインを要求されるが、無視。⇒「No thanks, just take me to the downloads!」をクリック +ミラーサイトの一覧が出てくるので近そうなサイトを選択してダウンロード開始。 +ダウンロードしたMSIを実行、インストール。 +あまりこだわりが無かったのでフルオプション、推奨設定で進める。 +Modify Security Settingで、パスワードを設定。Anonymous Accountは作成しなかった。 +コマンドライン型のクライアントソフトも一緒にインストールされているので、管理はそれで行える。 **OSの違い [#z4591ab5] -OSによってファイル名の大文字小文字の扱いがと異なる。MySQLでもファイル名に準拠する形で、データベース名やテーブル名が認識される。 -システム変数 lower_case_table_names に 0〜2 の値を設定する。 --0 .. 大文字小文字を区別する --1 .. 大文字小文字を区別しない(テーブル名をすべて小文字にして格納) --2 .. 大文字小文字を区別しない(テーブル名をそのまま格納) -linuxは標準で0、windowsは1、とのこと。OSの異なるMySQL間で移行する場合は注意が必要だ。 -設定は、my.cnf (linux) / my.ini (windows) に下記のように記載する。 [mysqld] lower_case_table_names = 1 -変更後はサービスを再起動する。 **データベース管理 [#ma6e7b1f] ***データベース一覧 [#zf7a5d27] -SHOW DATABASESコマンドを用いる。複数形に注意。 mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) ***データベース作成 [#b34a441f] -CREATE DATABASEコマンドを用いる。 mysql> CREATE DATABASE sample_db; Query OK, 1 row affected (0.00 sec) ***データベース削除 [#ef54c25f] -DROP DATABASEコマンドを用いる。 mysql> DROP DATABASE sample_db; Query OK, 0 rows affected (0.00 sec) ***ユーザ作成 [#b3fb36e9] -GRANTコマンドで権限とパスワードを同時に設定する。 mysql> GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,DROP,FILE,ALTER,INDEX ON *.* to sample_user IDENTIFIED BY 'ABC123'; Query OK, 0 rows affected (0.00 sec) -自身のオプションを継承して、adminというユーザを作成し、パスワード'pass'を設定する。 mysql> GRANT ALL PRIVILEGES ON *.* TO admin@"192.168.0.%" IDENTIFIED BY 'pass' WITH GRANT OPTION; --"192.168.0.%"は、"192.168.0.*"からのログオンを許すという意味。同PC内であれば、"localhost"と書く。 --"*.*"はアクセスできるテーブルを指す。"データベース名.テーブル名" の形式。 --"WITH GRANT OPTION"は、GRANT構文の実行権限を付与する意味。 --"ALL PRIVILEGES"は全ての実行権限という意味、selectのみだったら"SELECT"と書く。 -変更事項の即時反映 mysql> FLUSH PRIVILEGES; ***ユーザ一覧 [#j6aa0db3] -ユーザ情報もデータとして保存されているのでSELECT文を使って問い合わせる。 mysql> SELECT user, host, password FROM MYSQL.USER; +-------+-----------+-------------------------------------------+ | user | host | password | +-------+-----------+-------------------------------------------+ | root | localhost | | | root | 127.0.0.1 | | | root | ::1 | | | admin | localhost | | +-------+-----------+-------------------------------------------+ 4 rows in set (0.00 sec) -パスワードはハッシュ値なので紛失パスワードを知ることは出来ない。 -ハッシュ値なので同じワードを使えば同じハッシュ値になる。 ***データベースの使用 [#m8a7c97f] -使用するデータベースを切り替えるには下記のようにデータベース名を指定してuseコマンドを実行する。 mysql> use sample_db Databse changed -使用中のデータベース内のテーブル一覧を参照したいとき。 mysql> show tables; -テーブルのフィールドを確認したいとき。 mysql> desc tablename; -区切り記号を変更したいとき。(デフォルトはセミコロン) mysql> delimiter $$ **管理ツール [#o8d69658] ***MySQL Workbench [#i98cf097] -コマンドラインツールでは厳しいものがあるので、MySQL Workbench 5.2.36とやらをインストールしてみた。 -公式サイトにあるので、MySQL本体と同じ要領でダウンロード&インストールでOK。 -SQL DevelopmentとData ModelingとServer Administationの3つのツールで構成されている。 :SQL Development|SQLの実行、テーブル作成など :Data Modeling| :Server Administation|サーバの稼働状況を確認したり、詳細設定の変更、データのインポート/エクスポートなど **データベース活用 [#k405f9d8] ***トリガ作成 [#xcdc124e] -トリガとはテーブルへのレコード追加や削除などを契機にして実行する機能。 -MySQLではバージョン5.02以降で使用できる。 -テーブルAの更新に連動してテーブルBに追加、といった処理が実現できる。 -[[トリガ作成例>MySQL/トリガ作成例]] -登録したトリガを参照したいとき。 mysql> show triggers; **リンク [#p7db9e67] :Wikipedia MySQL|http://ja.wikipedia.org/wiki/MySQL :日本MySQLユーザ会|http://www.mysql.gr.jp/ :公式|http://www.mysql.com/ :公式 ダウンロードページ|http://www.mysql.com/downloads/ :公式 エディション比較|http://www-jp.mysql.com/products/