MySQL4.1と5.0を共存させた環境でMySQL5.0のmysqlコマンドで接続しようとすると、設定とは異なるsocketに接続しようとする
同一サーバ上に異なるバージョンのMySQLを起動させる必要があったため、下記の記事を元に進めていたのだが、最後の「5. 接続の確認」でエラーが出てしまった。後々忘れてしまいそうなのでメモしておく。解決はしていない。
環境
- CentOS 6.4
既存のMySQL
RPMパッケージを利用してインストールしておく。
- MySQL-client-standard-4.1.22-0.rhel4.x86_64.rpm
- MySQL-devel-standard-4.1.22-0.rhel4.x86_64.rpm
- MySQL-server-standard-4.1.22-0.rhel4.x86_64.rpm
- MySQL-shared-standard-4.1.22-0.rhel4.x86_64.rpm
追加するMySQL
最初はMySQL5.0の方もRPMパッケージを使うつもりだったのだけど、RPM同士だとどうやら設定ファイル等が衝突してしまうらしく、追加する方のMySQL5.0はソースインストールすることに。
- mysql-5.0.96.tar.gz
事象
# 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>