This section provides troubleshooting suggestions for problems
starting the server. For additional suggestions for Windows
systems, see
.
If you have problems starting the server, here are some things
to try:
Check the
to
see why the server does not start. Log files are located in
the
for a Unix/Linux source
distribution). Look in the data directory for files with
names of the form
is the name of
your server host. Then examine the last few lines of these
files. Use
Specify any special options needed by the storage engines
you are using. You can create a
my.cnf
file and specify startup options for the engines that you
plan to use. If you are going to use storage engines that
support transactional tables (
InnoDB
,
NDB
), be sure that you have
them configured the way you want before starting the server.
If you are using
InnoDB
tables, see
InnoDB Configuration
for guidelines and
InnoDB Startup Options and System Variables
for option syntax.
Although storage engines use default values for options that
you omit, Oracle recommends that you review the available
options and specify explicit values for any options whose
defaults are not appropriate for your installation.
Make sure that the server knows where to find the
data directory
.
The
mysqld
server uses this directory as
its current directory. This is where it expects to find
databases and where it expects to write log files. The
server also writes the pid (process ID) file in the data
directory.
The default data directory location is hardcoded when the
server is compiled. To determine what the default path
settings are, invoke
mysqld
with the
--verbose
and
--help
options. If the data
directory is located somewhere else on your system, specify
that location with the
--datadir
option to
mysqld
or
mysqld_safe
,
on the command line or in an option file. Otherwise, the
server does not work properly. As an alternative to the
--datadir
option, you can
specify
mysqld
the location of the base
directory under which MySQL is installed with the
--basedir
, and
mysqld
looks for the
data
directory there.
To check the effect of specifying path options, invoke
mysqld
with those options followed by the
--verbose
and
--help
options. For example,
if you change location to the directory where
mysqld
is installed and then run the
following command, it shows the effect of starting the
server with a base directory of
/usr/local
:
$> ./mysqld --basedir=/usr/local --verbose --help
You can specify other options such as
--datadir
as well, but
--verbose
and
--help
must be the last
options.
Once you determine the path settings you want, start the
server without
--verbose
and
--help
.
If
mysqld
is currently running, you can
find out what path settings it is using by executing this
command:
$> mysqladmin variables
$> mysqladmin -h host_name variables
host_name
is the name of the
MySQL server host.
Make sure that the server can access the
data directory
.
The ownership and permissions of the data directory and its
contents must allow the server to read and modify them.
If you get
Errcode 13
(which means
Permission denied
) when starting
mysqld
, this means that the privileges of
the data directory or its contents do not permit server
access. In this case, you change the permissions for the
involved files and directories so that the server has the
right to use them. You can also start the server as
root
, but this raises security issues and
should be avoided.
Change location to the data directory and check the
ownership of the data directory and its contents to make
sure the server has access. For example, if the data
directory is
/usr/local/mysql/var
, use
this command:
$> ls -la /usr/local/mysql/var
If the data directory or its files or subdirectories are not
owned by the login account that you use for running the
server, change their ownership to that account. If the
account is named
mysql
, use these
commands:
$> chown -R mysql /usr/local/mysql/var
$> chgrp -R mysql /usr/local/mysql/var
Even with correct ownership, MySQL might fail to start up if
there is other security software running on your system that
manages application access to various parts of the file
system. In this case, reconfigure that software to enable
mysqld
to access the directories it uses
during normal operation.
Verify that the network interfaces the server wants to use
are available.
If either of the following errors occur, it means that some
other program (perhaps another
mysqld
server) is using the TCP/IP port or Unix socket file that
mysqld
is trying to use:
Can't start server: Bind on TCP/IP port: Address already in use
Can't start server: Bind on unix socket...
Use
ps
to determine whether you have
another
mysqld
server running. If so,
shut down the server before starting
mysqld
again. (If another server is
running, and you really want to run multiple servers, you
can find information about how to do so in
Running Multiple MySQL Instances on One Machine
.)
If no other server is running, execute the command
telnet
your_host_name
tcp_ip_port_number
.
(The default MySQL port number is 3306.) Then press Enter a
couple of times. If you do not get an error message like
telnet: Unable to connect to remote host:
Connection refused
, some other program is using
the TCP/IP port that
mysqld
is trying to
use. Track down what program this is and disable it, or tell
mysqld
to listen to a different port with
the
--port
option. In this
case, specify the same non-default port number for client
programs when connecting to the server using TCP/IP.
Another reason the port might be inaccessible is that you
have a firewall running that blocks connections to it. If
so, modify the firewall settings to permit access to the
port.
If the server starts but you cannot connect to it, make sure
that you have an entry in
/etc/hosts
that looks like this:
127.0.0.1 localhost