オープンソースの CMS ツール concrete5 (5.3.3.1.ja) で使う MySQL ユーザーのパスワードに "@" が含まれていると、インストール時に 「データベースに接続出来ません」 とエラーになる。確かに "@" はユーザー名とサーバー名の区切り記号でもあるので微妙な文字と言えるが、phpMyAdmin では、同じユーザー名とパスワードで DB にアクセスできる。


ソースを見ると、MySQL ユーザーのパスワードは config/site.php 中で定数 DB_PASSWORD として定義され、concrete/controllers/install.php から呼び出される関数 db() (concrete/libraries/loader.php で定義) で、変数 $dsn に

$dsn = DB_TYPE . '://' . DB_USERNAME . ':' . DB_PASSWORD . '@' . DB_SERVER . '/' . DB_DATABASE;

と格納され、concrete/libraries/3rdparty/adodb/adodb.inc.php 中の関数 ADONewConnection() で処理されて行く過程が追える。しかし "@" が通るように何とか頑張る、と言うのは本質ではないので、素直に 「"@" を使わない」 のが、スマートな解決策だろう。

とりあえず concrete5 で利用する MySQL ユーザーのパスワードは、危ない記号は避けて英数字だけにしておくのが無難か (concrete5 上のユーザーのパスワードは、"@" も利用可能)。

Comments are closed.