web-dev-qa-db-ja.com

PHPMyAdminを使用してAmazon RDSを管理する

PHPMyAdminを取得してAmazon RDSインスタンスに接続できません。アクセスしようとしているこのデータベースにアクセスできるDBセキュリティグループに、IPアドレスのアクセス許可を付与しました。私が取り組んでいるのは...

    $cfg['Servers'][$i]['pmadb'] = $dbname;
    $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
    $cfg['Servers'][$i]['relation'] = 'pma_relation';
    $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
    $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
    $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
    $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
    $cfg['Servers'][$i]['history'] = 'pma_history';
    $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';

    /* Uncomment the following to enable logging in to passwordless accounts,
     * after taking note of the associated security risks. */
    // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;

    /* Advance to next server for rest of config */
    $i++;
}

    $cfg['Servers'][$i]['auth_type'] = 'http';  //is this correct?
    $cfg['Servers'][$i]['user'] = 'MASTER-USER';
    $cfg['Servers'][$i]['password'] = 'MASTER-USER-PASSWORD';
    $cfg['Servers'][$i]['hide_db'] = '(mysql|information_schema|phpmyadmin)';
    /* Server parameters */
    $cfg['Servers'][$i]['Host'] = 'MY-DB.us-east-1.rds.amazonaws.com';
    $cfg['Servers'][$i]['connection_type'] = 'socket';
    $cfg['Servers'][$i]['port'] = PORT;

構成が正しいかどうかわかりません。

私はこのエラーを受け取っています:

#2013-「初期通信パケットの読み取り」でMySQLサーバーへの接続が失われた、システムエラー:110

誰かアドバイスはありますか?

34
Webnet

この質問の答えのほとんどには説明がないことがわかりました。 EC2にインストールされたphpMyAdminにRDSサーバーを追加するには、最初にSSH経由でEC2にログインできます。次に、次のコマンドを発行してphpMyAdminの構成ファイルを編集します(vinanoまたはその他のテキスト編集ツールを使用します)。

Sudo vi /etc/phpMyAdmin/config.inc.php # Amazon Linux
Sudo vi /etc/phpmyadmin/config.inc.php # Ubuntu Linux

config.inc.phpで次の行を見つけます。

/*
 * End of servers configuration
 */

次の行を追加しますabove「サーバー構成の終了」行:

$i++;
$cfg['Servers'][$i]['Host'] = 'xxxxx.xxxxxxxxxx.us-east-1.rds.amazonaws.com';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['verbose'] = 'YOUR_SERVER_NAME';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['compress'] = TRUE;

which YOUR_SERVER_NAMEは、phpMyAdminログインページの選択ボックスに表示される名前です。この行を削除すると、RDSホスト名全体が選択ボックスに表示されます(これは明らかに長すぎます)。 config.inc.phpを忘れずに保存してください。

他にもいくつかの設定があり、詳細は 公式ドキュメント で確認できます。


注:もう1つの答えは、構成ファイルに事前設定されたユーザー名とパスワードを使用した自動ログインを提案します。

$cfg['Servers'][$i]['auth_type']     = 'config';
$cfg['Servers'][$i]['user']          = '__FILL_IN_DETAILS__';
$cfg['Servers'][$i]['password']      = '__FILL_IN_DETAILS__';

phpMyAdminが公開されている場合、これは非常に危険です。データベーススキーマをすべての人に見せたくありませんか?自動ログインを本当に使用したい場合は、phpMyAdminが特定のIPからのみアクセス可能であることを確認してください。

33
Raptor

リポジトリからphpmyadminを使用するDebian Lennyでは、これを/etc/phpmyadmin/config.inc.phpに追加します:

$i++;
$cfg['Servers'][$i]['Host'] = 'xxxxx.xxxxxxxxxx.us-east-1.rds.amazonaws.com';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['compress'] = TRUE;
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'xxxxxxxxxxxx';
$cfg['Servers'][$i]['password'] = 'xxxxxxxxxxxxxxxxxx';
22

