MYSQL

入手

最新版は 5.系列。 日本語マニュアルは 4.系列まで用意されている。


Linux 用アーカイブ(non-rpm版)

 

インストール

インストールポリシー

  • データディレクトリはデフォルトの場所から変更
  • 専用ユーザ(mysql)で動作させる
  • mysql ユーザには shell を割り振らない
     

以下、root で作業。

  1. mysql 専用ユーザの作成
    # groupadd mysql
    # useradd -g mysql -d /home/data/mysql -s /bin/false

  2. DL したアーカイブはすでにビルド済みなので、インストール先に展開
    # tar mysql-standard-5.0.18-linux-i686.tar.gz -C /usr/local
    # cd /usr/local
    # mv mysql-standard-5.0.18-linux-i686 mysql-5.0.18
    # chgrp -R mysql mysql-5.0.18
    # ln -s mysql-5.0.18 mysql

    Version 管理を容易にする為、ここではシンボリックリンクにしている


  3. データディレクトリの作成と初期化*1
    # cd /usr/local
    # mkdir /home/data/mysql/DATA
    # /usr/local/mysql/scripts/mysql_install_db  --datadir=/home/data/mysql/DATA
    # chown -R mysql:mysql /home/data/mysql/DATA

    mysql_install_db スクリプトは、mysql をインストールした TOP ディレクトリで実行しないとエラーになる


  4. 設定ファイルの作成
    # cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
    # vim /etc/my.cnf

    下記内容を /etc/my.cnf に追加

    [mysqld]

    user=mysql

    language=/usr/local/mysql/share/mysql/japanese/

    [mysql.server]

    basedir=/usr/local/mysql

    datadir=/home/data/mysql/DATA

  5. 起動スクリプトの用意
    # cp /usr/local/mysql/support-files/mysql.server /usr/local/etc/init.d/mysql.sh
    # chmod 754 /usr/local/etc/init.d/mysql.sh


  6. デーモンの起動と確認
    # /usr/local/etc/init.d/mysql.sh start
    # /usr/local/mysql/bin/mysqladmin version
    # /usr/local/mysql/bin/mysqladmin variables
    # /usr/local/mysql/bin/mysqlshow


  7. mysql 用 root*2 パスワードの設定
    # /usr/local/mysql/bin/mysql -u root
    mysql> set password=password('パスワード');
    mysql> exit

    root パスワードは必ず設定する。

    パスワードが無いままだと第三者に mysql -u root db_name を実行され、DB を操作されてしまう。

 

設定ファイル

 
ファイル名用途
/etc/my.cnfグローバルオプション
DATADIR/my.cnfサーバ固有オプション
defaults-extra-file--defaults-extra-file=path で指定されたファイル
~/.my.cnfユーザ固有オプション
 

上から順に評価される。

起動スクリプト mysql.server からも参照される為、起動に関する設定は /etc/my.cnf にすると良い。

 

コマンド

コマンド名用途
mysqladmin versionVersion 表示
mysqladmin variablesmysql の設定表示
mysqlshow -u ユーザ名 -p作成されているユーザテーブルの表示
mysql -u ユーザ名 -p データベース名DB にアクセスする
mysqladmin -u root -p create HOGEデータベース HOGE を作成
 
SQL文用途
CREATE DATABASE HOGEDB HOGE を作成(基本的に root だけが作成できる
GRANT ALL PRIVILEGES ON HOGE.* TO ユーザ名@ホスト名 IDENTIFIED BY 'DB パスワードDB HOGE上に全ての権限を持つユーザを作成
REVOKE 権限 ON db.* FROM ユーザ名@ホスト名ユーザから権限と取り上げる
SET PASSWORD FOR ユーザID@"%" = PASSWORD('パスワード')パスワードセット
UPDATE db.* SET カラム=値カラムのデータを更新する
FLUSH PRIVILEGESDB のフレッシュ
SHOW DATABASESDB 一覧表示
SHOW TABLESテーブル一覧表示
USE データベース名DB の変更
DESCRIBE テーブル名テーブル構造の取得
CREATE TABLESテーブル作成


SQL文用途
UPDATE db.* SET カラム名=値カラムのデータを更新する
UPDATE db.* SET カラム名=concat(カラム名, 'hoge,edu,piyo')文字列型のデータを追記
UPDATE db.* SET カラム名=カラム名+10000数値型のデータを追記
ALTER TABLE テーブル名 ALTER カラム名 set default 'hogehoge'指定カラムの default 値を変更する


○create table の例
CREATE TABLE SAMPLE_TABLE (
  id        INT(10) AUTO_INCREMENT,
  no        MEDIUMINT(5) NOT NULL,
  name      VARCHAR(50), 
  sex       TINYINT(1) NOT NULL,
  address   VARCHAR(255),
  tel       VARCHAR(11),
  flg       CHAR(1) DEFAULT '0',
  timestamp TIMESTAMP(10),
  PRIMARY   KEY (id, no)
);
 
 

バックアップ

データベースのバックアップには下記の mysql メーリングリストが参考になる。
[mysql 12751] MySQL のバックアップ・復元について
[mysql 12752] Re: MySQL のバックアップ・復元について
[mysql 12761] Re: MySQL のバックアップ・復元について
[mysql 12763] Re: MySQL のバックアップ・復元について

 

以下重要ポイントの抜粋

1.MyISAMなどの非InnoDBテーブルに対して途中で更新が入る可能性がある場合
バックアップデータの一貫性を保つために、バックアップの間中共有ロックをかける必要があります。
以下のように実行します。
% mysqldump --all-databases --lock-all-tables --flush-logs > ***.sql

2.権限テーブルを除くすべてのテーブルがInnoDBの場合
この場合、「バックアップの開始時にほんの一瞬だけ共有ロックをかければ、
バックアップデータの一貫性が保たれる」というバックアップ方法があります。以下のように実行します。
% mysqldump --all-databases --master-data=2 --single-transaction --flush-logs > ***.sql
1との違いは、バックアップの最中に更新を行なうことができるということです。
 

バックアップと同時に古いバイナリログを削除するには --delete-master-logs オプションを付加して実行する。この場合は文字通りそれまで保存されていた全てのバイナリログが消えてしまうので、古いログを参照する必要がある場合は、ログローテートプログラムを導入するか、別途バックアップを取る必要がある。
得に気にしないのならば、

$ mysqldump --all-databases --delete-master-logs --lock-all-tables --flush-logs -pパスワード> ***.sql

と実行すれば良いだろう。

 
 

関連プログラム

 
 

参考資料

 

*1 初回インストール時のみ
*2 unix root アカウントとは別

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-08-11 (月) 17:37:03 (5744d)