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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

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

PHP

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

795閲覧

mysql外部接続不可

starsecond

総合スコア13

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

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

PHP

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1グッド

1クリップ

投稿2020/01/09 08:47

PHP7.1でローカルで作成したWEBページをAWSのサーバ上に移行しようと考えています。
AWSのサーバ上でWEBページ自体は表示されますがMysqlへの接続が出来ません。
ローカル環境(XAMPP)ではCドライブにインストールしたMysqlに接続できるのですが、AWS上のMysqlにはphpから接続できません。

やってみた手順を記載します。

1)EC2でインスタンスを作成し、セキュリティグループ設定
【タイプ】-【プロトコル】-【ポート範囲】-【ソース】
HTTP-TCP-80-0.0.0.0/0
HTTP-TCP-80-::/0
SSH-TCP-22-0.0.0.0/0
MYSQL/Aurora-TCP-3306-0.0.0.0/0

2)TeratermからSSH接続

3)sudo yum install php71でphp7.1をインストール(同時にApacheもインストール)

4)同じく sudo yum install mysqlでmysqlをインストール

5)mysqlに接続し、データベースとテーブルを作成(DB名:Customers、テーブル名:company)

6)ローカル環境(XAMPP)でmysql(c:)に接続するテストファイルを作成(test.php)→接続OK (⑨の構文)

7)sudo chown -R ec2-user /var/www/htmlで権限付与

8)試しに/var/www/html上でindex.phpファイルを作成し、中身をphpinfo()だけにしてブラウザからEC2インスタンスのIP直打ちでini表示OK

9)TeratermのSSH SCPから、/var/www/html へphpファイル(test.php)送信

【test.phpの中身】

<?php $dsn = 'mysql:dbname=Customers;host=127.0.0.1;charset=utf8;'; $user = 'root'; $password = 'パスワード'; try{ $pdo = new PDO($dsn, $user, $password); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT * FROM company"; $stm = $pdo->prepare($sql); $stm->execute(); $result = $stm->fetchAll(PDO::FETCH_ASSOC); foreach($result as $row){ echo $row['companyname']; echo '<br>'; } $pdo=null; } catch (PDOException $e){ echo '接続に失敗しました。'; echo 'Error:'.$e->getMessage(); exit(); } ?>

10)ブラウザからEC2インスタンスのIP/test.phpでアクセスすると真っ白な画面でエラーメッセージもなし

【わからないこと】
mysql外部接続やセキュリティなどを付け加えて検索したところ、my.cnfのbind-addressを変更すると書いてあるがmy.cnfを確認してもbind-addressがない

以下my.cnf(シャープは文字が大きくなるので全角に変換)
―――
[ec2-user@ip-**** etc]$ cat my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[ec2-user@ip-**** etc]$
―――

【試したこと】
mysql内で以下コマンドで外部接続許可設定をした
grant all privileges on . to root@"%" identified by 'PASSWORD' with grant option;

まだphpとmysqlを二カ月くらいしか触っていない初心者です。
原因と対処法等をお教え頂けますと幸いです。

【Mysqlバージョン】
mysql --version
mysql Ver 14.14 Distrib 5.7.28, for Linux (x86_64) using EditLine wrapper

【phpバージョン】
php -v
PHP 7.1.33 (cli) (built: Oct 31 2019 17:36:04) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

【Apacheバージョン】
httpd -v
Server version: Apache/2.4.41 (Amazon)
Server built: Oct 15 2019 22:21:35

DrqYuto👍を押しています

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

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

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

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

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

yu_1985

2020/01/09 09:02

データベースとテーブルを作成したと書いてありますが、データは入れましたか?
starsecond

2020/01/09 09:05

はい、入っています。 ローカル環境(XAMPPとC:のmysql)では表示されます。
yu_1985

2020/01/09 09:11

/var/log/mysqld.log になにか出てませんか? また、Apacheのエラーログにはなにか出てませんか?
starsecond

2020/01/09 09:22

ブラウザから該当ページへアクセスした後、/var/log/mysqld.logをcatで確認しましたが該当時間のログは出ていませんでした。 最後のログは、2020-01-09T05:33:03.810091Z 8 [Note] - 【IPアドレス】 になっています。 Apacheのエラーログはどこから確認できますか?
starsecond

2020/01/09 09:28

すいません、確認しました。 PHP Fatal error: Uncaught Error: Class 'PDO' not found in /var/www/html/test.php:9\nStack trace:\n#0 {main}\n thrown in /var/www/html/test.php on line 9 となっています。
guest

回答2

0

ベストアンサー

Class 'PDO' not found

なのでphp-pdoが入っていないのではないでしょうか。
OSが何かわかりませんが、php-pdoとphp-mysqlあたりを入れてみてください。

投稿2020/01/09 09:59

yu_1985

総合スコア7447

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

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

starsecond

2020/01/10 03:23

sudo yum install php-pdoでインストールしようとすると競合エラーが出たので一旦phpを全てアンインストールしてinstall php71*で再インストールしたら繋がりました! ありがとうございましたm(_ _)m
guest

0

ポートを開けるのは当然ですが、MySQL側の設定も必要になります。
/etc/mysql/mysql.conf.d/mysqld.cnfの

# bind-addressをコメントアウト bind-address = 127.0.0.1 コード

投稿2020/01/09 09:15

homu_homu_ai

総合スコア96

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

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

starsecond

2020/01/09 09:37

回答ありがとうございます。 /etcの中にmysqlがなく、my.cnfしかないのは問題ですか?
homu_homu_ai

2020/01/09 09:38

パスが異なるのは、セットアップ時の設定なので、気にしなくていいと思います。 my.cnfが対象のものになります。
starsecond

2020/01/09 09:44

my.cnfの中にbind-addressがないのですが、手動で追加してもよいのでしょうか。 my.cnfの中身は以下となります。 ――― [ec2-user@ip-**** etc]$ cat my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mysqld according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [ec2-user@ip-**** etc]$ ―――
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問