podmanでMySQLを起動する
問題
MySQL8.4やMySQL9など起動したいです。
答え
podmanだと簡単。
動作確認的な状況でバージョンを変えて起動などにも便利。
MySQL8.4起動 以下2行でOK
podman pull docker.io/library/mysql:8.4
podman run -e MYSQL_ROOT_PASSWORD=パスワード -d -p 3306:3306 mysql:8.4
最新 latest を指定するとMySQL9系が入った(2025年3月)
podman pull docker.io/library/mysql:latest
podman run -e MYSQL_ROOT_PASSWORD=パスワード -d -p 3306:3306 mysql:latest
必要な時はコンテナのbashを起動できる。
podman exec -it コンテナ名 /bin/bash
中で mysql -u root -p すれば、中から接続可能。
ホスト側からも以下で接続できる(ローカルの3306ポートにコンテナの3306ポートを割り当てているので)。
mysql -h 127.0.0.1 -u root -p
MySQL8.4やMySQL9が起動している状態で、php5やphp7やphp8で接続してみる。
こんなファイルを用意。
$ cat test.php
<?php
$db = new PDO('mysql:host=127.0.0.1', 'root', 'パスワード');
$s = $db->query("select version()");
$row = $s->fetch();
var_dump($row);
php8、接続できますね。
php8.3 test.php
array(2) {
["version()"]=>
string(5) "8.4.4"
[0]=>
string(5) "8.4.4"
}
php7、接続できますね。
php7.4 test.php
array(2) {
["version()"]=>
string(5) "8.4.4"
[0]=>
string(5) "8.4.4"
}
php5、接続できませんね。
php5.6 test.php
PHP Warning: PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] in /xxx/test.php on line 2
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client' in /tmp/test.php:2
Stack trace:
#0 /tmp/test.php(2): PDO->__construct('mysql:host=127....', 'root', 'パスワード')
#1 {main}
thrown in /tmp/test.php on line 2
php7.4でMySQL9.2.0に接続できるのも確認できた。
コンテナ一覧と、停止。
# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
913fba5a4dda mysql:8.4 mysqld 9 minutes ago Up 9 minutes ago 0.0.0.0:3306->3306/tcp trusting_golick
# podman stop 913fba5a4dda
913fba5a4ddaf68a6042029c5b6ff6762a9351d20ab126ac27df8b690dece0be
コメント