Search code examples
mysqlnode.jseconnrefused

I can't start MySQL server in NodeJs after reset MySQL password using Windows's cmd


I reset my MySQL password using cmd commands from this guide.

cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
mysqld
--defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini"
--init-file=C:\\Users\\<username>\\resetMYSQL.txt

resetMYSQL contains a command to change password

ALTER USER 'root'@'localhost' IDENTIFIED BY '<myNewPassword>';

Now, it turned out I have to keep running the mysqld command above to start my server or else I'll get this error. If I run the command again I can flawlessly run my server until I terminate it.

This is the error. It's ECONNREFUSED. Node's error

I think my password is already reset, because apart from the command line, I also run ALTER USER in Workbench after I got access to it while the cmd is running.

Btw, before this I can just start my server using Node and Sequelize and didn't have to start server elsewhere or set anything beforehand

I'm not sure what is the problem here, so I don't know which keyword I should look up on Google. I googled the error code, but those cases seems unrelated to mine. I'd be glad if you can explain me what's going on.


Solution

  • The nodejs error message you showed us, a ECONNREFUSED message with a traceback, shows the your mysql database server program was not running when your nodejs program tried to connect to it. Nodejs reaches out to MySQL via TCP/IP. TCP/IP responds "I don't know any MySQL." Specifically, it responds "ECONNREFUSED on port 3306," meaning "nothing on this machine accepts connections on MySQL's port."

    nodejs does not start the mysql software for you. It connects to it and uses it.. MySQL has to be running already for that work.

    Ordinarily, software like mysql runs in the form of a operating system service; a background process that runs all the time on the machine to await requests).

    And, ordinarily, you don't provide init files to MySQL to do things like change passwords, except just once, if you must, to rescue something broken. In your case it looks like you forgot your MySQL password, so you needed to use an init file to rescue yourself. Once the password is reset, stop using that init file.

    Explaining how to make MySQL run as a service on your machine is beyond the scope of a Stack Overflow answer. But the installers for MySQL, on almost every operating system, set it up to run as a service automatically. It's generally useless otherwise.