-日本ではPostgreSQLに比べるとマイナーでも世界では標準。Bugzillaのために入れてみる #contents *Install [#o0cd2c84] **RPMインストール [#p2996a87] 公式サイトにRPMが置いてあるのでこれが一番楽 Server,Client programs,Dynamic client librariesをダウンロードする **ソースコンパイル(複雑なので非推奨) [#r1f80535] ./configure make make install **Windows版インストール [#o0545630] -PostgreSQLと違いずいぶん前からWindowsネイティブで動く。 参考サイト http://y-kit.jp/saba/xp/mysqlsetup.htm *Install後の初期設定 [#sf122b71] **ルートのパスワード設定 [#sc048686] インストール直後はrootのパスワードが設定されていない。実験用途ならこのままのほうが楽。 mysqladmin -u root password 'hogehoge' mysqladmin -u root [-h miracleceleron] password 'new-password' *文字コード [#c8b6524f] PostgreSQL等と違ってテーブルクリエート時にしてできないのだろうか?/etc/my.cnfをいちいち書き換えないと駄目なのか? -以下のコマンドを打ち込むと現状が見える。 SHOW VARIABLES LIKE 'character\_set\_%'; -テーブル作成の時に指定する(5.0で確認) create database codezine default charset utf8; *管理ツール [#i83ef508] Windowsで出来るGUIツールを開発元が配布しているのが心強い。MySQL AdministratorやMySQL Query Browser等がある。 *コマンド集 [#sc19b022] |インポート|load data infile 'c:/ken_all.csv' into table テーブル名| |エクスポート|select * from テーブル名 into outfile '絶対パスでファイル名'| |DB一覧|mysqlshow| |DB作成|mysqladmin -u root create TEST| |DB削除|mysqladmin -u root drop TEST| |DB接続|mysql -u root -p DB_NAME| |バッチ処理|mysql -u root -p DB_NAME < sql.txt| |TABLE一覧|SHOW TABLES;| |プロセスの確認|SHOW processlist| |DBダンプ|$ mysqldump -u root データベース名 > dump.sql| *テーブル構造やデータ型 [#x177f3ed] **Tableの形式 [#v6a964eb] -InnoDB --トランザクション対応 -MyISAM --トランザクション非対応で速度重視。 -INNODB形式でテーブルを作成するサンプル CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ) engine=InnoDB; **データ型 [#r35b4386] -CHAR,VARCHARは4.1以降文字数。それ以前はバイト数なので日本語扱うときは注意 -最大以上のサイズを入れた場合、はみだし分が切り落とされるだけでエラーにはならないので注意。数値型のデータも同様 **順序型 [#w169db1c] -フィールドにAUTO_INCREMENTをつける。ただしひとつのテーブルに付ひとつまで *注意点 [#kea134ff] **データベース名やテーブル名は大文字小文字を区別する。 [#y60b9d30] これはOSが大文字小文字区別するならば、DBとdbは別のデータベースとして取扱われる。テーブルに付いても同様である。WINDOWSのように区別しないOSの場合はその心配はない *GUI管理ツール [#d0d01049] **[[phpMyAdmin:http://www.phpmyadmin.net/home_page/index.php]] [#kea3dc6a] WEBからDB管理ができてしまうというツール。日本語化されていて、解凍即実行可能。海外ではよく使われているのかphpmyadminへの不正アクセスが多数・・・・ -インストール +解凍する。 *FAQ [#s3050dca] パスワード忘れた mysqldの引数に --skip-grant-tablesをつける しかしこれだと固まりやがる場合があり(超不安定DB) mysql> grant all on *.* to root@localhost identified by "パスワード"; これでパスワード認証を求められる mysql -u root -p xoops /var/lib/mysql/mysql以下を全部消してinitする #counter