(10/12 追記)
現在、以下実行しています。
MySQL側でrequire SSLを実行しており、ApacheではSSL接続していなかったために、Access deniedが発生しているのではないかと考えています。
そのため、ローカルで実行しているApacheにおいても、SSL接続の環境を整えた上で正常に接続できるか改めて確認してみたいと思っています。
前提
よろしくお願いいたします。
現在、Apacheでの開発環境の構築段階で権限エラーが発生してしまいました。
おそらくApacheの仕様や設定によるものかと思いますので、何を考えれば良いか、ご教授いただけますと幸いです。
[エラーが発生した環境]
Windows10
Apache 2.4
PHP 8
ローカルのApache環境からPHPを用いて外部サーバーのデータベースへアクセスした所、access deniedされてしまいました。
発生している問題・エラーメッセージ
[PCの名前] Fatal error: Uncaught mysqli_sql_exception: Access denied for user 'hogehoge'@'hugahuga' (using password: YES) in C:\Apache24\htdocs\piyopiyo.php:20 Stack trace: #0 C:\Apache24\htdocs\piyopiyo.php(20): mysqli->__construct() #1 {main} thrown in C:\Apache24\htdocs\piyopiyo.php on line 20
該当のソースコード
PHP
1<?php 2echo gethostname(); 3$mysqli = new mysqli(ホスト名、ユーザー名、パスワード、データベース名、ポート); 4if ($mysqli->connect_error) { 5 echo $mysqli->connect_error; 6 exit(); 7} else { 8 $mysqli->set_charset("utf8"); 9} 10?>
httpd.conf
1ServerName localhost:80 2(関係があるかは分かりませんが…)
VPS側で、ポート開放、MySQLでのユーザー作成と権限付与は行っています。
ただ、単純にパソコンのグローバルIPアドレスを指定しているため、Apache上では別のものを指定しなければならないのでしょうか。
想定としてはこれを考えているものの、gethostname();でのホスト名の取得を試みましたが、パソコンの名前が表示されるばかりで上手くいきませんでした。
エラーが発生しているPCのローカルからシェルで直接データベースにアクセスさせた場合は正しく接続されますから、ログイン情報に誤りがないと考えており、PHP上での権限エラーが発生している状況です。
実現したいこと
開発環境のPHP上で、外部VPSにあるデータベースにアクセスさせたいと考えています。
考えるに、Apache上では別のホストが割り振られるのではないかと考えています。
VPS側ではパソコン本体のグローバルIPアドレスを指定して許可をしているのですが、それとはまた違ったホストが割り振られるのでしょうか?
これに関しては、PHP上でgethostname();を実行したところ、単にコンピュータの名前が表示されるだけで、ホスト名として有効なもの(グローバルIPアドレスに変換できるもの?)は表示されませんでした。
試したこと
gethostname();で、ホスト名の取得を試みましたが、上手くいきませんでした。
これ以上何を調整すべきか分からなくなってしまいましたので、アイデアをお貸しいただけると非常に助かります。
何卒よろしくお願いします。
(10/12 追記)
現在、以下実行しています。
MySQL側でrequire SSLを実行しており、ApacheではSSL接続していなかったために、Access deniedが発生しているのではないかと考えています。
そのため、ローカルで実行しているApacheにおいても、SSL接続の環境を整えた上で正常に接続できるか改めて確認してみたいと思っています。
回答1件
あなたの回答
tips
プレビュー