TL;DR
日本MySQLユーザ会会(MyNA会) 2024年8月オフライン! LTSが出たぞ祭り に行ってきました。
本編(?)、幕間(?)、LTと3回も登場してしまってすいません。
LT大会を企画していたけどその前のご歓談タイムにもプロジェクタとマイクを勝手に使って話してる人がいて、
これはその、みんながピザを食べ始めた時に「歓談タイムの間、プロジェクター空いてるなら借りますね!」って勝手に始めた幕間の話です。
もともとやろうとしていたことは、
ずっとMySQLをビルドし続けている自慢(?)のConoHa の環境をお目にかけようと思っていただけなんですが、
[yoku0825@yoku0825-conoha ~]$ ll /usr/mysql
total 32
drwxr-xr-x 10 yoku0825 yoku0825 4096 Jun 18 2021 5.0.96
drwxr-xr-x 11 yoku0825 yoku0825 4096 May 2 2021 5.1.73
drwxr-xr-x 13 yoku0825 yoku0825 4096 May 1 15:37 5.5.62
drwxr-xr-x 13 yoku0825 yoku0825 4096 Sep 15 2021 5.6.51
drwxr-xr-x 11 yoku0825 yoku0825 4096 Jun 4 15:21 5.7.44
drwxrwxr-x 13 yoku0825 yoku0825 4096 Aug 31 22:10 8.0.39
drwxrwxr-x 13 yoku0825 yoku0825 4096 Aug 20 15:43 8.4.2
drwxrwxr-x 13 yoku0825 yoku0825 4096 Jul 25 09:29 9.0.1
おれ「どれでも好きなものを起動しますよ?」
??「あれ、4.0は?」
「やってみますか」
「マジか」
みたいなノリで始まりました。
古いMySQLのバイナリが欲しいとなると頼りになるのは SH2さん の MySQL Archives - dbstudy.info
アクセスしてみたら3.23のバイナリまであったので、「折角なら3.23にしましょうか」みたいな感じでスタート。
素直にコンパイルできる自信は無いので、バイナリが欲しくてrpmパッケージを使う。
[yoku0825@yoku0825-conoha ~]$ sudo yum install https://dbstudy.info/mysqlarchives/3.23.58/generic/MySQL-3.23.58-1.i386.rpm
Loaded plugins: auto-update-debuginfo, fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
MySQL-3.23.58-1.i386.rpm | 8.2 MB 00:00:00
Examining /var/tmp/yum-root-lpP0lC/MySQL-3.23.58-1.i386.rpm: MySQL-3.23.58-1.i386
Marking /var/tmp/yum-root-lpP0lC/MySQL-3.23.58-1.i386.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package MySQL.i386 0:3.23.58-1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================================================================
Package Arch Version Repository Size
================================================================================================================================
Installing:
MySQL i386 3.23.58-1 /MySQL-3.23.58-1.i386 22 M
Transaction Summary
================================================================================================================================
Install 1 Package
Total size: 22 M
Installed size: 22 M
Is this ok [y/d/N]: y
..
当日ログ取ってなかったなあと思ってもう1回ログを作ろうとしたら、案外一発で入ってしまった。
取り敢えず mysqld
を起動してみる。
[yoku0825@yoku0825-conoha ~]$ /usr/sbin/mysqld --no-defaults
/usr/sbin/mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)
240901 18:23:44 Aborting
240901 18:23:44 /usr/sbin/mysqld: Shutdown Complete
/var/lib/mysql
が書ける状態になってない。
[yoku0825@yoku0825-conoha ~]$ sudo rm -r /var/lib/mysql
[yoku0825@yoku0825-conoha ~]$ sudo mkdir /var/lib/mysql
[yoku0825@yoku0825-conoha ~]$ sudo chown yoku0825. /var/lib/mysql
[yoku0825@yoku0825-conoha ~]$ /usr/sbin/mysqld --no-defaults
240901 21:35:00 /usr/sbin/mysqld: Table 'mysql.host' doesn't exist
ああ、datadir初期化してなかった。この時代(?) はまだ mysql_install_db
だったのはわかる。
[yoku0825@yoku0825-conoha ~]$ /usr/bin/mysql_install_db --no-defaults
Sorry, the host 'yoku0825-conoha' could not be looked up.
Please configure the 'hostname' command to return a correct hostname.
If you want to solve this at a later stage, restart this script with
the --force option
ああ、あった、 /etc/hosts
なりで自分自身のホスト名を名前解決できないといけなかったやつ(インストール後にホスト名を変えてるとこうなる)
今回は特に困らないので --force
で続行。
[yoku0825@yoku0825-conoha ~]$ /usr/bin/mysql_install_db --no-defaults --force
Preparing db table
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
240901 21:37:34 /usr/sbin/mysqld: Shutdown Complete
To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
This is done with:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h yoku0825-conoha password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd / ; /usr/bin/safe_mysqld &
You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; run-all-tests
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at https://order.mysql.com
rootのパスワードを設定しろよ、という当時お決まりの文句と、 mysqld_safe
ではなく safe_mysqld
(俺はこの時代を知らない!!) で起動しろということを言われる。
まあ気にせず mysqld
で直接起動する。
[yoku0825@yoku0825-conoha ~]$ /usr/sbin/mysqld --no-defaults
/usr/sbin/mysqld: ready for connections
なんともあっさりした出力…。
フォアグラウンドで起動するので別のターミナルからアクセスする。
ソケットファイルの場所がわからないので lsof
からたどる。
[yoku0825@yoku0825-conoha ~]$ ps auxwww | grep mysqld
yoku0825 1820 0.0 0.0 10696 836 pts/1 S+ 21:40 0:00 /usr/sbin/mysqld --no-defaults
yoku0825 1821 0.0 0.0 10696 836 pts/1 S+ 21:40 0:00 /usr/sbin/mysqld --no-defaults
yoku0825 1822 0.0 0.0 10696 836 pts/1 S+ 21:40 0:00 /usr/sbin/mysqld --no-defaults
yoku0825 1950 0.0 0.0 9092 680 pts/2 S+ 21:41 0:00 grep --color=auto mysqld
わーまだマルチスレッドじゃなくてマルチプロセスの頃だ!!!
[yoku0825@yoku0825-conoha ~]$ ps -elf | grep mysqld
0 S yoku0825 1820 1369 0 80 0 - 2674 poll_s 21:40 pts/1 00:00:00 /usr/sbin/mysqld --no-defaults
1 S yoku0825 1821 1820 0 80 0 - 2674 poll_s 21:40 pts/1 00:00:00 /usr/sbin/mysqld --no-defaults
1 S yoku0825 1822 1821 0 80 0 - 2674 sigsus 21:40 pts/1 00:00:00 /usr/sbin/mysqld --no-defaults
0 S yoku0825 2127 1833 0 80 0 - 2273 pipe_w 21:42 pts/2 00:00:00 grep --color=auto mysqld
[yoku0825@yoku0825-conoha ~]$ lsof -p 1820
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 1820 yoku0825 cwd DIR 253,2 4096 286555 /var/lib/mysql
mysqld 1820 yoku0825 rtd DIR 253,2 4096 2 /
mysqld 1820 yoku0825 txt REG 253,2 2110756 691929 /usr/sbin/mysqld
mysqld 1820 yoku0825 0u CHR 136,1 0t0 4 /dev/pts/1
mysqld 1820 yoku0825 1u CHR 136,1 0t0 4 /dev/pts/1
mysqld 1820 yoku0825 2u CHR 136,1 0t0 4 /dev/pts/1
mysqld 1820 yoku0825 3u IPv4 4401525 0t0 TCP *:mysql (LISTEN)
mysqld 1820 yoku0825 4u unix 0x0000000000000000 0t0 4401526 /var/lib/mysql/mysql.sock
mysqld 1820 yoku0825 5r FIFO 0,9 0t0 4401527 pipe
mysqld 1820 yoku0825 6w FIFO 0,9 0t0 4401527 pipe
ソケットファイルは /var/lib/mysql/mysql.sock
である、OK。
[yoku0825@yoku0825-conoha ~]$ mysql -uroot -S /var/lib/mysql/mysql.sock
ERROR 2027 (HY000): Malformed packet
ああ、これ mysql
コマンドラインクライアントと mysqld
の互換性がない時に出る決まり文句だ。
[yoku0825@yoku0825-conoha ~]$ mysql --version
mysql Ver 8.0.39 for Linux on x86_64 (Source distribution)
mysql
コマンドラインクライアントのバージョンが8.0だったから。5.0の mysql
コマンドラインクライアントならつなげるかな。
[yoku0825@yoku0825-conoha ~]$ /usr/mysql/5.0.96/bin/mysql -uroot -S /var/lib/mysql/mysql.sock
Warning: /usr/mysql/5.0.96/bin/mysql: unknown variable 'loose-binary-as-hex=0'
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 3.23.58
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>
いけた。
mysql> SELECT @@version, NOW();
+-----------+---------------------+
| @@VERSION | NOW() |
+-----------+---------------------+
| 3.23.58 | 2024-09-01 21:46:57 |
+-----------+---------------------+
1 row in set (0.00 sec)
当日はrpmインストールした時に俺の秘伝の(?) /etc/my.cnf
が消失して他のバージョンを起動できなくなったりとかしたけれど、今回はすんなりいってしまった。
令和6年にもなってMySQL 3.23が使いたくなった時の(?) 参考までに。