Generally, you start the mysqld
server in one of three ways:
-
By invoking
mysql.server
. This script is used primarily at
system startup and shutdown, and is described more fully in
4.15.3 Démarrer et arrête MySQL automatiquement.
-
By invoking
safe_mysqld
, which tries to determine the proper options
for mysqld
and then runs it with those options.
-
By invoking
mysqld
directly.
Whichever méthode you use to start the server, if it fails to start up
correctly, check the log file to see if you can find out why. Log files
are located in the data directory (typically
`/usr/local/mysql/data' for a binary distribution,
`/usr/local/var' for a source distribution). Look in the data
directory for files with names of the form `host_name.err' and
`host_name.log' where host_name
is the name of your server
host. Then check the last few lines of these files:
shell> tail host_name.err
shell> tail host_name.log
When the mysqld
daemon starts up, it changes directory to the
data directory. This is where it expects to write log files and the pid
(process ID) file, and where it expects to find databases.
The data directory location is hardwired in when the distribution is
compiled. However, if mysqld
expects to find the data directory
somewhere other than where it really is on your system, it will not work
properly. If you have problems with incorrect paths, you can find out
what options mysqld
allows and what the default path settings are by
invoking mysqld
with the --help
option. You can override the
defaults by specifying the correct pathnames as command-line arguments to
mysqld
. (These options can be used with safe_mysqld
as well.)
Normally you should need to tell mysqld
only the base directory under
which MySQL is installed. You can do this with the --basedir
option. You can also use --help
to check the effect of changing path
options (note that --help
must be the final option of the
mysqld
command). For example:
shell> EXECDIR/mysqld --basedir=/usr/local --help
Once you determine the path settings you want, start the server without
the --help
option.
If you get the following error, it means that some other program (or another
mysqld
server) is already using the TCP/IP port or socket
mysqld
is trying to use:
Can't start server: Bind on TCP/IP port: Address already in use
or
Can't start server : Bind on unix socket...
Use ps
to make sure that you don't have another mysqld
server
running. If you can't find another server running, you can try to execute
the command telnet your-host-name tcp-ip-port-number
and press
RETURN
a couple of times. If you don't get a error message like
telnet: Unable to connect to remote host: Connection refused
,
something is using the TCP/IP port mysqld
is trying to use.
mysql_install_db
, and 19.3 Faire tourner plusieurs serveurs MySQL sur la même machine.
The safe_mysqld
script is written so that it normally is able to start
a server that was installed from either a source or a binary version of
MySQL, even if these install the server in slightly different
locations. safe_mysqld
expects one of these conditions to be true:
-
The server and databases can be found relative to the directory from which
safe_mysqld
is invoked. safe_mysqld
looks under its working
directory for `bin' and `data' directories (for binary
distributions) or for `libexec' and `var' directories (for source
distributions). This condition should be met if you execute
safe_mysqld
from your MySQL installation directory (for
example, `/usr/local/mysql' for a binary distribution).
-
If the server and databases cannot be found relative to its working directory,
safe_mysqld
attempts to locate them by absolute pathnames. Typical
locations are `/usr/local/libexec' and `/usr/local/var'.
The actual locations are determined when the distribution was built from which
safe_mysqld
comes. They should be correct if
MySQL was installed in a standard location.
Since safe_mysqld
will try to find the server and databases relative
to its own working directory, you can install a binary distribution of
MySQL anywhere, as long as you start safe_mysqld
from the
MySQL installation directory:
shell> cd mysql_installation_directory
shell> bin/safe_mysqld &
If safe_mysqld
fails, even when invoked from the MySQL
installation directory, you can modify it to use the path to mysqld
and the pathname options that are correct for your system. Note that if you
upgrade MySQL in the future, your modified version of
safe_mysqld
will be overwritten, so you should make a copy of your
edited version that you can reinstall.
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 'your-host-name' variables
If safe_mysqld
starts the server but you can't connect to it,
you should make sure you have an entry in `/etc/hosts' that looks like
this:
127.0.0.1 localhost
This problem occurs only on systems that don't have a working thread
library and for which MySQL must be configured to use MIT-pthreads.