【Plamo6.1】MySQL(MariaDB)を立ち上げ、Apache+PHP+MySQL の環境を整える

【Plamo6.1】MySQL(MariaDB)を立ち上げ、Apache+PHP+MySQL の環境を整える

前回で、Webサーバと PHP が使える状態になりました。後は、MySQL です。

01MySQL はインストールされているのか?

Plamo のパッケージ管理は、installpkgremovepkgを使って行い、インストールされたパッケージは、/var/log/package以下に

PACKAGE NAME:     mariadb-10.1.10-x86_64-P1
COMPRESSED PACKAGE SIZE:     30049 K
UNCOMPRESSED PACKAGE SIZE:     237300 K
PACKAGE LOCATION: /var/adm/mount/plamo/05_ext/mariadb-10.1.10-x86_64-P1.txz
PACKAGE DESCRIPTION:
mariadb: MariaDBデータベースサーバ
mariadb:
mariadb: MariaDBは,Oracleに買収されたMySQLを見限った元々の開発者たちが
mariadb: 新しく作りあげた,MySQLと互換性を持ったデータベースサーバです.
mariadb:
mariadb:
mariadb:
mariadb:
mariadb:
mariadb:
mariadb:
FILE LIST:
opt/
opt/mariadb/
opt/mariadb/README
opt/mariadb/CREDITS
opt/mariadb/COPYING
opt/mariadb/COPYING.LESSER

のようにインストールデータが保存されています。

上のファイルは、MySQL 互換の MariaDB のパッケージです。確かに、/opt/mariadb/以下にインストールされています。

# ls -l /opt/
合計 8,192
drwxr-xr-x  5 root root  4,096 12月  8日 2014年 kde/
drwxr-xr-x 10 root mysql 4,096  2月  5日 2016年 mariadb/
lrwxrwxrwx  1 root root      7  8月  2日  13:18 mysql -> mariadb/

MySQL は、MariaDB のシンボリックリンクになっています。なるほど。

02MariaDB の起動スクリプト

Plamo の起動スクリプトは、/etc/rc.d/以下に収められており、/etc/rc.d/rc.Mから/etc/rc.d/init.d/以下にある実行ファイルが実行されます。

MariaDB の起動スクリプトもその中にあります。ただ、実行ファイルになっていませんので実行権限を与えます。

# ls -l /etc/rc.d/init.d/mariadb
-rw-r--r-- 1 root root 12,564  2月  5日 2016年 /etc/rc.d/init.d/mariadb


# chmod u+x /etc/rc.d/init.d/mariadb
# ls -l /etc/rc.d/init.d/mariadb
-rwxr--r-- 1 root root 12,564  2月  5日 2016年 /etc/rc.d/init.d/mariadb*

起動してみましょう。

# /etc/rc.d/init.d/mariadb start
Starting MySQL. SUCCESS!


# mysqlshow
+--------------------+
|     Databases      |

+--------------------+
| information_schema |

| mysql              |

| performance_schema |

| test               |

+--------------------+

立ち上がりました!

03MySQL(MariaDB)の初期設定

root でログインしてみます。初期状態ではパスワードは設定されていませんのでエンターで入ります。

# mysql -u root -p mysql
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.1.10-MariaDB Source distribution
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [mysql]> select host,user,password from user;
+-----------+------+----------+
| host      | user | password |

+-----------+------+----------+
| localhost | root |          |

| vaio      | root |          |

| 127.0.0.1 | root |          |

| ::1       | root |          |

| localhost |      |          |

| vaio      |      |          |

+-----------+------+----------+
6 rows in set (0.00 sec)

上が登録ユーザの一覧ですが、匿名ユーザを削除しておきます。

MariaDB [mysql]> delete from user where user='';
Query OK, 2 rows affected (0.00 sec)


MariaDB [mysql]> select host,user,password from user;
+-----------+------+----------+
| host      | user | password |

+-----------+------+----------+
| localhost | root |          |

| vaio      | root |          |

| 127.0.0.1 | root |          |

| ::1       | root |          |

+-----------+------+----------+
4 rows in set (0.00 sec)

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

MariaDB [mysql]> set password for root@localhost=password('パスワード');
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> set password for root@vaio=password('パスワード');
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> set password for root@127.0.0.1=password('パスワード');
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> set password for root@'::1'=password('パスワード');
Query OK, 0 rows affected (0.00 sec)

04MySQL(MariaDB)接続確認

この MariaDB を PHP からどうやって使えばいいのでしょう? まずは、バージョンをみてみますと、

# mysql -V
mysql  Ver 15.1 Distrib 10.1.10-MariaDB, for Linux (x86_64) using readline 5.1

と 10.1 となっており、5系列は MySQL と完全互換のようですが、10系列はどうなんでしょう?

その場合、PHP からの接続に何を使うかということになりますが、MySQL 拡張モジュールが非推奨ということですし、そもそも入っていないわけですから、PDO_MySQL を使うことになります。PDO_MySQL を使って接続確認をしてみましょう。

PHP のマニュアルからの接続テストスクリプトで確認してみます。

<?php
$user = 'root';
$pass = 'パスワード';


try {
  // データベースに接続
  $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
  // 接続に成功
  print "接続成功!";
  $dbh = null;
} catch (PDOException $e) {
  print "エラー!: " . $e->getMessage() . "<br/>";
  die();
}
?>

(2016/9/12)追加

「エラー!: could not find driver」と表示されます。

pdo_mysql.soが組み込まれていないですね。

# find / -name "pdo_mysql.so"
/usr/lib64/extensions/no-debug-non-zts-20131226/pdo_mysql.so

にありますので、php.iniに以下を追加します。

; UNIX: "/path1:/path2"
include_path = ".:/usr/lib64/php:/usr/lib64/extensions/no-debug-non-zts-20131226
"
extension=pdo_mysql.so

Apache を再起動して、接続テストスクリプトを呼び出しますと、「接続成功!」と表示されますので OK です。

さて、これで Apache + PHP + MySQL の準備が整いましたが、問題は、一番の目的の Joomla! が PDO_MySQL で動くかです。一度インストールしてみるしかありませんね。

次回です。