This section provides troubleshooting suggestions for problems starting the server. For additional suggestions for Windows systems, see Section 2.3.6, “Troubleshooting a Microsoft Windows MySQL Server Installation”.
If you have problems starting the server, here are some things to try:
Check the error log to
see why the server does not start. Log files are located in
the data directory
C:\Program Files\MySQL\MySQL Server
5.7\data on Windows,
/usr/local/mysql/data for a Unix/Linux
binary distribution, and
for a Unix/Linux source distribution). Look in the data
directory for files with names of the form
host_name is the name of your
server host. Then examine the last few lines of these files.
tail to display them:
Specify any special options needed by the storage engines you
are using. You can create a
and specify startup options for the engines that you plan to
use. If you are going to use storage engines that support
transactional tables (
NDB), be sure that you have them
configured the way you want before starting the server. If you
InnoDB tables, see
Section 14.3, “InnoDB Configuration” for guidelines and
Section 14.12, “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
--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 will 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
mysqld looks for the
data directory there.
To check the effect of specifying path options, invoke
mysqld with those options followed by the
--help options. For example, if
you change location into 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
./mysqld --basedir=/usr/local --verbose --help
If mysqld is currently running, you can find out what path settings it is using by executing this command:
host_name is the name of the MySQL
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 into 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
mysql, use these commands:
chown -R mysql /usr/local/mysql/varshell>
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.
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 Section 5.3, “Running Multiple MySQL Instances on One Machine”.)
If no other server is running, execute the command
telnet . (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
--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
looks like this: