MySQL導入ガイド

MySQLの設定

各ディレクトリの説明

バイナリ配布を使用する場合、トップディレクトリはインストール先のディレクトリ /usr/local/mysql になる。ソース配布の場合、トップディレクトリはMySQL
のソースディレクトリです。

  • SRCDIR
    mysqlのソースを展開したディレクトリです。通常は /usr/src/mysql-version となります。
  • BINDIR
    mysqladmin や safe_mysqld
    がインストールされたディレクトリ。ソースからインストールした場合、通常は /usr/local/bin です。 バイナリ配布を使用しているはバイナリ配布の bin ディレクトリになります。
  • EXECDIR
    mysqld サーバーのインストール先。ソースからインストールした場合、 /usr/local/libexec です。バイナリ配布を使用している場合、BINDIR
    ディレクトリと同一になります。

オプションファイル

MySQLのサーバー、クライアントともに、オプションファイルからデフォルトの起動オプションを読み込むことができます。

UNIX では MySQL は以下のファイルからデフォルトオプションを読み込みます。

ファイル名 説明
/etc/my.cnf グローバルオプション
データディレクトリ/my.cnf サーバ用オプション
~/.my.cnf ユーザ用オプション

「データディレクトリ」とは、MySQL のデータを格納するディレクトリ ( /usr/local/mysql/data もしくは /usr/local/var )です。 

Win32 では MySQL は以下のファイルからデフォルトオプションを読み込みます。

ファイル名 説明
C:\my.cnf グローバルオプション
C:\mysql\data\my.cnf ユーザ用オプション

MySQLは上記の表にかかれている順にオプションファイルを読みます。もし複数オプションファイルがあった場合、後から読まれた設定が有効になる。全てのオプションはコマンドラインの引数に上書きされます。いくつかのオプションは環境変数に定義できます。オプションファイルとコマンドラインの引数は環境変数を上書きします。

以下のプログラムはオプションファイルをサポートします。

mysql, mysqladmin, mysqld, mysqldump, mysqlimport, isamchk and pack_isam.

オプションファイルには、プログラムがサポートしているコマンドラインの long オプション(例えば、-u ではなくて --user の方)を書くことができます。プログラムを --help で起動すれば、設定可能な変数名が得られます。

オプションファイルの書式
# コメント
コメントはシャープ( # )かセミコロン( ; )で始めます。空の行は無視します。
[グループ名]
グループ宣言です。 group
はオプションを定義するプログラムかグループの名前です。この宣言の後、オプションかset-variable行で、このグループにオプションを与えます。このセクションの範囲は、他のグループ宣言の行が来るか、ファイルの最後に来るまでです。
オプション名
これはコマンドラインの --option と等価です。
オプション名=値
これはコマンドラインの --option=value と等価です。
set-variable = variable=value
これはコマンドラインの --set-variable variable=value
と等価です。これは mysqld 変数で使用される形式です。

client グループは、全ての MySQL クライアント(mysqldは除)に対してオプションを定義します。これはサーバーに接続する際に使用するパスワードを指定できるグループです。
(この場合、オプションファイルは自分だけが読み書きできるようにしよう)

オプションや値の善後にある全てのブランク文字は自動で取り除かれる。値として、\b、\t、\n、\r、\\、\sのエスケープシーケンスが使用できます。

オプションファイル例:

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
set-variable = key_buffer=16M
set-variable = max_allowed_packet=1M

[mysqldump]
quick

ユーザーオプションファイル例:

[client]
# The following password will be sent to all standard
MySQL clients
password=my_password

[mysql]
no-auto-rehash

ソースには「my-example.cnf」 という名前のサンプルファイルが「support-files」ディレクトリにある。もしバイナリ配布を使用しているなら、 「DIR/share/mysql」ディレクトリを探しましょう。
(ここで DIR は MySQL がインストールされたディレクトリのパス名で、通常は /usr/local/mysql)。この「my-example.cnf」 ファイルを自分のディレクトリに 「.my.cnf」 という名前でコピーして使用できます。

MySQL プログラムにオプションファイルを読ませないようにするには、コマンドラインの一番最初に --no-defaults を書きます。これはオプションの最初でないと有効になりません。どのオプションが定義されているか確かめるには、--print-defaults を最初のオプションに指定します。


MySQLの開始

MySQLを起動する場合、mySQLを直接使用しないでsafe_mysqldをバックグラウンドで使用したほうが良いでしょう。safe_mysqldスクリプトは、mysqldを起動したあとにmysqldが稼動しつづけているかチェックし、MySQLが落ちたら、自動的に再起動を行ってくれます。

許可テーブルのインストールとサーバーの開始:

・テーブルのインストール
# SRCDIR/scripts/mysql_install_db

上記コマンドで、必要なテーブルがインストールされる。これはインストール後、1回だけ行います。

MySQL サーバーの起動:

# BINDIR/safe_mysqld &

サーバーが接続を受け付けるか確認:

# BINDIR/mysqladmin version
# BINDIR/mysqladmin variables

mysqladmin version の出力はインストールプラットフォームとMySQLのバージョンを出力する。mysqladmin の使用方法は、--help オプションで起動することにより表示されます。

サーバーをシャットダウン:

# BINDIR/mysqladmin -u root shutdown

サーバーをリスタートするには、safe_mysqld か mysqld を直接実行します。

# BINDIR/safe_mysqld --log &


簡単なテスト方法

いくつかの簡単なテストでサーバーが動いているか確認できます。

# BINDIR/mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
+-----------+

# BINDIR/mysqlshow mysql
Database: mysql
+--------------+
| Tables |
+--------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+--------------+

# BINDIR/mysql -e "select host,db,user from db" mysql
+------+--------+------+
| host | db | user |
+------+--------+------+
| % | test | |
| % | test_% | |
+------+--------+------+


ベンチマークテスト

他のプラットフォームで MySQLのパフォーマンスを比較するために「bench」にベンチマークがあります。「bench/Results」ディレクトリには、他のデータベースやプラットフォームでベンチを実行した結果があります。全てのテストを実行するには、以下のようにします。

# cd bench
# ./run-all-tests

「tests」サブディレクトリでテストすることも可能です。例えば、「auto_increment.tst」の実行は以下のようにします。

# BINDIR/mysql -vvf test < ./tests/auto_increment.tst

これの結果は「./tests/auto_increment.res」ファイルに書き出されます。

RPM のソース配布には含まれますが、バイナリ配布には「sql-bench」ディレクトリがありません。この場合、ベンチマークをインストールする必要があります。 MySQL 3.22 のバイナリ配布から、「mysql-bench-VERSION-i386.rpm」という名前で RPM パッケージを作っており、これにはベンチマークのデータとコードが含まれます。

関連記事