Error 2002 (hy000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) - Easily fix your MySQL error

When you're attempting to connect your MySQL databases to an Node.js app, you might sometimes run into a error message which sounds like this: "Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)".

Below we'll explore a solution to your problem, with the caveat that for some particular MySQL versions and OS versions, you might need some do some further digging.

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

What the "error 2002 (hy000): Can't connect to local MySQL" message points to is a problem connecting to the local MySQL server through the socket file /tmp/mysql.sock, which is used to communicate between the MySQL client and server.

Let's explore the steps to succesfully establish a successful connection between the two.

1: Verify MySQL Server Status

Your first step is to check if the MySQL server is running. You can do this by running the following command:

service mysql status

In case the service is not running, start it with the following command:

service mysql start

2: Check MySQL Server Configuration

Afterwards, verify the socket file location specified in the MySQL server configuration. To do this, open the configuration file (usually my.cnf or my.ini) and locate the line containing socket = /tmp/mysql.sock. You'll then ensure that the path specified matches the actual location of the socket file on your system.

3: Restart MySQL Server

Once you made the changes to the MySQL server configuration, restart the server for the changes to take effect. Use the appropriate command based on your operating system:

service mysql restart

or

systemctl restart mysql

4: Verify Socket File Location in your Node.js code

When you're connecting to MySQL in your Node.js app, confirm that the socket file location specified in the connection settings matches the actual location. Use the socketPath property in the connection configuration to specify the socket file path.

Here's an example code snippet using the mysql module in Node.js:

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'username',
  password: 'password',
  database: 'database',
  socketPath: '/tmp/mysql.sock' // Specify the socket file path here
});

connection.connect((err) => {
  if (err) {
    console.error('Error connecting to MySQL:', err);
    return;
  }
  console.log('Connected to MySQL server');

  // Perform your database operations here

  connection.end(); // Close the connection when done
});

You'll also need to make sure that the socketPath property in your code matches the correct location of the socket file.

By following the above outlined steps, you can resolve the "Can't connect to local MySQL server through socket" error in your Node.js application.

Dealing with bugs is 💩, but not with Jam.

Capture bugs fast, in a format that thousands of developers love.
Get Jam for free