Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


2.10.1.2 MySQL を自動的に起動および停止する

一般的には、mysqld サーバーは次のいずれかの方法で起動します。

mysqld_safe スクリプトおよび mysql.server スクリプト、Solaris/OpenSolaris SMF、および OS X Startup Item (または MySQL Preference Pane) を使用して、サーバーを手動で、あるいはシステムの起動時に自動的に起動できます。mysql.server および Startup Item は、サーバーの停止にも使用できます。

mysql.server スクリプトを使用してサーバーを手動で起動または停止するには、サーバーを start 引数または stop 引数を使用して呼び出します。

shell> mysql.server start
shell> mysql.server stop

mysql.server は、サーバーを起動する前に場所を MySQL インストールディレクトリに変更し、次に mysqld_safe を実行します。サーバーを特定のユーザーとして起動するには、このセクションで後述するように、適切な user オプションを /etc/my.cnf オプションファイルの [mysqld] グループに追加します。(バイナリ配布の MySQL を標準と異なる場所にインストールした場合には mysql.server の編集が必要になる場合があります。mysqld_safe を実行する前に場所を適切なディレクトリに変更するように、それを修正します。これを行うと、将来 MySQL をアップグレードすると変更したバージョンの mysql.server が上書きされる場合がありますので、編集したバージョンを再インストールできるようにコピーを取っておくとよいでしょう。)

mysql.server stop は、サーバーに信号を送って停止します。mysqladmin shutdown を実行してサーバーを手動で停止することもできます。

サーバー上の MySQL を自動的に起動および停止するには、起動および停止のコマンドを /etc/rc* ファイルの適切な場所に加える必要があります。

Linux サーバーの RPM パッケージ (MySQL-server-VERSION.rpm) またはネイティブの Linux パッケージインストールを使用する場合は、mysql.server スクリプトは /etc/init.d のディレクトリに mysql という名前でインストールされる場合があります。Linux RPM パッケージに関する詳細は、セクション2.5.5「RPM パッケージを使用して MySQL を Linux にインストールする」を参照してください。

ベンダーによっては、起動スクリプトを mysqld のような別名でインストールする RPM パッケージを提供している場合もあります。

MySQL をソース配布から、あるいは mysql.server を自動的にインストールしないバイナリの配布形式を使用してインストールする場合、それを手動でインストールできます。そのスクリプトは、MySQL インストールディレクトリの support-files ディレクトリあるいは MySQL のソースツリーにあります。

mysql.server を手動でインストールするには、それを /etc/init.d ディレクトリに mysql の名前でコピーし、次にそれを実行ファイルにします。それには、mysql.server のある適切なディレクトリに場所を変更して、次のコマンドを実行します。

shell> cp mysql.server /etc/init.d/mysql
shell> chmod +x /etc/init.d/mysql
注記

古い Red Hat システムは /etc/init.d ではなく /etc/rc.d/init.d ディレクトリを使用しています。前述のコマンドを適宜調整します。または、最初に /etc/init.d/etc/rc.d/init.d を指すシンボリックリンクとして作成します。

shell> cd /etc
shell> ln -s rc.d/init.d .

スクリプトをインストールしたあと、それを有効にしてシステムの起動時に実行するために必要なコマンドは、使用しているオペレーティングシステムによって異なります。Linux では、chkconfig を使用します。

shell> chkconfig --add mysql

一部の Linux システムでは、mysql スクリプトを完全に有効にするには次のコマンドも必要になる場合があります。

shell> chkconfig --level 345 mysql on

FreeBSD では、起動スクリプトは通常 /usr/local/etc/rc.d/ にあります。rc(8) のマニュアルページでは、このディレクトリのスクリプトはそれらのベース名が *.sh シェルファイル名のパターンに一致したときのみ実行できると記載されています。そのディレクトリの、その他のファイルあるいおよびディレクトリは警告なしで無視されます。つまり FreeBSD では、自動起動を有効にするには mysql.server スクリプトを /usr/local/etc/rc.d/mysql.server.sh としてインストールするべきです。

前述の設定の代案として、オペレーティングシステムの中には /etc/rc.local あるいは /etc/init.d/boot.local を使用して起動時に追加のサービスを起動するものもあります。この方法で MySQL を起動するには、次のようなコマンドを適切な起動ファイルに追加します。

/bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'

ほかのシステムの起動スクリプトのインストール方法についてはそのオペレーティングシステムのドキュメントをお読みください。

mysql.server のオプションを、グローバル /etc/my.cnf ファイルに追加できます。一般的な /etc/my.cnf ファイルは次のようになります。

