It means either the MySQL server is not installed/running, or the file mysql. sock doesn't exist in /var/lib/mysql/ . There are a couple of solutions for this error. Then try to connect again.
sock is inside /tmp/? I think usually this is located in /home/mysql or under the data directory (/var/lib/mysql/). You may as well check if it is still available there.
normally means that there is no MySQL server running on the system or that you are using an incorrect Unix socket file name or TCP/IP port number when trying to connect to the server. You should also check that the TCP/IP port you are using has not been blocked by a firewall or port blocking service.
sudo /usr/local/mysql/support-files/mysql.server start
This worked for me. However, if this doesnt work then make sure that mysqld is running and try connecting.
The relevant section of the MySQL manual is here. I'd start by going through the debugging steps listed there.
Also, remember that localhost and 127.0.0.1 are not the same thing in this context:
localhost
, then a socket or pipe is used.127.0.0.1
, then the client is forced to use TCP/IP.So, for example, you can check if your database is listening for TCP connections vi netstat -nlp
. It seems likely that it IS listening for TCP connections because you say that mysql -h 127.0.0.1
works just fine. To check if you can connect to your database via sockets, use mysql -h localhost
.
If none of this helps, then you probably need to post more details about your MySQL config, exactly how you're instantiating the connection, etc.
For me the problem was I wasn't running MySQL Server.
Run server first and then execute mysql
.
$ mysql.server start
$ mysql -h localhost -u root -p
I've seen this happen at my shop when my devs have a stack manager like MAMP installed that comes preconfigured with MySQL installed in a non standard place.
at your terminal run
mysql_config --socket
that will give you your path to the sock file. take that path and use it in your DATABASES HOST paramater.
What you need to do is point your
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'test',
'PASSWORD': 'test',
'HOST': '/Applications/MAMP/tmp/mysql/mysql.sock',
'PORT': '',
},
}
also run which mysql_config
if you somehow have multiple instances of mysql server installed on the machine you may be connecting to the wrong one.
I just changed the HOST
from localhost
to 127.0.0.1
and it works fine:
# settings.py of Django project
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_name',
'USER': 'username',
'PASSWORD': 'password',
'HOST': '127.0.0.1',
'PORT': '',
},
...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With