実現したいこと
別サーバのMySQLに接続してページ表示を行うWEB環境を、現在のサーバから別サーバに移設したい。
前提
PHP、apacheで動作しているWEB環境を、現在のサーバから別サーバに移設したい。
DB(MySQL)はページとは別のサーバに設けていて、PDOを用いてアクセスしています。
開発作業時は、同ホストに別名DBを準備して、既存のWEB環境も同じ場所に別名で丸コピ。
あとはapache設定やhtaccess変更などのほか、DBアクセス関連はWEB環境の参照DB名の定義を作ったDB名に変更するだけで、DB参照、ページ表示は行えています。
別サーバへの移設作業でも、同様の作業を行ったのですが、URLにアクセスしたところ、ユーザ名誤りによりPDFのコンストラクタで例外が発生してしまっているのが現状になります。
発生している問題・エラーメッセージ
例外内容
exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'XXXXXXr'@'YYYYYYYY' (using password: YES)'
該当のソースコード
PHP
1define("DB_HOST", "ホスト名"); 2define("DB_NAME", "DB名"); 3define("DB_USER", "DBユーザ名"); 4define("DB_PASS", "DBパスワード"); 5 6$dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8'; 7$db_user = DB_USER; 8$db_pass = DB_PASS; 9 10$dbh = new PDO($dsn , $db_user, $db_pass);
※定義は別ファイルであったり、処理も実際にはクラスのコンストラクタで実施しているもので、変数はクラスのプロパティであったりなどの違いはありますが、実質やっていることはこの内容になります。
試したこと
最初、別サーバに配置して表示を試みた時は、PDOでアクセスに失敗していました。
SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'XXXXXXX' (10061)
こちらについては、実際にサーバからping、sshで確認をとったところ、sshのフィンガープリントで引っかかっており、そちらについて解消させた結果、アクセスはするようになりました。
そして現在になります。
私のPCからsshでDBサーバにアクセスし、NavicatでDB接続する際には、自身のユーザでサーバアクセスをして、NavicatのDB接続設定のユーザ名はサーバアクセスした名前に設定しています。
「ssh XXXXXX@AAA.BBB.CCC.DDD」のXXXXXXですね。
そこを考えますと、移設先のサーバでPDO実行時のDBサーバアクセスに使用しているユーザが、コードで設定しているDBユーザ名とは異なるものになっているのではないかと考えています。
サーバのユーザとは?と調査をして、以下のようなコマンドを実行してみたりはしましたが、こちらについてはそのサーバにアクセスできるユーザの一覧が出るだけのものでした。
「cat /etc/passwd|sed -e 's/:.*//g'」
他、現在引き続き調査中になります。
補足情報(FW/ツールのバージョンなど)
PHP:5.4.16
apache:2.4.6
追記(2023/5/11 10:30)
そもそもそのサーバからmysql接続ができるのかの確認を試みました。
mysql -h ホスト名 -u ユーザ名 -p
現行のサーバでうまく接続できることを確認したのち、移設先のサーバで同様のことを行ってみたところ、mysqlコマンドがありませんでした。

回答1件
あなたの回答
tips
プレビュー