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:
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; ```
3 Réponses :
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 code>,
source = 0.0.0.0 / 0, :: / 0
(tout autoriser)
Cela peut se produire pour plusieurs raisons -
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
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.