○ MySQLのインストール

・xoopsサイト構築のためデータベースとして利用します
・mysql-5.1.68をソースからインストールし、設定しています
・CentOS6には、postfix依存のmysql-libsがインストールされています
・ここのサイトでは、sendmailに変更し、mysql-libsを除いています
・ALLFreeなライセンスでないので注意します
・datadirを/home/mysqlに変更しています
・make はメンテナンスマシンで行っています

・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:mysql-5.1.68.tar.gz (http://dev/mysql.com/)

○参照ファイル

パッケージの追加
最初の設定 (Xen)
opensslのインストール

○インストール環境

:OS CentOS 6.3
:selinux disabled or permissive
:インストール先  /usr/local/
:作業 ~/src
:言語 en_US.UTF-8
:ユーザー rootで実行

・メンテナンスの場合は一般ユーザから行います



○mysql-5.1.68

○ユーザmysqlの作成

uid/gid情報を参照します

[root@jupiter:~]
# groupadd -g 27 mysql
# useradd -M -u 27 -g 27 -d /home/mysql -s /sbin/nologin mysql
# mkdir /var/lib/mysql
# chown -R mysql:mysql /var/lib/mysql

○mysqlのインストール

・openssl-develを必要とします

# cd ~/src
[root@jupiter:~/src]
# tar zxvf mysql-5.1.68.tar.gz
# chown -R root:root mysql-5.1.68
# cd mysql-5.1.68
[root@jupiter:~/src/mysql-5.1.68]
# make distclean

・コンフィグシェルスクリプトを実効します
・同じディレクトリで実行します
mysql51cfg.sh (詳細別記)

# source mysql51cfg.sh
# make
# make uninstall
# make install
# cd ..
[root@jupiter:~/src]
# tar cf mysql-5.1.68-130205.tar mysql-5.1.68/
# bzip2 mysql-5.1.68-130205.tar

○キャッシュ情報の更新

・/etc/ld.so.conf.d/mysql.confに既述します
・mysql-5.0.xライブラリのso-versionは、(15) になっています
・mysql-5.1.xライブラリのso-versionは、(16) になっています

# cd ~
[root@jupiter:~]
# echo /usr/local/lib/mysql >> /etc/ld.so.conf.d/mysql.conf

・キャッシュの更新

# ldconfig
# ldconfig -p | grep mysql

○サーバ用my.cnfのコピー

・/usr/local/share/mysqlからmy-medium.cnfをコピーします
・configureで指定しないと/usr/local/etc/my.cnfになります

[root@jupiter:~]
# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf

○my.cnfファイルを修正します

/etc/my.cnf (詳細別記)

○MySQLシステムデータベースをつくります

・mysql_install_dbを実行します
・my.cnfを読み込んで/home/mysqlにデータベースが作られます
・/home/mysqlのユーザ・グループ・パーミッションを変更します
・mysql-5.0.Xの既存のDBを使う場合はmysql_install_dbを実行しない
下記参照

[root@jupiter:~]
# mysql_install_db

# chown -R mysql:mysql /home/mysql
# chmod 751 /home/mysql

○自動起動スクリプトの修正

・起動ファイルをコピーします

[root@jupiter:~]
# cp /usr/local/share/mysql/mysql.server /etc/init.d/mysql

:/etc/rc.d/init.d/mysql

紫色部分 変更

・省略

# Comments to support chkconfig on RedHat Linux
# chkconfig: 235 64 36
# description: A very fast and reliable SQL database engine.

・省略


○tcp_wrappersで制御します

・"--with-libwrap"オプション付の場合 /etc/hosts.allow、hosts.denyで制御します

:/etc/hosts.allow

ALL: 127.0.0.1
mysqld: 192.168.0. EXCEPT 192.168.0.21

:/etc/hosts.deny

ALL: ALL

○selinuxヘの対応 (selinuxが有効の場合)

:新規インストールファイルのselinuxラベルを修正

[root@jupiter:~]
# restorecon -Rv /etc
# restorecon -Rv /usr/local
# restorecon -RFv /home/mysql
# restorecon -Rv /var/lib

○mysqlの起動

:自動起動をonにし、mysqldを起動します

[root@jupiter:~]
# chkconfig --add mysql
# service mysql start

:rootパスワードを設定します

・linux管理者のrootではないので、パスワードは変えます
・フルドメイン名はmysqlを設置したサーバ名です
・/root/.bash_historyにパスワードが平文で記録されるので注意

[root@jupiter:~]
# mysqladmin -u root password 'xxxxxxxxxx'
# mysqladmin -u root -h earth.528p.com password 'xxxxxxxxxx'

○mysql-5.0.Xの既存のDBを使う

・既存ファイルのバックアップ
・mysql_upgrade を実行します(xxxxxxxxxxはmysql管理者[root]のパスワード)

[root@jupiter:~]
# cp -a /home/mysql /home/mysql-orig
# mysql_upgrade --password=xxxxxxxxxx

・省略

Running 'mysql_fix_privilege_tables'...
OK
# service mysql restart

○mysqlログのローテーション

・mysqlに付属の設定ファイルをコピーします

[root@jupiter:~]
# cp /usr/local/share/mysql/mysql-log-rotate /etc/logrotate.d

:/etc/logrotate.d/mysql-log-rotate (root root 644)

・mysqladminコマンドはmysql管理者のパスワードを要求します
・"mysqladmin flush-logs"でバイナリログを更新します
紫色部分 変更

/var/lib/mysql/*.log {
        #create 600 mysql mysql
        notifempty
        weekly
        rotate 4
        missingok
        #compress
    postrotate
        # just if mysqld is really running
        if test -x /usr/local/bin/mysqladmin && \
           /usr/local/bin/mysqladmin --defaults-extra-file=/root/.my.cnf ping &>/dev/null
        then
           /usr/local/bin/mysqladmin --defaults-extra-file=/root/.my.cnf flush-logs
        fi
    endscript
}

:/root/.my.cnf (root root 600)

・passwordを平文で設定するのでパーミッションに注意
・mysqldumpと共用するので[client]で使用出来るように設定します

[client]
user=root
password=xxxxxxxxxxxx

:logrotationの確認

・うまくいかない場合、設定ファイルを修正します
・var/lib/logrotate.statusにrotateした日付が設定されます

[root@jupiter:~]
# logrotate -fv /etc/logrotate.d/mysql-log-rotate

○/etc/cron.dailyのlogrotateでエラーになる場合

・mysql-log-rotateの移動

[root@jupiter:~]
# mv /etc/logrotate.d/mysql-log-rotate /etc

・/etc/cron.d に設定ファイルを置きます (ユーザ・グループ・パーミッションに注意)
・MAILTO="" はメールを送信しない設定です (デフォルトは実行者にメールを送信)
・日曜日の4時1分に logrotate を -f(force) オプションで実行します
・行末に改行を入れること

:/etc/cron.d/mysql (root root 644)

MAILTO=""
01 4 * * 0 root /usr/sbin/logrotate -f /etc/mysql-log-rotate



○簡単なmysqlの操作

・/root/.mysql_historyにパスワードが平文で記録されるので注意
・root (mysql管理者) でログインします

[root@jupiter:~]
# mysql -u root -p
password:← パスワードの入力

・データベースの作成 (例 xoopsdata)

mysql> create database xoopsdata;

・データベースに全権を持つユーザーの作成
 (例 xoopsdata,ユーザーuranus,パスワードyyyyyyyyyy)

mysql> grant all on xoopsdata.* to uranus@localhost identified by 'yyyyyyyyyy';
mysql> flush privileges;

・データベースの削除 (例 test)

mysql> drop database test;
mysql> flush privileges;

・匿名ユーザーの削除

mysql> delete from mysql.user where user='';
mysql> flush privileges;

・データベースの表示

mysql> show databases;

・ユーザーテーブルの表示

mysql> select host,user,password from mysql.user;

・ログアウト

mysql> exit;

○ Copyright(c) 528p.com All Rights Reserved.