web-dev-qa-db-fra.com

Utilisation de PHPMyAdmin pour administrer Amazon RDS

Je n'arrive pas à amener PHPMyAdmin à se connecter à mon instance Amazon RDS. J'ai accordé des autorisations pour mon adresse IP au groupe de sécurité DB qui a accès à la base de données à laquelle j'essaie d'accéder. Voici ce avec quoi je travaille ...

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

Je ne suis pas sûr si ma configuration est correcte.

Je reçois cette erreur: 

# 2013 - Perte de connexion au serveur MySQL à la lecture du paquet de communication initial, erreur système: 110

Est-ce que quelqu'un a un conseil?

32
Webnet

J'ai trouvé que la plupart des réponses à cette question manquaient d'explication. Pour ajouter un serveur RDS dans phpMyAdmin installé dans EC2, vous pouvez d'abord vous connecter à votre EC2 via SSH. Ensuite, lancez la commande suivante pour éditer le fichier de configuration de phpMyAdmin (utilisez vi, nano ou tout autre outil d'édition de texte favori):

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

Recherchez les lignes suivantes dans config.inc.php:

/*
 * End of servers configuration
 */

Ajoutez les lignes suivantes au-dessus la ligne "Fin de la configuration des serveurs":

$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 est le nom affiché dans la boîte de sélection de la page de connexion de phpMyAdmin. Si vous supprimez cette ligne, le nom d'hôte RDS complet sera affiché dans la zone de sélection (trop longue évidemment). N'oubliez pas de sauvegarder le config.inc.php.

Il existe plusieurs autres paramètres de configuration dont vous trouverez les détails dans la documentation officielle .


Remarque: L'autre réponse suggère une connexion automatique avec un nom d'utilisateur et un mot de passe prédéfinis dans le fichier de configuration:

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

ce qui est extrêmement dangereux si votre phpMyAdmin est exposé au public. Vous ne voulez pas montrer votre schéma de base de données à tout le monde, n'est-ce pas? Si vous voulez vraiment utiliser la connexion automatique, assurez-vous que votre phpMyAdmin est accessible uniquement via des adresses IP spécifiques.

29
Raptor

Dans Debian, Lenny utilise phpmyadmin du référentiel et ajoute ceci à /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
Jorge E. Cardona

Vous devez ajouter l'instance RDS en tant que serveur supplémentaire répertorié dans PHPMyAdmin tout en accordant à l'hôte PHPMyAdmin l'accès à votre instance RDS. 

Plus de détails sur ce billet de blog sur Comment gérer à distance une instance Amazon RDS avec PHPMyAdmin :

La seule chose qui me posait problème était la configuration du groupe de sécurité DB. Lorsque vous allez ajouter un accès pour un CIDR/IP, cela fournit une valeur recommandée. Il a fallu déconner pour déterminer que cette valeur par défaut ne correspond pas vraiment à ce qu’elle devait être. Si vous ne parvenez pas à vous connecter à votre instance à la fin du processus, vérifiez bien cette valeur. L'adresse IP fournie ne correspond pas à l'adresse IP qui nous a été fournie par notre fournisseur de services Internet. Une fois que vous avez créé votre instance de base de données et configuré le groupe de sécurité, vous êtes prêt à partir.

Je suppose que PHPMyAdmin est déjà opérationnel. Ce que vous devez faire, c'est modifier config.inc.php pour reconnaître le nouveau serveur. 

13
Webnet

Essayez de vous connecter à partir de la ligne de commande mysql (http://dev.mysql.com/doc/refman/5.1/en/mysql.html) et voyez ce que cet utilitaire vous renvoie. J'ai trouvé qu'il était plus facile de déboguer de cette façon.

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

Si cela ne fonctionne pas, cela signifie que votre sécurité Amazon RDS n'est pas configurée correctement. (qui est le problème commun).

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__';

Sauvegarder et quitter. Actualisez votre page phpmyadmin et vous verrez une liste déroulante avec le serveur que vous venez d'ajouter  enter image description here

Source: https://github.com/andrewpuch/phpmyadmin_connect_to_rds , https://www.youtube.com/watch?v=Bz-4wTGD2_Q

7
jetpackdata.com

Si vous pouvez vous connecter à partir de la cli en utilisant mysql -h ENDPOINT -u USERNAME -p mais pas à partir de PHPMyAdmin ou de vos propres scripts Web, n'oubliez pas de dire à selinux pour laisser votre serveur Web parler au réseau :)

Sudo setsebool -P httpd_can_network_connect=1
0
Egg

Essayez d'abord ceci:

mysql -h xxxxx.xxxxxxx.xx-xx-2.rds.amazonaws.com -u racine -p // Votre serveur RDS.

S'il attend et ne demande pas le mot de passe, vous devrez vérifier le groupe de sécurité et ajouter 3306 sortants à votre niveau Web.

0
Omkar Jadhav

J'ai eu le même problème et rien de ce qui précède ne l'a résolu. 

Il s’est avéré que le problème se trouvait dans l’option "Accessible publiquement" de l’instance RDS. Lorsque vous créez votre instance, cette option est "non" par défaut et vous ne pouvez pas la modifier. 

Cependant, après avoir créé l'instance RDS, vous pouvez créer son instantané, puis supprimer l'instance, puis lancer l'instantané. Dans les options de lancement, définissez simplement "publiquement accessible" sur "oui" et votre phpMyAdmin va enfin voir votre serveur MySQL RDS.

Attention, les DNS de l'instance RDS d'origine et du snaphot sont différents. Vous devrez donc changer votre 'hôte' dans config.inc.php.

À votre santé :)

0
Alex Love