質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
さくらのVPS

さくらのVPSは、さくらインターネット社が提供するVPS(仮想専用サーバー)です。高速なSSDの選択や複数台構成も可能。利用者に応じた柔軟なプランが用意されています。大規模システムにも対応可能なスケーラビリティを備えたホスティングサービスです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

775閲覧

ローカル環境でのApache上にて、PHPから外部サーバーにあるMySQLへのアクセスがAccess Deniedされてしまう。

siwasu1341

総合スコア2

さくらのVPS

さくらのVPSは、さくらインターネット社が提供するVPS(仮想専用サーバー)です。高速なSSDの選択や複数台構成も可能。利用者に応じた柔軟なプランが用意されています。大規模システムにも対応可能なスケーラビリティを備えたホスティングサービスです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2022/10/11 05:58

編集2022/10/12 14:33

(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接続の環境を整えた上で正常に接続できるか改めて確認してみたいと思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2022/10/11 06:01

MySQL が、IPアドレスでアクセス制限していることはないでしょうか?
siwasu1341

2022/10/11 06:04

ありがとうございます。 エラーが発生したPCのローカルからシェルを使ってMySQLへアクセスさせた場合は正常に接続することを確認しており、Apache-PHP上でのみ権限エラーが発生してしまいます。
guest

回答1

0

自己解決

原因が特定できましたので、受付終了します。
MySQL側でrequire SSLを実行しており、ApacheではSSLの設定をしていなかったために、Access deniedが発生していました。
解決策としては、ローカルでもSSL接続させる、もしくはMySQL側のrequire SSLを外す(非推奨)、のいずれかになると考えています。

投稿2022/10/12 05:33

siwasu1341

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問