Использование PHPMyAdmin для администрирования Amazon RDS - PullRequest
33 голосов
/ 09 декабря 2010

Мне не удается подключить PHPMyAdmin к моему экземпляру Amazon RDS.Я предоставил разрешения для своего 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

У кого-нибудь есть совет?

Ответы [ 9 ]

31 голосов
/ 20 февраля 2017

Я нашел, что большинство ответов на этот вопрос лишены объяснения. Чтобы добавить RDS-сервер в phpMyAdmin, установленный в EC2, вы можете сначала войти в свой EC2 через SSH. Затем введите следующую команду для редактирования файла конфигурации phpMyAdmin (используйте vi, nano или любой другой любимый инструмент для редактирования текста):

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
 */

Добавьте следующие строки над строкой «Конец конфигурации серверов»:

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

которое YOUR_SERVER_NAME - это имя, отображаемое в поле выбора страницы входа phpMyAdmin. Если вы удалите эту строку, все имя хоста RDS будет отображаться в поле выбора (которое, очевидно, слишком длинное). Не забудьте сохранить config.inc.php.

Существует несколько других настроек конфигурации, подробности которых вы можете найти в официальной документации .


Примечание: Другой ответ предполагает автоматический вход в систему с предварительно заданным именем пользователя и паролем в файле конфигурации:

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

, что чрезвычайно опасно , если ваш phpMyAdmin открыт для публики. Вы не хотите показать свою схему базы данных всем, не так ли? Если вы действительно хотите использовать автоматический вход в систему, убедитесь, что ваш phpMyAdmin доступен только через определенные IP-адреса.

22 голосов
/ 13 января 2011

В Debian Lenny, используя phpmyadmin из репозитория, добавьте это в /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';
13 голосов
/ 10 декабря 2010

Вам необходимо добавить экземпляр RDS в качестве дополнительного сервера, указанного в PHPMyAdmin, при предоставлении хосту PHPMyAdmin доступа к вашему экземпляру RDS.

Подробнее об этом сообщении в блоге на Как удаленно управлять экземпляром Amazon RDS с помощью PHPMyAdmin :

Единственное, с чем я столкнулся, была настройка группы безопасности БД. Когда вы идете, чтобы добавить доступ для CIDR / IP, он предоставляет рекомендуемое значение. Потребовалось немного возиться, чтобы определить, что это значение по умолчанию не является тем, что должно быть там. Если вы не можете подключиться к своему экземпляру, когда все сказано и сделано, обязательно проверьте это значение еще раз. Предоставленные ими IP-адреса не совпадают с IP-адресом, предоставленным нам нашим Интернет-провайдером. После того как вы создали свой экземпляр БД и настроили группу безопасности, все готово.

Я предполагаю, что у вас уже запущен и работает PHPMyAdmin. Вам нужно изменить config.inc.php, чтобы распознать новый сервер.

9 голосов
/ 15 декабря 2010

Попробуйте подключиться из командной строки 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 не настроена правильно (что является распространенной проблемой).

7 голосов
/ 12 мая 2016
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_rds, https://www.youtube.com/watch?v=Bz-4wTGD2_Q

0 голосов
/ 27 апреля 2018

Если вы можете соединиться с клиентом, используя mysql -h ENDPOINT -u USERNAME -p, но не из PHPMyAdmin или ваших собственных веб-скриптов, не забудьте сказать selinux, чтобы ваш веб-сервер общался с сетью :)

sudo setsebool -P httpd_can_network_connect=1
0 голосов
/ 05 февраля 2018

Сначала попробуйте это:

mysql -h xxxxx.xxxxxxx.xx-xx-2.rds.amazonaws.com -u root -p // Сервер RDS.

Если он ожидает и не запрашивает пароль, вам необходимо проверить группу безопасности и добавить исходящий 3306 на свой веб-уровень.

0 голосов
/ 11 декабря 2015

Я использую оболочку Ubuntu для доступа к Amazon RDS. прежде всего зайдите в Ubuntu root

sudo -i

для этого используйте URL-адрес конечного пользователя amazon RDS

mysql -h gelastik.cqtbtepzqfhu.us-west-2.rds.amazonaws.com -u root -p
0 голосов
/ 29 июля 2015

У меня была такая же проблема, и ничто из перечисленного не решило ее.

Как оказалось, вещь была в "Общедоступной" опции экземпляра RDS.Когда вы создаете свой экземпляр, этот параметр по умолчанию имеет значение «нет», и вы не можете его изменить.

Однако после создания экземпляра RDS вы можете сделать его снимок, затем удалить экземпляр и запустить снимок.В параметрах запуска просто установите для параметра «Публично доступный» значение «да», и ваш phpMyAdmin, наконец, увидит ваш сервер RDS MySql.

Обратите внимание, что DNS исходного экземпляра RDS и снимка отличаются, поэтому вам придется изменить'host' в config.inc.php

Приветствия:)

...