:: DEVELOPER ZONE
A MySQL client on Unix can connect to the mysqld
server in two different ways: By using a Unix socket file to connect
through a file in the filesystem (default
/tmp/mysql.sock), or by using TCP/IP, which
connects through a port number. A Unix socket file connection is
faster than TCP/IP, but can be used only when connecting to a server
on the same computer. A Unix socket file is used if you don't
specify a hostname or if you specify the special hostname
localhost.
If the MySQL server is running on Windows 9x or Me, you can connect
only via TCP/IP. If the server is running on Windows NT, 2000, XP,
or 2003 and is started with the
--enable-named-pipe option, you can also connect
with named pipes if you run the client on the host where the server
is running. The name of the named pipe is MySQL
by default. If you don't give a hostname when connecting to
mysqld, a MySQL client first tries to connect to
the named pipe. If that doesn't work, it connects to the TCP/IP
port. You can force the use of named pipes on Windows by using
. as the hostname.
The error (2002) Can't connect to ... normally
means that there is no MySQL server running on the system or that
you are using an incorrect Unix socket filename or TCP/IP port
number when trying to connect to the server.
Start by checking whether there is a process named mysqld running on your server host. (Use ps xa | grep mysqld on Unix or the Task Manager on Windows.) If there is no such process, you should start the server. See Section 2.9.2.3, “Starting and Troubleshooting the MySQL Server”.
If a mysqld process is running, you can check it
by trying the following commands. The port number or Unix socket
filename might be different in your setup.
host_ip represents the IP number of the machine
where the server is running.
shell> mysqladmin version shell> mysqladmin variables shell> mysqladmin -h `hostname` version variables shell> mysqladmin -h `hostname` --port=3306 version shell> mysqladmin -h host_ip version shell> mysqladmin --protocol=socket --socket=/tmp/mysql.sock version
Note the use of backticks rather than forward quotes with the
hostname command; these cause the output of
hostname (that is, the current hostname) to be
substituted into the mysqladmin command. If you
have no hostname command or are running on
Windows, you can manually type the hostname of your machine (without
backticks) following the -h option. You can also
try -h 127.0.0.1 to connect with TCP/IP to the
local host.
Here are some reasons the Can't connect to local MySQL
server error might occur:
mysqld is not running. Check your operating system's process list to ensure the mysqld process is present.
You are running on a system that uses MIT-pthreads. If you are running on a system that doesn't have native threads, mysqld uses the MIT-pthreads package. See Section 2.1.1, “Operating Systems Supported by MySQL”. However, not all MIT-pthreads versions support Unix socket files. On a system without socket file support, you must always specify the hostname explicitly when connecting to the server. Try using this command to check the connection to the server:
shell> mysqladmin -h `hostname` version
Someone has removed the Unix socket file that
mysqld uses
(/tmp/mysql.sock by default). For example, you
might have a cron job that removes old files
from the /tmp directory. You can always run
mysqladmin version to check whether the Unix
socket file that mysqladmin is trying to use
really exists. The fix in this case is to change the
cron job to not remove
mysql.sock or to place the socket file
somewhere else. See Section A.4.5, “How to Protect or Change the MySQL Socket File /tmp/mysql.sock”.
You have started the mysqld server with the
--socket=/path/to/socket option, but forgotten
to tell client programs the new name of the socket file. If you
change the socket pathname for the server, you must also notify the
MySQL clients. You can do this by providing the same
--socket option when you run client programs.
You also need to ensure that clients have permission to access the
mysql.sock file. To find out where the socket
file is, you can do:
shell> netstat -ln | grep mysql
See Section A.4.5, “How to Protect or Change the MySQL Socket File /tmp/mysql.sock”.
You are using Linux and one server thread has died (dumped core).
In this case, you must kill the other mysqld
threads (for example, with kill or with the
mysql_zap script) before you can restart the
MySQL server. See Section A.4.2, “What to Do If MySQL Keeps Crashing”.
The server or client program might not have the proper access
privileges for the directory that holds the Unix socket file or the
socket file itself. In this case, you must either change the access
privileges for the directory or socket file so that the server and
clients can access them, or restart mysqld with
a --socket option that specifies a socket
filename in a directory where the server can create it and where
client programs can access it.
If you get the error message Can't connect to MySQL server
on some_host, you can try the following things to find out
what the problem is:
Check whether the server is running on that host by executing
telnet some_host 3306 and pressing the Enter key
a couple of times. (3306 is the default MySQL port number. Change
the value if your server is listening to a different port.) If
there is a MySQL server running and listening to the port, you
should get a response that includes the server's version number. If
you get an error such as telnet: Unable to connect to
remote host: Connection refused, then there is no server
running on the given port.
If the server is running on the local host, try using
mysqladmin -h localhost variables to connect
using the Unix socket file. Verify the TCP/IP port number that the
server is configured to listen to (it is the value of the
port variable.)
Make sure that your mysqld server was not
started with the --skip-networking option. If it
was, you cannot connect to it using TCP/IP.
Check to make sure that there is no firewall blocking access to MySQL. Applications such as ZoneAlarm and the Windows XP personal firewall may need to be configured to allow external access to a MySQL server.
© 1995-2005 MySQL AB. All rights reserved.

User Comments
Warning: query failed: Unknown column 'user.firstname' in 'field list' in /data0/sites/live/web-main/lib/mysql-cxn.php on line 69
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /data0/sites/live/web-main/lib/docbook.php on line 245
Add your own comment.