環境
- Mac OS Monterey
- Sequel Ace 3.4.4
症状
Sequel Proの後継アプリのSequel Ace。バグが治ってたり、機能が増えていたりと使わない理由がまったくないのだが、1つだけ問題がある。
ソケット接続ができないのである。
例えば以下のように接続しようとすると
ソケット接続に失敗しました! Unable to connect via the socket, or the request timed out. Double-check that the socket path is correct and that you have the necessary privileges, and that the server is running. MySQL said: Can't connect to local MySQL server through socket '/Users/thr3a/hoge.sock' (1)
と言われてエラーで接続できない。
ちなみに
mysql -S /Users/thr3a/hoge.sock -uthr3a -p
での接続はできるので、MySQL側は悪くなさそう
原因
MacOSのせい。というかセキュリティの問題。
ここ最近のMacOSでは野良アプリが自由にソケット通信できなくなってしまっている。ユーザーのホームディレクトリでも許可がないらしくエラーになる。
一昔は /tmp に作れば接続できたのだがMontereyではそれもで着なくなってしまった。
じゃあどうすればいいのかというとSequel Ace内のディレクトリを指定する。
~/Library/Containers/com.sequel-ace.sequel-ace/Data
の中は許可された場所なのでSequel Aceがソケット通信できる。
つまり ~/Library/Containers/com.sequel-ace.sequel-ace/Data/mysql.sock にソケットを設置すれば良い