2012-03-06 9 views
4

PHP接続ファイルで自分のRDSインスタンスを接続しようとしています。AmazonでRDSをPHPに接続

これは私が私のファイルに持っているものです。

define('DB_SERVER', 'localhost'); 
define('DB_USERNAME', 'User Name'); 
define('DB_PASSWORD', 'Password'); 
define('DB_DATABASE', 'DATABASE'); 

$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error()); 
$database = mysql_select_db(DB_DATABASE) or die(mysql_error()); 

私はきたものを、私のRDSインスタンス・ユーザーと(RDSもの)、URL、ユーザー名とパスワード、私のエンドポイントではlocalhostを置き換えるとパスとデータベース名インスタンスを作成したときに設定されます。しかし、それは動作していないようです。

私には気づいていない、またはそれを動作させるべきことがありますか?

+0

Amazon RDSはMySQLとOracle Databaseの両方をサポートしているため、MySQLデータベースは確実ですか? –

+0

と私はあなたに役立つより多くの情報が必要と思います。 –

+0

RDSへの着信接続を受け入れるために3306ポートを開くことができます。 – cyberrspiritt

答えて

8

いくつかのアイデア:

  • それは動作するはずです、インスタンスの実際のIPを使用してみてください。
  • DBインスタンスへのアクセスを許可しましたか?
  • あなたのRDSインスタンス正しくセットアップへGet Started with Amazon RDSを見てしたいことがあり
12

RDSインスタンスを使用すると、常にホストのエンドポイントを使用し、それらに接続静的IPアドレスを持っていません。たとえば:

database1.jlsdfjhgsdf.us-east-1.rds.amazonaws.com

ルート・データベース・アカウント以外のユーザー名とインスタンスに接続している場合は、あなたが付与する必要がありますユーザー特権。

セキュリティグループの設定を確認してください。 Amazonの別のEC2インスタンスから接続する場合は、そのセキュリティグループを接続する必要があります。 AWSの外部から接続しようとする場合は、アクセスするIPアドレスをホワイトリストに登録する必要があります。

+2

[RDS&PHP](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_PHP.rds.html) – Jon

1

私は最近、これも多くの問題を抱えていましたが、修正することができました。私のセキュリティグループ(RDSとEC2)が互いに許可していることを確認しました。ターミナルからスクリプトを実行し、ターミナルからもデータベースに接続できましたが、スクリプトを実行してブラウザからMySQLに接続することができませんでした。それは私がmysqlサーバをインストールしていないことが判明しました。それをインストールしてからhttpdとmysqldを再起動したのは魅力的でした。

この記事では、mysql-serverのインストールとサービスの起動/再起動を私に導いてくれました。それが役に立てば幸い! - http://www.rndmr.com/amazon-aws-ec2-easy-web-serverset-up-guide-with-a-mac-and-coda-2-256/

0

node-mysqlを使用して自分のDBインスタンスに接続しようとしていました。 RDSが私に提供したエンドポイントがDNSルックアップを実行したことがわかりました。それをフォローし、そのURLをURLに変更しました。それまではコマンドライン経由でmysqlに接続することしかできませんでした。ルックアップ後に結果のエンドポイントに変更したとき、node-mysqlは最終的に接続することができました。

4

PHPを使用してEC2 ApacheサーバーにRDS MySQLインスタンスを接続しようとしているときに同様の問題が発生しました。 奇妙なことに私はCLIを介して接続を確立することができます - 一度mysqlを実行している状態では、ログインしたユーザ、ポート、サーバ名などを知らせます。 判明いくつかのAMIイメージは持っているSELinuxの強制 - この紳士(http://www.filonov.com/2009/08/07/sqlstatehy000-2003-cant-connect-to-mysql-server-on-xxx-xxx-xxx-xxx-13/

その他の点で指摘したようにネットワーク要求を送信カントApacheサーバを意味する:

  • は必ず受信ポートは、あなたのRDS DB用に設定されていることを確認

    MySQLでは
  • は必ずRDS IPとして接続するエンドポイントの文字列を使用localhostに対立するものとして、ホストが「%」に設定されていることを確認してください変更
1

Click here on the Menu (orange).

すべての着信接続を受け入れます。

+0

これは大規模なセキュリティ上のリスクです。リモート接続はホワイトリストのIPアドレスにロックする必要があります。 – Steven

0

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateDBInstance.htmlのチュートリアルに従うと、ec2(apache + php server)とRDS(MySQLサーバー)の接続に問題がありました。

ガイドラインで一重引用符を使用しているときに、接続値を指定するときに二重引用符を使用して解決しました。

define('DB_SERVER', "localhost"); 
define('DB_USERNAME', "User Name"); 
define('DB_PASSWORD', "Password"); 
define('DB_DATABASE', "DATABASE"); 
関連する問題