[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql

[mysql.server]
basedir=/usr/local/mysql

The mysql.server スクリプトは、basedirdatadir、および pid-file の各オプションをサポートしています。指定する場合は、コマンド行ではなくオプションファイルに配置する必要がありますmysql.server は、start および stop のみをコマンド行の引数としてサポートしています。

次の表は、サーバーおよび各起動スクリプトがオプションファイルから読み取るオプショングループを示しています。

表 2.12 MySQL 起動スクリプトとサポートされるサーバーオプショングループ

スクリプト オプショングループ
mysqld [mysqld][server][mysqld-major_version]
mysqld_safe [mysqld][server][mysqld_safe]
mysql.server [mysqld][mysql.server][server]

[mysqld-major_version] は、[mysqld-5.5] および [mysqld-5.6] のような名前のグループが、5.5.x、5.6.x、などのバージョンのサーバーによって読み取られることを意味します。この機能は、所定のリリースシリーズのサーバーによってのみ読み取られるオプションを指定するために使用できます。

下位互換性のため、mysql.server[mysql_server] グループも読み取り、mysqld_safe[safe_mysqld] グループも読み取ります。ただし、MySQL 5.6 を使用する場合は、代わりに [mysql.server] および [mysqld_safe] グループを使用するようにオプションファイルを更新するとよいでしょう。

MySQL 構成ファイルとその構造とコンテンツについては、セクション4.2.6「オプションファイルの使用」を参照してください。


User Comments
  Posted by on July 29, 2003
Remember that on FreeBSD or any *nix system that supports running scripts from /usr/local/etc/rc.d
you should do for security purposes:
#chmod 100 *
  Posted by Steven Casey on September 9, 2003
Running Mandrake Linux 9.1/MySQL 4.x: Following the instructions for auto-start didn't work. Drove me crazy until I created the startup symbolic link in the rc5.d instead of rc3.d.

If you need to boot without graphics or just level 3, then put the symbolic link to mysql.server in rc3.d
  Posted by Mongo Mongoson on March 26, 2004
Slackware 8 MySQL 4 autostart instructions:

I installed MySQL 4.0.18 on Slackware v8. The "auto-start" instructions don't seem to apply to Slackware. I ended up adding this to my /etc/rc.d/rc.M:

# Start MySQL server:
if [ -x /etc/rc.d/rc.mysql ]; then
. /etc/rc.d/rc.mysql start
fi

then I added this to /etc/rc.d/rc.K above the #Kill all processes line:

# Shut down the MySQL database server
if [ -x /etc/rc.d/rc.mysql ]; then
. /etc/rc.d/rc.mysql stop
fi

Then I created the /etc/rc.d/rc.mysql script:

#!/bin/sh
#
# Start the MySQL database server
#

case "$1" in
'start')
/usr/local/mysql/support-files/mysql.server start ;;
'stop')
/usr/local/mysql/support-files/mysql.server stop ;;
'restart')
/usr/local/mysql/support-files/mysql.server restart ;;
*)
echo "usage $0 start|stop|restart" ;;
esac

That got me going and seems to work fine. If there's a real pro out there who knows a nicer/more correct way please let me know at cuculi54986@yahoo.com -- Jon Reed

  Posted by Gabriel Barazer on October 12, 2004
I run a linux 2.6 server with only MySQL running (P4 3.2Ghz / 2GB) and sometimes (mainly when the server has run for a little time ,when it has reached an uptime of...30 minutes to few days), it becomes impossible to stop it with the right signal, or with mysqladmin (mysqladmin shutdown, or mysql.server stop). Mysql.server says it gaves up waiting and mysqladmin freeze too. nothing helpful in the error log, and finally i have to send a KILL signal to stop it. I've got this problem with all mysql 4 & 4.1 versions...

So to avoid a reboot failure (if the mysql.server script doesn't stop mysqld), it's better to add a kill command (which send SIGKILL to mysqld) in the mysql.server script after the waiting loop.
  Posted by on December 11, 2005
On Slackware 10, just copy mysql.server to /etc/rc.d and rename it to rc.mysqld

cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/rc.mysqld
  Posted by Wade Smith on January 19, 2006
On FreeBSD 5.x according to the mysql-server.sh file installed automatically with the ports collection for 4.1.16, you have to add the line in your rc.conf to have automatic startup for mysqld:

mysql_enable="YES"

Don't know if this helps but I had to make the connect during post port installation to get mine to always come up without manual intervention.

  Posted by Sergio Tam on June 5, 2006
En FreeBsd para arrancar mysql después de instalarlo
editar el archivo /etc/rc.conf y agregar las siguiente linea mysql_enable="YES"
y después en la consola terminal ejecutas el siguiente comando /usr/local/etc/rc.d/mysql-server.sh start,
si lo haces todo en este orden no tendrás problemas para iniciar el servidor.
Si no agregas la linea en el rc.conf y ejecutas el siguiente comando /usr/local/etc/rc.d/mysql-server.sh start
te marcara el siguiente error Connect to server at 'localhost' failed error: 'Can't connect to local MySQL server through socket '/temp/mysql.sock' exists!
Saludos
  Posted by dennis pickering on March 4, 2011
On Fedora 13, 3 yum installs were needed. The first two were not sufficient to load the normal init.d startup script. Third one did.

yum install mysql
yum install php-mysql
yum install mysql-server

Also. chkconfig is ok. ntsysv as a more interactive and visual.

  Posted by Morten Bjoernsvik on August 16, 2011
(V5.5.15 build from sources opensuse11.4)

I think the support-files/mysql.server needs to be rewritten. It is way to complex for just managing mysqld_safe

The documentation urge You to install as a non root user, but this script does not take --user into account, Even though you add user='mysql_test' to the my.conf file.

In order to start I need the following command:
/opt/mysql/bin/mysqld_safe --user='mysql_test' --datadir='/home/mysqldata' --basedir=/opt/mysql

I have to use
/etc/init.d/mysql.server start --user='mysql_test'
to get it to work. But it will not autostart

I just added a $user variable to the script and pushed it into the $mysql_safe command. then it works.

Sign Up Login You must be logged in to post a comment.