MySQL/MariaDBでの運用
以下を踏まえた上でご利用ください。
- 外部DB運用はDBモジュールロードに時間がかかります。先に高速動作を設定してください。
- 標準のText-DBは、よほど多くの記事を扱わない限り十分なパフォーマンスがあります。
- DBエンジンは InnoDB をご利用ください(MyISAMは非推奨です)。
DebianのMySQLがMariaDBに置き換わったので、現在はMariaDBでのみ動作確認を行っています。
準備
adiaryをインストールするサーバに、MySQLのクライアントライブラリ(DBD::mysql)をインストールしてください。
# apt-get install libdbd-mysql-perl
設定
まずMySQLに、adiary用のアカウントと、そのアカウントからフルアクセス可能なデータベースを作成してください。
その際、データベースの文字コード(やクライアントコード)はutf8で統一してください。
次に 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',(略))>
サーバの環境構築メモ
- MySQL をインストールする。
# apt-get install mysql-server
- my.confを設定する(最近は設定しなくてもInnoDBがデフォルトになっているようです)。
[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_general_ci default-storage-engine=InnoDB
- MySQL デーモンを起動する。
# /etc/init.d/mysqld start
- MySQL に接続する。
# mysql -u root # mysql -u root -p ←パスワード指定あり
- MySQLコンソールで rootパスワード を設定する
mysql> use mysql; mysql> select host,user,password from user; ←確認 mysql> select host,user,authentication_string from user; ←MySQL 8 mysql> ALTER USER root@localhost IDENTIFIED BY 'ROOT-PASS';
- adiary用のデータベース、ユーザーを作成
mysql> CREATE DATABASE adiary DEFAULT CHARSET=utf8mb4; mysql> CREATE USER adiary@localhost IDENTIFIED BY 'ADIARY-PASS'; mysql> GRANT all privileges ON adiary.* TO adiary@localhost;
メモ
mysql> show tables; mysql> show databases; mysql> show variables like 'char%'; mysql> show create table TABLE_NAME; mysql> show indexes from TABLE_NAME; mysql> SELECT table_name,engine FROM information_schema.tables WHERE table_schema = 'DB NAME'; mysql> SELECT user,host,password FROM mysql.user;