MySQL 5.1 をソースからインストールする手順メモ

環境&目標

  • CentOS 5
  • 実行ユーザはrootにしない
  • mysqlのデータを別のディレクトリに配置する

手順

実行ユーザを作成

  • 芸がないと思いつつ、そのまんまのユーザID。
# groupadd mysql
# useradd -g mysql mysql

データ配置ディレクトリ

# mkdir /var/mysqldata
# chown -R mysql.mysql /var/mysqldata

ビルド

  • ここでデータディレクトリ(--localstatedir)と実行ユーザ(--with-mysqld-user)を指定。
  • キャラクターセット(--with-charset)はutf8にしてみた。
  • sql-bench、docsは除外してみた。
# cd /usr/local/src
# tar zxvf mysql-5.1.29-rc.tar.gz
# cd mysql-5.1.29-rc
# ./configure --localstatedir=/var/mysqldata --with-charset=utf8 --with-mysqld-user=mysql \
  --without-bench --without-docs
# make
# make install

my.cnfを設置

  • 添付のサンプルを流用
# cp support-files/my-small.cnf /etc/my.cnf
  • 編集する。
    • datadir データ配置ディレクトリを指定
    • thread_stack なんか実行時にWarningが出るので、64K→128Kとした。意味はあとで調べよう。
    • /etc/my.cnf
[mysqld]
datadir = /var/mysqldata
thread_stack = 128K
  • データファイルの位置を変更した場合、datadirの記述は必須のようだ。記述しないと、下記エラーが発生し、mysqldは起動しない。
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

MySQL データ ディレクトリ 初期化スクリプトを実行

ここでもデータディレクトリ、ユーザを指定する。

# ./scripts/mysql_install_db --datadir=/var/mysqldata/ --user=mysql

起動確認

起動エラーにならず、接続できる(mysql> プロンプト表示)ことを確認する。

# /usr/local/bin/mysqld_safe &
# mysql

init.dに起動スクリプトをコピー

添付スクリプトをそのまま使う

# cp ./support-files/mysql.server /etc/init.d/mysql
# chmod 755 /etc/init.d/mysql

mysql ユーザ作成(おまけ)

mysql> grant all on test.* to testuser@localhost identified by 'testpass';

facebook slideshare rubygems github qiita