1
votes

Comment établir une connexion MYSQL à une instance AWS ec2 à partir d'une machine locale?

J'ai terminé mon projet et j'essaye de le déployer sur AWS. J'ai une instance ec2 comme serveur Web avec les détails de configuration suivants:

  • NodeJS utilisant le port 5000
  • PM2 (maintien du serveur actif à tout moment)
  • NGINX en tant que serveur Web lisant mon fichier de construction
  • MySQL dans l'instance ec2 en tant que base de données. (en utilisant le port 3306)

Mon problème est que j'ai du mal à établir une connexion entre ma machine locale et mon instance AWS ec2 qui contient la base de données MYSQL. J'ai ouvert MYSQL workbench et je peux me connecter très bien là-bas, mais lorsque j'essaie d'établir une chaîne de connexion à la base de données à partir de node.js, cela me donne une erreur.

J'ai réussi à me connecter à la base de données dans MYSQL workbench mais comment puis-je me connecter maintenant à partir de la chaîne de connexion nodejs?

Ce que j'ai déjà essayé était le suivant:

1) Dans le groupe de sécurité AWS, ouverture de la règle TCP pour tout le trafic entrant au port 5000
2) Dans le groupe de sécurité AWS, ouverture de la règle MYSQL / Aurora pour tout le trafic entrant au port 3306
3) Accorder tous les privilèges sur . à l'utilisateur et vider et redémarrer le serveur mysql.

Erreur que cela me donne dans la console.

```var mysql = require("mysql");

// Local Works just fine

// var connection = mysql.createConnection({
//   host: "localhost",
//   user: "root",
//   password: "xxx",
//   database: "devdb",
//   charset: "utf8mb4"
// });

// Production Connection to AWS MYSQL instance (stuck on)

var connection = mysql.createConnection({
  host: "14.54.xxx.xxx",
  port: "3306",
  user: "jordan",
  password: "xxx",
  database: "productiondb"
  charset: "utf8mb4"
});

// Test the db connection

connection.connect(function(err) {
  if (err) {
    console.log(err);
  } else {
    console.log("Connected!");
  }
});

module.exports = connection;
```


0 commentaires

3 Réponses :


1
votes

Assurez-vous encore une fois, je pense que vos groupes de sécurité ont quelque chose qui ne va pas, peut-être que votre serveur écoute en interne, alors ça se passe. Accédez à votre groupe de sécurité EC2 et sélectionnez Inbound et ajoutez des règles comme type = mysql , proto = tcp , port range = 3306 , source = 0.0.0.0 / 0, :: / 0 (tout autoriser)


0 commentaires

1
votes

Cela peut se produire pour plusieurs raisons -

  • Configurer la base de données MySQL
Enter current password for the root account: press Enter key
Set root password? Y
New password: yourpassword
Re-enter new password: yourpassword
Remove anonymous users? Y
Disallow root login remotely? n
Remove test database and access to it? Y
Reload privilege tables now? Y

Dans l'invite, suivez les étapes suivantes:

   #start MySQL server sudo service mysqld start
   #run configuration sudo mysql_secure_installation
  • Si vous utilisez RDS, vous devrez fournir un accès NAT au VPC qui contient votre base de données. Pour plus d'informations, veuillez consulter ici li>


0 commentaires

0
votes

En fait, je pense que je viens de comprendre.

Ainsi, le fichier de configuration mysql par défaut a l'ip lié à 127.0.0.1. Cependant, j'ai changé la liaison de mon adresse IP publique ec2 et également changé la valeur par défaut "mysql" en "jordan" et j'ai enregistré le fichier de configuration, redémarré le service mysql et cela fonctionne maintenant.

Merci pour les suggestions que j'écrirai dans ma documentation pour vérifier à l'avenir.


0 commentaires