RDSインスタンスへのホストPHPMyAdminアクセスを許可しながら、PHPMyAdminにリストされている追加サーバーとしてRDSインスタンスを追加する必要があります。

PHPMyAdminを使用してAmazon RDSインスタンスをリモートで管理する方法 :に関するこのブログ投稿の詳細

私が問題を抱えていたのは、DBセキュリティグループのセットアップでした。 CIDR/IPのアクセスを追加する場合、推奨値が提供されます。このデフォルト値が実際に存在する必要があるものではないことを判断するには、いくつかの手間がかかりました。インスタンスの接続がすべて完了したときに接続できない場合は、必ずこの値を再確認してください。彼らが提供したIPは、ISPから提供されたIPアドレスと一致しませんでした。 DBインスタンスを作成し、セキュリティグループを設定したら、準備完了です。

PHPMyAdminが既に稼働していると仮定します。あなたがする必要があるのは、新しいサーバーを認識するようにconfig.inc.phpを修正することです。

13
Webnet

Mysqlコマンドライン(http://dev.mysql.com/doc/refman/5.1/en/mysql.html)から接続してみて、このユーティリティが何を返すかを確認してください。その方法でデバッグする方が簡単だとわかりました。

mysql -hMY-DB.us-east-1.rds.amazonaws.com -uMASTER-USER -pPASSWORD

それでもうまくいかない場合は、Amazon RDSセキュリティが正しく設定されていないことを意味します。 (これは一般的な問題です)。

9
user539688
Sudo nano /etc/phpmyadmin/config.inc.php

--ADD LINES BELOW THE PMA CONFIG AREA AND FILL IN DETAILS--
$i++;
$cfg['Servers'][$i]['Host']          = '__FILL_IN_DETAILS__';
$cfg['Servers'][$i]['port']          = '3306';
$cfg['Servers'][$i]['socket']        = '';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['extension']     = 'mysql';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['auth_type']     = 'config';
$cfg['Servers'][$i]['user']          = '__FILL_IN_DETAILS__';
$cfg['Servers'][$i]['password']      = '__FILL_IN_DETAILS__';

保存して終了。 phpmyadminページを更新すると、追加したサーバーのドロップダウンが表示されます enter image description here

ソース: https://github.com/andrewpuch/phpmyadmin_connect_to_rdshttps://www.youtube.com/watch?v=Bz-4wTGD2_Q

7
jetpackdata.com

mysql -h ENDPOINT -u USERNAME -pを使用してcliから接続できるが、PHPMyAdminまたは独自のWebスクリプトからは接続できない場合、Webサーバーがネットワークと通信できるように tellに忘れないでください :)

Sudo setsebool -P httpd_can_network_connect=1
0
Egg

最初にこれを試してください:

mysql -h xxxxx.xxxxxxx.xx-xx-2.rds.amazonaws.com -u root -p // RDSサーバー。

待機し、パスワードの入力を求められない場合は、セキュリティグループを確認し、Web層に3306アウトバウンドを追加する必要があります。

0
Omkar Jadhav

私は同じ問題を抱えていましたが、上記のどれもそれを解決しませんでした。

判明したように、問題はRDSインスタンスの「Publicly Accessible」オプションにありました。インスタンスを作成すると、このオプションはデフォルトで「no」になり、変更できる場所はありません。

ただし、RDSインスタンスを作成した後、スナップショットを作成し、インスタンスを削除してからスナップショットを起動できます。起動オプションで「Publicly Accessible」を「yes」に設定するだけで、phpMyAdminでRDS MySqlサーバーが最終的に表示されます。

元のRDSインスタンスのDNSとスナップショットは異なるため、config.inc.phpの「ホスト」を変更する必要があることに注意してください

乾杯:)

0
Alex Love