MySQLでの運用

以下を踏まえた上でご利用ください。

  • 外部DB運用はDBモジュールロードにとても時間がかかります。先に高速動作を設定してください。
  • 標準のText-DBはよくテストされていて、よほど多くの記事を扱わない限り十分なパフォーマンスがあります。

テストしていませんが、MariaDBでも動くのではないかと思います。*1

*1 : 動いても動かなくても試した方は動作報告頂ければ幸いです。

準備

adiaryをインストールするサーバに、MySQLのクライアントライブラリ(DBD::mysql)をインストールしてください。

# apt-get install libdbd-mysql-perl

設定

まずMySQLに、adiary用のアカウントと、そのアカウントからフルアクセス可能なデータベースを作成してください。

その際、データベースの文字コード(やクライアントコード)はutf8で統一してください*2

次に adiary.conf.cgiを設定します。

# テキストDBの場合
#<$DB = loadpm('DB_text', "<@data_dir>db/")>	←コメントアウト

# MySQL の場合(データベース名、ユーザー名、パスワード)
<$DB = loadpm('DB_mysql', 'database=adiary', 'adiary', 'test', {Pool=>1})>

ローカル以外のMySQLサーバに接続する場合のサンプル。

<$DB = loadpm('DB_mysql', 'database=adiary;host=mysql.example.com', (略))>
<$DB = loadpm('DB_mysql', 'database=adiary;port=12345',(略))>
<$DB = loadpm('DB_mysql', 'database=adiary;host=10.45.67.89;port=12345',(略))>

*2 : DB形式はMyISAMでも構いませんが、整合性チェックが効く InnoDB をお勧めします。最近は InnoDB でも十分速いです。

サーバの環境構築メモ

  1. MySQL をインストールする。

    # apt-get install mysql-server
    
  2. my.confを設定する(以下を変更します)。

    [client]
    default-character-set=utf8
    
    [mysqld]
    default-character-set=utf8
    character-set-server=utf8
    default-storage-engine=InnoDB
    
  3. MySQL デーモンを起動する。

    # /etc/init.d/mysqld start
    
  4. MySQL に接続する。

    # mysql -u root
    # mysql -u root -p	←パスワード指定あり
    
  5. MySQLコンソールで rootパスワード を設定する

    mysql> use mysql;
    mysql> select host,user,password from user;			←確認
    mysql> SET PASSWORD FOR root@localhost=PASSWORD('password');
    mysql> SET PASSWORD FOR root@your.host=PASSWORD('password');
    mysql> DELETE FROM user WHERE password='';
    
  6. adiary用のデータベース、ユーザーを作成

    mysql> CREATE DATABASE adiary DEFAULT CHARSET=utf8;
    mysql> GRANT all privileges ON adiary.* TO adiary@localhost IDENTIFIED BY 'password';
    

メモ

mysql> show tables;
mysql> show databases;
mysql> show variables like 'char%';
mysql> show create table table_name;
OK キャンセル 確認 その他