2.10.5 Starting and Stopping MySQL Automatically
This section discusses methods for starting and stopping the MySQL server.
Generally, you start the mysqld server in one of these ways:
Invoke mysqld directly. This works on any platform.
On Windows, you can set up a MySQL service that runs automatically when Windows starts. SeeSection 2.3.5.8, “Starting MySQL as a Windows Service”.
On Unix and Unix-like systems, you can invoke mysqld_safe, which tries to determine the proper options for mysqld and then runs it with those options. See Section 4.3.2, “mysqld_safe — MySQL Server Startup Script”.
On Linux systems that support systemd, you can use it to control the server. See Section 2.5.10, “Managing MySQL Server with systemd”.
On systems that use System V-style run directories (that is,
/etc/init.d
and run-level specific directories), invoke mysql.server. This script is used primarily at system startup and shutdown. It usually is installed under the namemysql
. The mysql.server script starts the server by invoking mysqld_safe. SeeSection 4.3.3, “mysql.server — MySQL Server Startup Script”.On OS X, install a launchd daemon to enable automatic MySQL startup at system startup. The daemon starts the server by invoking mysqld_safe. For details, see Section 2.4.3, “Installing a MySQL Launch Daemon”. A MySQL Preference Pane also provides control for starting and stopping MySQL through the System Preferences. See Section 2.4.4, “Installing and Using the MySQL Preference Pane”.
On Solaris, use the service management framework (SMF) system to initiate and control MySQL startup.
systemd, the mysqld_safe and mysql.server scripts, Solaris SMF, and the OS X Startup Item (or MySQL Preference Pane) can be used to start the server manually, or automatically at system startup time. systemd,mysql.server, and the Startup Item also can be used to stop the server.
The following table shows which option groups the server and startup scripts read from option files.
Table 2.14 MySQL Startup Scripts and Supported Server Option Groups
Script | Option Groups |
---|---|
mysqld | [mysqld] , [server] , [mysqld-* major_version*] |
mysqld_safe | [mysqld] , [server] , [mysqld_safe] |
mysql.server | [mysqld] , [mysql.server] , [server] |
[mysqld-*
major_version*]
means that groups with names like [mysqld-5.6]
and [mysqld-5.7]
are read by servers having versions 5.6.x, 5.7.x, and so forth. This feature can be used to specify options that can be read only by servers within a given release series.
For backward compatibility, mysql.server also reads the [mysql_server]
group and mysqld_safe also reads the [safe_mysqld]
group. To be current, you should update your option files to use the [mysql.server]
and[mysqld_safe]
groups instead.
For more information on MySQL configuration files and their structure and contents, see Section 4.2.2.2, “Using Option Files”.
PREV HOME UP NEXT
User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Posted by Mike G on February 25, 2016
CAVEAT: If you are trying to run mysql as a user in a non-standard location, and a '/etc/my.cnf' exists that is readable by your user, the 'my_print_defaults' program used in the sample init script will set precedence to the '/etc/my.cnf' file, such that any configuration files you provide will be secondary.
to remedy this in the init script, simply run this sed one-liner:
sed -i 's@extra_args="-e basedir/my.cnf"@' PATH_TO_YOUR_INIT_SCRIPT
This will force my_print_defaults to look in $basedir for a my.cnf first.
Personally I see this as a flaw - this behavior precludes anyone from using the mysql init scripts to run more than one mysql instance on a machine that happens to have a global installation as well. my_print_defaults should prioritize $basedir/my.cnf over /etc/my.cnf.