ponkiti's blog

主に自分用、イベント参加メモや備忘録として利用

MySQL4.1と5.0を共存させた環境でMySQL5.0のmysqlコマンドで接続しようとすると、設定とは異なるsocketに接続しようとする

同一サーバ上に異なるバージョンのMySQLを起動させる必要があったため、下記の記事を元に進めていたのだが、最後の「5. 接続の確認」でエラーが出てしまった。後々忘れてしまいそうなのでメモしておく。解決はしていない。

環境

既存のMySQL

RPMパッケージを利用してインストールしておく。

追加するMySQL

最初はMySQL5.0の方もRPMパッケージを使うつもりだったのだけど、RPM同士だとどうやら設定ファイル等が衝突してしまうらしく、追加する方のMySQL5.0はソースインストールすることに。

事象

# service mysqld50 start
Starting MySQL. SUCCESS!

MySQL5.0の起動はできたが、参照したサイトの「5. 接続の確認」を試すとエラー。

# /usr/local/mysql50/bin/mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  • my.cnfのパス: /usr/local/mysql50/var/my.cnf
  • socketのパス: /usr/local/mysql50/var/mysql.sock

そもそもエラーメッセージのsocketのパスと/usr/local/mysql50/var/my.cnfに設定したsocketのパスが異なっている。

# mysql_config --socket
/var/lib/mysql/mysql.sock

対応(1)

/usr/local/mysql50/var/my.cnfの [mysqld] と [client] に下記を追加。ちなみに [mysqld_safe] にはすでに記述あり。

socket=/usr/local/mysql50/var/mysql.sock

再起動させてみたが、エラーは変わらず、効果なし。

対応(2)

socketを指定してMySQLを起動してみる。

# mysql --socket=/usr/local/mysql50/var/mysql.sock
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.96-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

server version: 5.0.96と出ているので、MySQL5.0が起動したらしい。なんだかよく分からない。

その他

MySQL4.1を起動して、/usr/local/mysql50/bin/mysql -u rootを実行すると接続できるが、Server version: 4.1.22となる。

# /etc/rc.d/init.d/mysql start
Starting MySQL SUCCESS!

# /usr/local/mysql50/bin/mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 4.1.22-standard-log

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

参照