まだ重たいCMSをお使いですか?
毎秒1000リクエスト を捌く超高速CMS「adiary

2012/12/19(水)MySQL設定メモ

InnoDBでMySQLを運用することを前提に書きます。

my.cnfの設定

MySQL 5.5以降ならばInnoDBの新しいエンジンが入っているが、5.1.xの場合はプラグインとなっているのでそれを有効化する。

[mysqld]
ignore-builtin-innodb
plugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.so

また同時に、デフォルトエンジンとしてInnoDBの設定、及びutf8を設定する。

[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
default-storage-engine=InnoDB

mysqlコマンド

コマンドライン書式の例。

# mysql -u root -p
# mysql -u user -pPASS dbname
# mysql -h db-server.dummy.xxx -P 3306 -u user -pPASS dbname

DBとユーザーの作成

CREATE DATABASE dbname DEFAULT CHARSET=utf8;
GRANT all privileges ON dbname.* TO dbuser@localhost IDENTIFIED BY 'PASSWORD';
GRANT SELECT,INSERT,UPDATE,DELETE ON privileges ON dbname.* TO dbuser@localhost IDENTIFIED BY 'PASSWORD';

IPアドレス等を指定する場合は次のようにする。

書式意味
uname@localhostUNIXドメインソケット通信を許可
uname@127.0.0.1ローカルホスト(TCP/IP)を許可
uname@'%'全てのホストを許可
uname@192.168.1.12IPアドレス指定
uname@'192.168.%'IPアドレスが192.168.* のホストを許可

この他、Firawall(iptables)を設定するのはもちろんのこと、MySQLはhosts.allowも参照する

mysqld: ALL

ユーザー情報の確認

use mysql;
select host,user,password from user;

パスワード以外は直接書き換えれば良い。

パスワードは次のようにする。

SET PASSWORD FOR user@localhost=PASSWORD('password');
SET PASSWORD FOR user@your.host=PASSWORD('password');

文字コードの確認

show variables like 'char%';