GNU Info

Info Node: (mysql.info)Can not connect to server

(mysql.info)Can not connect to server


Next: Blocked host Prev: Gone away Up: Common errors
Enter node , (file) or (file)node

`Can't connect to [local] MySQL server' error
---------------------------------------------

A MySQL client on Unix can connect to the `mysqld' server in two
different ways: Unix sockets, which connect through a file in the file
system (default `/tmp/mysqld.sock') or TCP/IP, which connects through a
port number.  Unix sockets are faster than TCP/IP but can only be used
when connecting to a server on the same computer.  Unix sockets are
used if you don't specify a hostname or if you specify the special
hostname `localhost'.

On Windows you can connect only with TCP/IP if the `mysqld' server is
running on Win95/Win98. If mysqld is running on NT and started with
`enable-named-pipe', you can also connect with named pipes.  The name
of the named pipe is MySQL.  If you don't give a hostname when
connecting to `mysqld', a MySQL client will first try to connect to the
named pipe, and if this doesn't work it will connect 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 isn't
a MySQL server running on the system or that you are using a wrong
socket file or TCP/IP port when trying to connect to the `mysqld'
server.

Start by checking (using `ps' or the task manager on Windows) that
there is a process running named `mysqld' on your server!  If there
isn't any `mysqld' process, you should start one. Note: Starting
server.

If a `mysqld' process is running, you can check the server by trying
these different connections (the port number and socket pathname might
be different in your setup, of course):

     shell> mysqladmin version
     shell> mysqladmin variables
     shell> mysqladmin -h `hostname` version variables
     shell> mysqladmin -h `hostname` --port=3306 version
     shell> mysqladmin -h 'ip for your host' version
     shell> mysqladmin --socket=/tmp/mysql.sock version

Note the use of backquotes 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.

Here are some reasons the `Can't connect to local MySQL server' error
might occur:

   * `mysqld' is not running.

   * 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.  Note: Which OS.  However, all
     MIT-pthreads versions doesn't support Unix sockets. On a system
     without sockets 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 that `mysqld' uses (default
     `/tmp/mysqld.sock').  You might have a `cron' job that removes the
     MySQL socket (for example, a job that removes old files from the
     `/tmp' directory).  You can always run `mysqladmin version' and
     check that the socket `mysqladmin' is trying to use really exists.
     The fix in this case is to change the `cron' job to not remove
     `mysqld.sock' or to place the socket somewhere else.  *Note
     Problems with mysql.sock::.

   * You have started the `mysqld' server with the
     `--socket=/path/to/socket' option.  If you change the socket
     pathname for the server, you must also notify the MySQL clients
     about the new path. You can do this by providing the socket path
     as an argument to the client. *Note Problems with mysql.sock::.

   * You are using Linux and one thread has died (core dumped).  In
     this case you must kill the other `mysqld' threads (for example,
     with the `mysql_zap' script before you can start a new MySQL
     server.  Note: Crashing.

   * You may not have read and write privilege to either the directory
     that holds the socket file or privilege to the socket file itself.
     In this case you have to either change the privilege for the
     directory / file or restart `mysqld' so that it uses a directory
     that you can access.

If you get the error message `Can't connect to MySQL server on
some_hostname', you can try the following things to find out what the
problem is :

   * Check if the server is up by doing `telnet your-host-name
     tcp-ip-port-number' and press `RETURN' a couple of times.  If there
     is a MySQL server running on this port you should get a responses
     that includes the version number of the running MySQL server.  If
     you get an error like `telnet: Unable to connect to remote host:
     Connection refused', then there is no server running on the given
     port.

   * Try connecting to the `mysqld' daemon on the local machine and
     check the TCP/IP port that `mysqld' it's configured to use
     (variable `port') with `mysqladmin variables'.

   * Check that your `mysqld' server is not started with the
     `--skip-networking' option.


automatically generated by info2www version 1.2.2.9