Rumble-JPプロジェクトでのMySQL設定方法

Abstract

ここでは本システムに必要になるMySQLの設定について、Linuxを用いている人向けに説明します。


Table of Contents
Introduction
MySQLの設定

Introduction

このドキュメントについて

ここでは本システムに必要になるMySQLの設定について、Linuxを用いている人向けに説明します。

このドキュメントの作成者はkojionger です。


免責事項

本ドキュメントの情報はご自身の判断に基づき利用してください。 作成者及びRumble-JPプロジェクトは本ドキュメントの内容に関するいかなる責任も負いません。


MySQLの設定

MySQLの紹介

MySQLはオープンソースのデータベースシステムです。 特徴として、他のデータベースソフトと比較して高速なこと、 クライアント・サーバシステムを用いていること、マルチスレッドであることです。


Linuxでのインストール

本システムではinnoDB形式のテーブルを扱うので MySQL-Maxがインストールされている必要があります。 MySQL単体だけでは動きません。

MySQLのダウンロード先

以降Ver 3.23.55 を、Kondara2.1にインストールする物として進めます。Kondara2.1にはMySQL-Maxがインストールされていません。そのためMySQLを最新のものに入れ替えます。

上記サイトの Linux x86 RPM downloads から

MySQL-3.23.55-1.i386.rpm
MySQL-Max-3.23.55-1.i386.rpm
MySQL-bench-3.23.55-1.i386.rpm
MySQL-client-3.23.55-1.i386.rpm
MySQL-devel-3.23.55-1.i386.rpm
MySQL-shared-3.23.55-1.i386.rpm

を全てダウンロードしてください。

RPMによるインストールは次のようにするだけです

shell>su
shell>rpm -ivh MySQL-*

Linux Squareの記事にはさらに詳しいインストール方法やソースからのインストール方法、インストール後のセキュリティーに関する設定が書かれています。

Note

配布されているバイナリのほうが、自分でソースをコンパイルしたものより、MySQL自体の実行速度が速い(多くの場合は)そうです。(コンパイルの際最適化が施されているためらしい。)RPMでインストールすることをお勧めします。


MySQLの動作確認

サービスの開始コマンド

ルートになって

shell>su
shell>mysqld -uroot

とコマンドを打ちます。

動作の確認コマンド

shell>mysqladmin -uroot ping                                                                                  ~
mysqld is alive

ここで動作が確認(mysql is alive)できたら一旦終了させて次に進みます。

サービス終了コマンド

shell>mysqladmin -uroot shutdown   

my.cnfの書き換え

RPMでインストールすると データベースの保存先は"/var/lib/mysql"になっているはずです。 以降このディレクトリをMySQLのホームディレクトリとして話を進めます。

/var/lib/mysqlに"ibdata"と"iblogs"というディレクトリを作成します。

shell>mkdir /var/lib/mysql/ibdata
shell>mkdir /var/lib/mysql/iblogs

MySQLの設定ファイル雛形等は "/usr/share/mysql/" 以下にあります。 その中にある "my-small.conf"を "/etc/my.cnf"にコピーして, さらに以下の様に書き換えてください。

# Example mysql config file for small systems.
#
# This is for a system with little memory (<= 64M) where MySQL is only used
# from time to time and it's important that the mysqld deamon
# doesn't use much resources.
#
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /var/lib/mysql) or
# ~/.my.cnf to set user-specific options.
#
# One can in this file use all long options that the program supports.
# If you want to know which options a program support, run the program
# with --help option.

# The following options will be passed to all MySQL clients
[client]
#password	= your_password
port		= 3306
#socket		= /var/lib/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
default-character-set=sjis				←追加
port=3306
#socket		= /var/lib/mysql/mysql.sock
skip-locking
set-variable	= key_buffer=16K
set-variable	= max_allowed_packet=1M
set-variable	= thread_stack=64K
set-variable	= table_cache=4
set-variable	= sort_buffer=64K
set-variable	= net_buffer_length=2K
server-id	= 1

# Uncomment the following if you want to log updates
#log-bin

# Uncomment the following rows if you move the MySQL distribution to another
# location
basedir = /var/lib/mysql              ←"#"を取って"/var/lib/mysql"と書き換える
datadir = /var/lib/mysql                             ←"#"を取って"/var/lib/mysql"と書き換える


# Uncomment the following if you are NOT using BDB tables
#skip-bdb

# Uncomment the following if you are using Innobase tables
innodb_data_file_path = ibdata1:10M:autoextend	←"#"を取って"10M:autoextend"と書き換える
innodb_data_home_dir = /var/lib/mysql/ibdata    ←"#"を取って"/var/lib/mysql/ibdata"と書き換える
innodb_log_group_home_dir = /var/lib/mysql/iblogs ←"#"を取って"/var/lib/mysql/iblogs"と書き換える
innodb_log_arch_dir = /var/lib/mysql/iblogs	←"#"を取って"/var/lib/mysql/iblogs"と書き換える
set-variable = innodb_mirrored_log_groups=1		←"#"を取る。
set-variable = innodb_log_files_in_group=3		←"#"を取る。
set-variable = innodb_log_file_size=5M		←"#"を取る。
set-variable = innodb_log_buffer_size=8M		←"#"を取る。
innodb_flush_log_at_trx_commit=1			←"#"を取る。
innodb_log_archive=0				←"#"を取る。
set-variable = innodb_buffer_pool_size=16M		←"#"を取る。
set-variable = innodb_additional_mem_pool_size=2M	←"#"を取る。
set-variable = innodb_file_io_threads=4		←"#"を取る。
set-variable = innodb_lock_wait_timeout=50		←"#"を取る。

[mysqldump]
quick
set-variable	= max_allowed_packet=16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
set-variable	= key_buffer=8M
set-variable	= sort_buffer=8M

[myisamchk]
set-variable	= key_buffer=8M
set-variable	= sort_buffer=8M

[mysqlhotcopy]
interactive-timeout


MySQL-Maxの動作確認

サービスの開始コマンド

ルートになって

shell>su
shell>mysqld-max -uroot

とコマンドを打ちます。正常に設定がされていれば、データファイルを作るため、少しの間時間がかかります。

サービスを終了させるには以下のように打ち込んでください。

shell>mysqladmin -uroot shutdown   

Note

MySQLの起動時のエラーはMySQLホーム以下の*****(マシン名).errファイルに詳細が記述されます。 うまく起動しないときは、まずそのファイルをよく読んでみてください。


ユーザーの登録

Caution

この作業はBUILD中に自動で行うのでやらないでも構いません。

動作を確認したら

shell>mysql -uroot

mysql> create database rumblejp;
mysql> grant all privileges on rumblejp.* to rumbleuser@localhost identified by 'robo';

Note

ここで"rumbleuser"はRumble-JPシステムがMySQLを扱うときのユーザ名、"robo"はパスワードです。 以下同様に読み替えて下さい。

以上でMySQLの設定を全て完了します。


トラブルのフォロー

BUILD中に

shell> ant setup-all-linux

     [java] java.sql.SQLException: General error: Access denied for user: 'root@
localhost.localdomain' to database 'rumblejp'

と文句を言われたら

mysql> grant all on *.* to root@localhost.localdomain;
mysql> grant all on rumblejp.* to rumbleuser@localhost.localdomain by identified by 'robo';

などとやってみてください。


簡単なMySQL文

テーブルhoge選ぶ

mysql>use hoge;

hogeの中身見る

mysql>select * from hoge;

参考サイト