Spec-Zone .ru
спецификации, руководства, описания, API
|
This section provides troubleshooting suggestions for problems starting the server on Unix. If you are using Windows, 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 (typically C:\Program Files\MySQL\MySQL Server 5.6\data
on
Windows, /usr/local/mysql/data
for a Unix binary distribution, and /usr/local/var
for a Unix source distribution). Look in the data
directory for files with names of the form
and host_name
.err
, where host_name
.loghost_name
is the name of your server host. Then examine
the last few lines of these files. On Unix, use tail
to display them:
shell>tail
shell>host_name
.errtail
host_name
.log
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 Section
14.2.1.2, "Configuring InnoDB
" for guidelines and Section
14.2.6, "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 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 --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 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 /usr/local
:
shell> ./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:
shell> mysqladmin
variables
Or:
shell> 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.
On Unix, 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:
shell> 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:
shell>chown -R mysql /usr/local/mysql/var
shell>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 useCan'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.6, "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 your_host_name
tcp_ip_port_number
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
If you cannot get mysqld to start, try to make a trace file to find the
problem by using the --debug
option. See