経緯
EC2にあるDBをバックアップしようとmysqldump
を実行したら見慣れてるエラーが出た。
sudo mysqldump -u tiikawa -p rou_kusamusiri_db > 2024_0905_rou_kusamusiri_db.sql
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) while connecting to the MySQL server
mysqlにsudo権限でログインできる&ステータスでアクティブなのは確認してるので
ソケットファイルがないのはおかしいと思い設定ファイルを見てみる
mysqld.cnf
[mysqld]
socket=/run/mysqld/mysql.sock
/var/run/mysqld/
mysql.sock
mysql.sock.lock
mysqlx.sock
mysqlx.sock.lock
mysqld.cnf
でソケットファイルの指定があり
mysql.sock
を名前指定してるからmysqld.sock
が見つからず接続できないってコト?(ちいかわ感)
mysql起動時にソケットファイルは自動作成されるためmysqld.sock
が作成されないと思われる。
既存環境なのでsockファイルの名前を変更するのは流石に影響がデカすぎる‥
結論
-h
オプションを使用してTCP/IP経由でコマンド実行する必要があった。
補足
どうやらソケットファイル経由ではなくTCP/IP経由でやる必要があるらしい。
ホストのIPを明示的に指定する必要があるらしい。
sudo mysqldump -h 127.0.0.1 -u tiikawa -p rou_kusamusiri_db > 2024_0905_rou_kusamusiri_db.sql
上記のようにローカルのIPを指定したらうまくいった。
そういえば別件でRDSからEC2にmysqldumpしたときは確かにホスト指定してたなと。
初歩的なことですが解決して良かったです。
最後に
どうも新人見習い社会人です。
会社のナレッジ共有ツールで言語化してもほぼ誰にも見られない状態なのでこちらに投稿します。
保険をかけますが新人見習い社会人なのでご容赦ください。