Using PHPMyAdmin to administer Amazon RDS

2019-01-10 11:26发布

I can't get PHPMyAdmin to connect to my Amazon RDS instance. I've granted permissions for my IP address to the DB Security Group which has access to this database I'm trying to access. Here's what I'm working with...

    $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;

I'm not sure if my configuration is correct.

I'm getting this error:

#2013 - Lost connection to MySQL server at 'reading initial communication packet', system error: 110

Does anyone have any advice?

9条回答
神经病院院长
2楼-- · 2019-01-10 11:42

I use ubuntu shell to access Amazon RDS. first of all go to ubuntu root

sudo -i

to do this use amazon RDS end user URL

mysql -h gelastik.cqtbtepzqfhu.us-west-2.rds.amazonaws.com -u root -p
查看更多
一纸荒年 Trace。
3楼-- · 2019-01-10 11:49

I found most of the answers in this question lack explanation. To add RDS server in phpMyAdmin installed in EC2, you can first login to your EC2 via SSH. Then, issue the following command to edit the Config file of phpMyAdmin (use vi, nano or any other favorite text editing tool):

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

Find the following lines in config.inc.php:

/*
 * End of servers configuration
 */

Append the following lines above the "End of servers configuration" line:

$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 is the name being displayed in phpMyAdmin login page's selection box. If you remove this line, the whole RDS hostname will be displayed in the selection box (which is too long, obviously). Remember to save the config.inc.php.

There are several other config settings, which you can find the details in the official documentation.


Note: The other answer suggests auto login with preset username & password in Config file:

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

which is extremely dangerous if your phpMyAdmin is exposed to public. You don't want to show your database schema to everyone, do you? If you really want to use automatic login, make sure your phpMyAdmin is accessible via specific IPs only.

查看更多
爱情/是我丢掉的垃圾
4楼-- · 2019-01-10 11:49

In Debian Lenny using the phpmyadmin from the repo add this to /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';
查看更多
冷血范
5楼-- · 2019-01-10 11:50

First try this :

mysql -h xxxxx.xxxxxxx.xx-xx-2.rds.amazonaws.com -u root -p // Your RDS server.

If it waits and doesn't prompt for the password then you would need to check security group and add 3306 outbound to your Web Tier.

查看更多
看我几分像从前
6楼-- · 2019-01-10 11:54

I had the same problem and nothing of the above solved it.

As it turned out the thing was in "Publicly Accessible" option of the RDS instance. When you create your instance this option is "no" by default and there is no place you can change it.

However, after creating the RDS instance you can make its snapshot, then delete the instance and then launch the snapshot. In launch options just set "Publicly Accessible" to "yes" and your phpMyAdmin will finally see you RDS MySql server.

Beware that DNS of the original RDS instance and the snaphot are different so you would have to change your 'host' in config.inc.php

Cheers :)

查看更多
啃猪蹄的小仙女
7楼-- · 2019-01-10 11:56

Try to connect from the mysql command line (http://dev.mysql.com/doc/refman/5.1/en/mysql.html) and see what's this utility returns you. I found it's easier to debug that way.

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

If that's doesn't work, it means your amazon RDS security aren't configured correctly. (which is the common problem).

查看更多
登录 后发表回答