Solved

MYSQL error :Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (localhost))

Posted on 2011-03-25
13
911 Views
Last Modified: 2012-05-11
Hello,
  I have a Linux system that have MYSQL install. However, when I tried to acess an application that used mysql I get the following error:

(Can't contact the database server: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (localhost))

Here is the setting snippet

# The MySQL server
[mysqld]
port            = 3306
 basedir = /usr
# datadir = /var/lib/mysql
datadir = /export/mysql/var
socket = /tmp/mysql.sock


# The following options will be passed to all MySQL clients
[client]
#password       = your_password
port            = 3306
socket =/tmp/mysql.sock


usbratst:/tmp # ls -al mysql.sock
srwxrwxrwx 1 mysql mysql 0 Mar 24 23:50 mysql.sock



Thanks
0
Comment
Question by:SiemensSEN
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 4
  • 4
  • +1
13 Comments
 
LVL 12

Expert Comment

by:upanwar
ID: 35215500
Make sure that mysql service is running.

#/etc/init.d/mysqld status

or

# ps -ef | grep -i mysql
0
 
LVL 8

Expert Comment

by:pilson66
ID: 35215515
In your config, socket located in /tmp/mysql.sock

You are trying to connect to /var/lib/mysql/mysql.sock

Try to connect to /tmp/mysql.sock
0
 
LVL 12

Expert Comment

by:upanwar
ID: 35215831
Since in your my.cnf you are calling your socket file from  /tmp/mysql.sock and it is available there but if still you are not able to start your mysql service then please run the below given command.

# ln -s /tmp/mysql.sock /var/lib/mysql

and then start the mysql service.

/etc/init.d/mysqld start
0
Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

 

Author Comment

by:SiemensSEN
ID: 35231663
Hello,
  Thanks. Here is the result I get from running the various comamnd above


@usbratst:/etc/init.d> ps -ef |grep mysql

root      4088     1  0 Mar27 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/export/mysql/var --pid-file=/export/mysql/var/usbratst.pid
mysql     4437  4088  0 Mar27 ?        00:00:09 /usr/sbin/mysqld --basedir=/usr --datadir=/export/mysql/var --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/export/mysql/var/mysqld.log --pid-file=/export/mysql/var/usbratst.pid --socket=/tmp/mysql.sock --port=3306
pb054799 10510 10356  0 08:46 pts/0    00:00:00 grep mysql


-----------------
@usbratst:/etc/init.d> /etc/init.d/mysql stop
MySQL server PID file could not be found!  


@usbratst:/etc/init.d> /usr/sbin/mysqld status

110328  8:45:12 [Warning] Can't create test file /export/mysql/var/usbratst.lower-test
110328  8:45:12 [Warning] Can't create test file /export/mysql/var/usbratst.lower-test
/usr/sbin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
110328  8:45:12 Aborting

110328  8:45:12 [Note] /usr/sbin/mysqld: Shutdown complete

-----


MYSQL.CNF file
# The MySQL server
[mysqld]
port            = 3306
 basedir = /usr
# datadir = /var/lib/mysql
datadir = /export/mysql/var
socket = /tmp/mysql.sock


# The following options will be passed to all MySQL clients
[client]
#password       = your_password
port            = 3306
socket =/tmp/mysql.sock



I cannot find the MYSQL sock file ..

Thanks
0
 
LVL 8

Expert Comment

by:pilson66
ID: 35231714
--socket=/tmp/mysql.sock
socket = /tmp/mysql.sock

socket placed in /tmp/mysql.sock
0
 

Author Comment

by:SiemensSEN
ID: 35231753
Thanks. I look at the /tmp dir and It does not contain the sock file...

0
 
LVL 12

Expert Comment

by:upanwar
ID: 35231771
Do:

ls -la /tmp/mysql.sock

If file is there then you can create a symbolic link with below given command.

# ln -s /tmp/mysql.sock /var/lib/mysql

and then start the mysql service.

/etc/init.d/mysqld start

It should work.
0
 
LVL 8

Expert Comment

by:pilson66
ID: 35231772
"sudo ls -l | grep mysql"
0
 
LVL 8

Expert Comment

by:pilson66
ID: 35231779
Sorry
"sudo ls -l /tmp/ | grep mysql"
0
 
LVL 12

Expert Comment

by:upanwar
ID: 35231782
what about:

ls -la /var/lib/mysql/mysql.sock
0
 

Author Comment

by:SiemensSEN
ID: 35231851

usbratst:~ # ls -la /var/lib/mysql/mysql.socklrwxrwxrwx 1 root mysql 15 Mar 25 11:38 /var/lib/mysql/mysql.sock -> /tmp/mysql.sock

usbratst:~ # ls -al /tmptotal 68
drwxrwxrwt 12 root root 4096 Mar 28 09:04 .
drwxr-xr-x 24 root root 4096 Mar 27 18:55 ..
drwxrwxrwt  2 root root 4096 Mar 27 20:10 .ICE-unix
-r--r--r--  1 root root   11 Mar 27 20:10 .X0-lock
drwxrwxrwt  2 root root 4096 Mar 27 20:10 .X11-unix
drwx------  2 root root 4096 Mar  9 00:11 .esd-0
drwx------  2 gdm  gdm  4096 Mar 27 20:10 .esd-106
drwx------  2 gdm  gdm  4096 Mar 27 20:10 orbit-gdm
drwx------  2 root root 4096 Mar  9 00:11 orbit-root
drwx------  2 root root 4096 Mar  9 00:11 pulse-AKSCpmG5ddvH
drwx------  2 gdm  gdm  4096 Mar 27 20:10 pulse-PKdhtXMmr18n
-rw-------  1 root root  512 Mar 27 18:55 random-seed.HT3Jpq160d
-rw-------  1 root root  512 Mar 26 21:16 random-seed.Y820xWvpNI
-rw-------  1 root root  512 Mar  9 00:59 random-seed.g4Uclw7xIf
drwxr-xr-x  2 root root 4096 Mar  9 00:11 unique
drwx------  2 root root 4096 Mar  8 22:03 virtual-root.CRZAQT
-rw-r--r--  1 root root 1710 Mar  8 17:56 xwlog

----
usbratst:~ # ls -al /var/lib/mysqltotal 28788
drwxr-xr-x  5 mysql mysql     4096 Mar 25 11:38 .
drwxr-xr-x 44 root  root      4096 Mar 24 16:31 ..
-rw-r--r--  1 mysql mysql        0 Mar  9 23:15 .run-mysql_upgrade
-rw-r--r--  1 root  root       340 Mar 23 01:14 RPM_UPGRADE_HISTORY
-rw-r--r--  1 mysql mysql      340 Mar 23 01:14 RPM_UPGRADE_MARKER-LAST
-rw-rw----  1 mysql mysql  5242880 Mar 24 16:33 ib_logfile0
-rw-rw----  1 mysql mysql  5242880 Mar 21 02:32 ib_logfile1
-rw-rw----  1 mysql mysql 18874368 Mar 24 16:33 ibdata1
drwx--x--x  2 mysql mysql     4096 Mar 23 01:14 mysql
-rw-rw----  1 mysql mysql      126 Mar 23 17:41 mysql-bin.000001
-rw-rw----  1 mysql mysql      126 Mar 23 17:51 mysql-bin.000002
-rw-rw----  1 mysql mysql      126 Mar 23 18:21 mysql-bin.000003
-rw-rw----  1 mysql mysql      150 Mar 23 19:45 mysql-bin.000004
-rw-rw----  1 mysql mysql      126 Mar 24 15:59 mysql-bin.000005
-rw-rw----  1 mysql mysql      126 Mar 24 16:33 mysql-bin.000006
-rw-rw----  1 mysql mysql      114 Mar 24 16:32 mysql-bin.index
lrwxrwxrwx  1 root  mysql       15 Mar 25 11:38 mysql.sock -> /tmp/mysql.sock
-rw-rw----  1 mysql mysql        0 Mar 24 19:45 mysqld.log
-rw-rw----  1 mysql mysql      864 Mar 21 19:45 mysqld.log-20110321.bz2
-rw-rw----  1 mysql mysql     1365 Mar 23 19:45 mysqld.log-20110323.bz2
-rw-rw----  1 mysql mysql      911 Mar 24 19:45 mysqld.log-20110324.bz2
drwx------  2 mysql mysql     4096 Mar 23 01:14 performance_schema
drwxr-xr-x  2 mysql mysql     4096 Mar 23 01:14 test
0
 

Author Comment

by:SiemensSEN
ID: 35231869
usbratst:~ # ls -l /tmp/ |grep mysql
usbratst:~ #
0
 
LVL 8

Accepted Solution

by:
wolfgang_93 earned 125 total points
ID: 35235710
I came into this thread and I think things have gone in the wrong direction because you followed
a suggestion that in my opinion is confusing and did not address your issue appropriately:

ln -s /tmp/mysql.sock /var/lib/mysql

(This command sets up a symbolic link from one place to another and is at best
confusing which is obvious from what I saw happen following its implementation)

So first of all, I suggest that you get rid of this link -- if it is not already gone:
-  Shut down your MySQL server
-  Issue the command ls -ld /tmp/mysql.sock
   to make sure it is gone. If not, issue the command:
      rm /tmp/mysql.sock

Next you need to decide whether you want to/are allowed to modify the application
and modify it to point to /tmp/mysql.sock instead.

Personally I think it is better for /var/lib/mysql/mysql.sock to be used as a socket
location (assuming you actually have a /var/lib/mysql directory set up) because /tmp
is a temporary directory that can be scrubbed anytime
by the operating system and render your MySQL server non-functional.

Issue this command to ensure you have a /var/lib/mysql directory set up with
appropriate permission for the server to use:
   ls -ld /var/lib/mysql

If so, then you can define a socket file at that location by putting lines
like this in your my.cnf file:
   socket = /var/lib/mysql/mysql.sock

Start your server and it should start using the new socket.
Your application should then be able to connect to the MySQL at the new
socket (assuming it is correct in other respects such as MySQL id and password
used by the application).
0

Featured Post

Free learning courses: Active Directory Deep Dive

Get a firm grasp on your IT environment when you learn Active Directory best practices with Veeam! Watch all, or choose any amount, of this three-part webinar series to improve your skills. From the basics to virtualization and backup, we got you covered.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Since I wrote the original article about Handling Date and Time in PHP and MySQL several years ago, it seemed like now was a good time to update it for object-oriented PHP.  This article does that, replacing as much as possible the pr…
This post looks at MongoDB and MySQL, and covers high-level MongoDB strengths, weaknesses, features, and uses from the perspective of an SQL user.
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question