my.cnfの設定項目(一部)

my.cnfの設定一覧を紹介しようと思います。


port = 3306
MySQLのポートを指定します。
上記は、ポートを"3306"と指定した場合の設定です。

bind-address = 127.0.0.1
サーバが複数のIPアドレスを持っている場合に、特定のアドレスでしか接続を受けないようにするという指定です。
上記は、ループバックアドレスを指定した場合の設定です。
これだと、ローカルから接続しか受け付けないので、MySQLの外部接続を拒否したりできると思います。

character-set-server=utf8
デフォルトの文字コードを設定します。
上記は、"utf-8"を指定した場合の設定です。

datadir=/var/lib/mysql
MySQLのデータディレクトリです。
上記は、"/var/lib/mysql"を指定した場合の設定です。

socket=/var/lib/mysql/mysql.sock
確認
file /var/lib/mysql/mysql.sock
/var/lib/mysql/mysql.sock: socket
MySQLのソケット通信で用いるファイルを指定します。
指定ディレクトリの書き込み権限が大事になります。
上記は、"/var/lib/mysql/mysql.sock"を指定した場合の設定です。

skip-character-set-client-handshake
クライアントが使用する文字コードの設定を一律にサーバーの文字コードの設定と同じにするということです。
変換自体は必要に応じて行われるみたいです。
調べてると、セキュリティに悪いみたいですね〜(参考サイト②)
また、DB毎、テーブル毎、接続毎に文字エンコーディングを個別に正しく指定すれば不要らしいです。

log-error=/var/log/mysqld.log
#警告メッセージを記録
log-warnings=1
MySQLのエラーログの出力する設定です。
上記は、エラーログを"/var/log/mysqld.log"にファイルに書き込む設定をしています。
また警告メッセージを含めて出力します。
起動時のエラーはこれを見ればわかります。

log = /var/log/mysql/query.log
または
general_log = 1
general_log_file = /var/log/mysql/mysql.log
クエリーログを出力します。
2つの書き方があるみたいです。出力されるログをみる限り違いはないです。
調べてたらログをテーブルに出力する方法もありました。(参考サイト④)

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
#秒指定
long-query-time=30
#Indexを指定していないクエリが実行された際にログ出力する
log-queries-not-using-indexes
#管理用コマンドの実行もスロー監視する
log-slow-admin-statements
スロークエリログを出力します。
上記は、"/var/log/mysql/slow.log"に出力した場合の設定です。
また30秒以上の処理時間を費やしたSQL文を記録するようになっています。

#同時接続数指定
max_connections = 64
#生成するスレッド数
thread_cache_size = 64
コメントにある通りです。
MySQLは接続ごとにスレッドが生成されるので、両方同数を設定しておいたほうが無難だと思います。
接続数だけ増やしても意図したようにならなかったとどこかのサイトに書いてありました。

key_buffer_size = 32M
max_allowed_packet = 1M
table_open_cache = 1024
tmp_table_size = 64M
max_heap_table_size = 64M
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 16M
query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 4M
クエリの接続に割り当てられるメモリです。
1スレッドがどれほどのメモリを使用するかなどを指定します。
これの設定値が、大きければ無駄なメモリ消費につながりますし、
少なければ処理がうまくテーブル情報が取得できないこともあるかもしれません。
詳細は、各自で調べてください。(投げやりですみません)
計算の参考サイト(⑤,⑥)があったので載せておきます。

quick
クエリをバッファしないで、直接標準出力に出力します。

max_allowed_packet = 16M
クライアントからサーバへ送ることができる最大のパケットサイズを指定します。
動画とか保存する場合など、ここがネックになるかもしれません。

auto-rehash
MySQLログイン時のSQL文の補完を行ってくれます。
SQL文の作成途中でカラム名を指定する際に活用です。
以下がタブを押した際に表示される例です。

mysql> selet * from use
use user.Reload_priv
user user.Repl_client_priv
user.Alter_priv user.Repl_slave_priv
user.Alter_routine_priv user.Select_priv
user.Create_priv user.Show_db_priv
user.Create_routine_priv user.Show_view_priv
user.Create_tablespace_priv user.Shutdown_priv
user.Create_tmp_table_priv user.Super_priv
user.Create_user_priv user.Trigger_priv
user.Create_view_priv user.Update_priv
user.Delete_priv user.User
user.Drop_priv user.authentication_string
user.Event_priv user.max_connections
user.Execute_priv user.max_questions
user.File_priv user.max_updates
user.Grant_priv user.max_user_connections
user.Host user.plugin
user.Index_priv user.ssl_cipher
user.Insert_priv user.ssl_type
user.Lock_tables_priv user.x509_issuer
user.Password user.x509_subject
user.Process_priv user_host
user.References_priv
これならカラム名の指定間違わなく行えます。
phpMyAdmin,CSEなどのGUIツール使えば必要ないかもしれませんが・・・


今回はここまです。
結構調べて疲れた・・・。途中投げやりな部分がありますが、そこらへんは我慢してください。
調べてた途中の副産物のリンクを張っておきます。
MySQLサーバにSSLで接続をする方法をあったので、参考サイト(⑦)に載せておきます。
skip-character-set-client-handshakeについてかなり詳しく解説している参考サイト(⑧)を載せておきます。
複数のMySQLサーバを起動という方法があったので、参考サイト(⑨)に載せておきます。


そろそろ本題入らんと期限間に合わない・・・
なんでMySQLの勉強してるんだろ・・・
目的はStrutsの学習のはず!軌道修正しましょ。
参考記事
MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.2.6 オプションファイルの使用
mysqlでskip-character-set-client-handshakeはもう使わないほうがいいと思われ | へぼい日記
http://www.limy.org/program/db/mysql/mysql_option.html
漢(オトコ)のコンピュータ道: MySQL 5.1のスロークエリログ
bne.jp
株式会社アンタス - 次の時代のマーケティングテクノロジーを
http://backslash.ddo.jp/wordpress/index.php/archives/247
http://goungoun.dip.jp/app/fswiki/wiki.cgi/debianetch?page=2007%2F04%2F23-01%A1%A2skip-character-set-client-handshake+%A4%CB%A4%C4%A4%A4%A4%C6#p2
MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.3.4 mysqld_multi — 複数の MySQL サーバーの管理