SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

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

関連するメモ

コメント