docker-composeでmysqlのコンテナを立ち上げて、mysql -h 127.0.0.1 -P 3306 -u root -p
で接続しようとしたらエラーで入れなかった。
2つ違うので引っかかった……。
一つ目のエラー
まず突き当たったのがこちら
ERROR 2002 (HY000): Can’t connect to local mysql server through socket ‘/var/run/mysqld/mysqld.sock’
解消方法
流用したmy.cnfにこんな感じでソケットの場所の指定が書いてあった。
my.cnf
socket=/var/lib/mysql/mysql.sock
この指定を消すことで、接続できるようになった。
こいつのせいでdockerのコンテナ内にソケットファイルが作られず、永遠にログインできなかった。
いろいろ調べた挙句、アホな理由だった。
二つ目のエラー
一つ目を解消して出てきたのが、こんなエラー。
RROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
解消方法
こんな感じでrootのパスワードを設定していたのだが、このパスワードがよくなかった。
docker-compose.yml
version: '3'
services:
db:
image: mysql:8.2
environment:
MYSQL_ROOT_PASSWORD: 'piyoPa6i4m$s'
volumes:
(略)
どうも$
が入っていると変数として認識されるらしく、$
なしのパスワードに変えたところ接続できるようになった。
ちなみにdocker-composeを立ち上げたときに不穏なWarningが出ていて、これがヒントだった。
(でも、その時はWARNだし……と無視していて痛い目を見た……)
WARN[0000] The “s” variable is not set. Defaulting to a blank string.
$マークのエスケープ方法はこちらに書いてくれていた。