vagrant に開発環境を構築しているのですが、mysqlを5.5→5.7にアップデートして以降、
rails s -b 0.0.0.0
というコマンドを実行してpumaを起動する度に、以下のエラーが出ます。
Puma caught this error: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (Mysql2::Error)
一応、手間ですが、毎回以下のコマンドを実行すれば、問題なく接続出来ます。
$ sudo /etc/init.d/mysqld restart
が、毎回面倒なので、解決したいです。
###試したこと
database.ymlに以下を記載し、socketを指定
socket: /var/lib/mysql/mysql.sock
/etc/my.cnf.d のファイルの[mysqld]のsocketのパスを以下に。
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock #socket=/tmp/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character-set-server=utf8 default-storage-engine=InnoDB innodb_file_per_table [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [client] socket=/var/lib/mysql/mysql.sock
その他、以下のようにパスを確認しています。
mysqladmin -u root -p version Enter password: mysqladmin Ver 8.42 Distrib 5.7.17, for Linux on x86_64 Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 5.7.17 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/lib/mysql/mysql.sock Uptime: 1 min 0 sec
mysql_config --socket /var/lib/mysql/mysql.sock
どうもvagrantを停止すると、/var/lib/mysqlからmysql.sockが消えてしまい、vagrantを再度起動しても消えたままでファイルがないと怒られているような気がします。
何か見逃しているところがありますでしょうか??
▼その他、関係ありそうなファイル
/etc/init.d/mysqldの内容(一部)
get_mysql_option mysqld datadir "/var/lib/mysql" datadir="$result" get_mysql_option mysqld socket "$datadir/mysql.sock" socketfile="$result" get_mysql_option mysqld_safe log-error "/var/log/mysqld.log" errlogfile="$result" get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld.pid" mypidfile="$result" case $socketfile in /*) adminsocket="$socketfile" ;; *) adminsocket="$datadir/$socketfile" ;; esac install_validate_password_sql_file () { local dir local initfile dir=/var/lib/mysql initfile="$(mktemp $dir/install-validate-password-plugin.XXXXXX.sql)" chown mysql:mysql "$initfile" echo "INSERT INTO mysql.plugin (name, dl) VALUES ('validate_password', 'validate_password.so');" > "$initfile" echo "SHUTDOWN;" >> "$initfile" echo "$initfile" } start(){ [ -x $exec ] || exit 5 # check to see if it's already running RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1) if [ $? = 0 ]; then # already running, do nothing action $"Starting $prog: " /bin/true ret=0 elif echo "$RESPONSE" | grep -q "Access denied for user" then # already running, do nothing action $"Starting $prog: " /bin/true ret=0 else # prepare for start if [ ! -e "$errlogfile" -a ! -h "$errlogfile" -a "x$(dirname "$errlogfile")" = "x/var/log" ]; then install /dev/null -m0640 -omysql -gmysql "$errlogfile" fi [ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile" if [ ! -d "$datadir/mysql" ] ; then
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。