前回で、Webサーバと PHP が使える状態になりました。後は、MySQL です。
01MySQL はインストールされているのか?
Plamo のパッケージ管理は、installpkg
やremovepkg
を使って行い、インストールされたパッケージは、/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 で動くかです。一度インストールしてみるしかありませんね。
次回です。