Unix上の MySQL は mysqld
サーバに次の2つの方法で接続することができます。Unix
ソケット、これはファイルシステム上のファイル(デフォルトでは
/tmp/mysqld.sock
)を通して接続します。または
TCP/IPで、これはポート番号を通して接続します。
Unix ソケットは、TCP/IP
より高速ですが、同じコンピュータのサーバに接続する場合にしか使用できません。Unix
ソケットは、ホスト名を指定しない場合、または特別なホスト名
localhost
を指定する場合に使用されます。
Windows では、mysqld
サーバが 9x/Me
で動作している場合、TCP/IP
を介してのみ接続できます。サーバが NT/2000/XP
で動作しており、mysqld が
--enable-named-pipe
で起動している場合は、名前付きパイプと接続することもできます。名前付きパイプの名前は
MySQL です。 mysqld
に接続する際にホスト名を与えない場合は、MySQL
クライアントは最初に名前付きパイプに接続しようとします。これが正しく機能しない場合は、TCP/IP
ポートに接続します。ホスト名として
.
を使用することにより、Windows
の名前付きパイプを強制的に使用できます。
エラー(2002)Can't connect to ...
は、通常、MySQL
サーバがシステム上で動作していないか、間違ったソケットファイルや
TCP/IP ポートを使用して、mysqld
サーバに接続しようとした場合に発生します。
サーバ上で mysqld
というプロセスが動作しているかどうか、(ps
か、Windows
の場合はタスクマネージャを使用して)最初に確認してください。mysqld
プロセスがなければ、これを起動してください。
See 項2.4.2. 「MySQL サーバの起動に関する問題」。
mysqld
プロセスが動作している場合は、さまざまな接続を試してサーバを確認できます(ポート番号とソケットのパス名は、当然セットアップ時と異なる可能性があります)。
shell>mysqladmin version
shell>mysqladmin variables
shell>mysqladmin -h `hostname` version variables
shell>mysqladmin -h `hostname` --port=3306 version
shell>mysqladmin -h 'ip for your host' version
shell>mysqladmin --protocol=socket --socket=/tmp/mysql.sock version
hostname
コマンドは、フォワードクォートではなくバッククォートで囲んでください。これによって、hostname
の出力(つまり現在のホスト名)が
mysqladmin
コマンドに代入されます。
Can't connect to local MySQL server
エラーが発生する理由として、以下のことが考えられます。
mysqld
が動作していない。
MIT-pthreads
を使用するシステム上で実行している。
ネイティブスレッドを持たないシステムで実行している場合、mysqld
は MIT-pthreads パッケージを使用する。See
項2.2.3. 「MySQL がサポートしているオペレーティングシステム」。ただし、すべてのMIT-pthreads
バージョンが Unix
ソケットをサポートしているわけではない。ソケットサポートのないシステムでは、サーバに接続する際に、常にホスト名を明示的に指定する必要がある。以下のコマンドを使用して、サーバへの接続を確認する。
shell> mysqladmin -h `hostname` version
誰かが、mysqld
が使用する Unix
ソケット(デフォルトでは
/tmp/mysqld.sock
)を削除した。MySQL
ソケットを削除する cron
ジョブ(たとえば、/tmp
ディレクトリから古いファイルを削除するジョブ)を行っている可能性がある。mysqladmin
version
を実行し、mysqladmin
が使用するソケットが本当に存在するかどうかを常にチェックすることができる。この場合の修正方法は、mysqld.sock
を削除しないように cron
ジョブを変更するか、ソケットを別の場所に移動させることである。
See 項A.4.5. 「MySQL ソケットファイル /tmp/mysql.sock
の保護または変更方法」。
--socket=/path/to/socket
オプションを指定して、mysqld
サーバを開始した。サーバのソケットパス名を変更する場合は、MySQL
クライアントに新しいパスを通知する必要がある。パスを通知するには、ソケットパスを引数としてクライアントに提供する。
See 項A.4.5. 「MySQL ソケットファイル /tmp/mysql.sock
の保護または変更方法」。
Linux を使用中にスレッドが 1
つ消滅した(コアダンプした)。この場合、(たとえば、新しい
MySQL サーバを実行する前に
mysql_zap
スクリプトを使用して)他の
mysqld
スレッドを強制終了する必要がある。 See
項A.4.1. 「MySQL が何度もクラッシュする場合に行うこと」。
ソケットファイルを保持しているディレクトリ、またはソケットファイル自体への読み取り権限と書き込み権限がない可能性がある。この場合、アクセス可能なディレクトリを使用するように、ディレクトリまたはファイルに対する権限を変更するか、mysqld
を再起動する必要がある。
エラーメッセージ Can't connect to MySQL server
on some_hostname
が発生した場合は、以下を行って問題を突き止めることができます。
telnet your-host-name tcp-ip-port-number
を実行してサーバが立ち上がっているかどうかを確認し、Enter
キーを数回押す。このポートで MySQL
サーバが動作している場合は、動作中の MySQL
サーバのバージョン番号を含むレスポンスが返ってくる。telnet:
Unable to connect to remote host: Connection
refused
などのエラーが発生する場合は、サーバは所定のポートで動作していない。
ローカルマシンの mysqld
デーモンに接続し、mysqladmin
variables
で mysqld
が使用するように設定された TCP/IP
ポート(変数
port
)を確認する。
mysqld
サーバが、--skip-networking
オプションで起動されていないか確認する。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.