MysqlがインストールされているマシンのCentOS 7端末からmysqlにログインしようとすると、次のエラーが発生します。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
mysql.sock
はどこにありますか。また、このエラーを解決するにはどうすればよいですか?
ここに私がすでに試したことのいくつかがあります:
1.)cd /var/lib/mysql
およびls -al
を試しましたが、結果のファイルリストにmysql.sock
が含まれていませんでした。
2.)systemctl status mysqld
がmysqlの停止を示していることを確認したとき、私もsystemctl start mysqld
を試しましたが、ターミナルは何かを待っているかのように、新しいプロンプトなしで応答しないカーソルを出しましたが、それは無期限にそのリンボ状態のままでした。
3.)そこで、別のターミナルウィンドウを開いてsystemctl status mysqld
を実行しましたが、mysqldが再び起動されたことを確認するだけでした。しかし、エラーは解決しません。
4.)find / -name "mysql.sock"
を試しましたが、応答はfind: ‘/run/username/1000/gvfs’: Permission denied
でした。
5.)次に この投稿 を読んでmysqladmin | grep d.sock
を試しましたが、結果がありませんでした。
6.)yum remove mysql
に続いてyum install mysql
を使用することさえしましたが、mysql -u root
を使用しても、この投稿の上部に同じ元のエラーが表示されます。
7.)そして、私は この他の投稿 を読みますが、mysqladmin variables
は、mysql.sockが見つからないために接続できないのと同じエラーを示します。
8.)ln -s /tmp/mysql.sock /var/mysql/mysql.sock
を試してみましたが、cd /var/lib/mysql/
およびls -al
を試したときにmysqlへのリンクが表示されても、同じエラーが持続しました
9.)問題はsystemctl start mysqld
がハングアップするという事実に関係している可能性があるため、私は この投稿 を読み、chown -R mysql:mysql /var/lib/mysql
とsystemctl start mysqld
を試しましたが、結果は「メソッド呼び出しの発行に失敗しました:ユニットmysqld.serviceの読み込みに失敗しました:そのようなファイルまたはディレクトリはありません。」
10.)次に この投稿 を読み、mysql --help | grep "Default options" -A 1
を実行しました。結果は、mysql
がmy.cnf
を探す場所を出力しました。したがって、すべての場所を確認したところ、my.cnf
ファイルは見つかりませんでした。しかし、mysql.cnf.rpmsave
を見つけたので、mv mysql.cnf mysql.cnf.rmpsave
を試しました。これにより、予期したディレクトリにmy.cnf
が存在しましたが、systemctl status mysqld
はmysqld
が見つからないことを示しています。 yum install mysql
をもう一度試しましたが、mysql
がすでにインストールされていることがわかりました。したがって、my.cnf
が破損していると思います。もしそうなら、どうすれば修正できますか? リンクはこちら ファイル共有サイトのmy.cnf
のコピーへ。
11.)次に、RolandoMySQLDBAの提案を試してみました。
[root@localhost]# mysqladmin -h127.0.0.1 -P 3306 --protocol=tcp -uroot -p shutdown
Enter password:
mysqladmin: connect to server at '127.0.0.1' failed
error: 'Can't connect to MySQL server on '127.0.0.1' (111)'
Check that mysqld is running on 127.0.0.1 and that the port is 3306.
You can check this by doing 'telnet 127.0.0.1 3306'
[root@localhost etc]# telnet 127.0.0.1 3306
bash: telnet: command not found...
しかし、接続できなかったことがわかります。そこで、上記の前のステップの詳細を含む、次のステップを実行しました。
[root@localhost etc]# systemctl status mysqld -l
mysqld.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
Dec 15 15:38:17 localhost.localdomain systemd[1]: Failed to start MySQL Community Server.
Dec 15 15:38:17 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state.
Dec 15 15:38:17 localhost.localdomain systemd[1]: mysqld.service holdoff time over, scheduling restart.
Dec 15 15:38:17 localhost.localdomain systemd[1]: Stopping MySQL Community Server...
Dec 15 15:38:17 localhost.localdomain systemd[1]: Starting MySQL Community Server...
Dec 15 15:38:17 localhost.localdomain mysqld_safe[12886]: 141215 15:38:17 mysqld_safe Logging to '/var/log/mysqld.log'.
Dec 15 15:38:17 localhost.localdomain mysqld_safe[12886]: 141215 15:38:17 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Dec 15 15:38:17 localhost.localdomain mysqld_safe[12886]: 141215 15:38:17 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Dec 15 15:38:25 localhost.localdomain systemd[1]: Stopping MySQL Community Server...
Dec 15 15:38:25 localhost.localdomain systemd[1]: Stopped MySQL Community Server.
[root@localhost etc]# systemctl start mysqld
Failed to issue method call: Unit mysqld.service failed to load: No such file or directory.
[root@localhost etc]# yum install mysql
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: repos.lax.quadranet.com
* epel: mirrors.kernel.org
* extras: repos.lax.quadranet.com
* updates: repos.lax.quadranet.com
Package mysql-community-client-5.6.22-2.el7.x86_64 already installed and latest version
Nothing to do
ソケットへのパスを確認するには、mysqld
プロセスが開いているlsof
を使用できます。
# lsof -U -c mysqld -a
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 18149 mysql 16u unix 0xffff880037a7a700 0t0 126146 /var/lib/mysql/mysql.sock
開いた vi /etc/my.cnf
と文字列を追加:
bind-address = localhost
これ ユーザーAnupRajで有効 関連するスタックオーバーフローのQ&Aで ソケット '/var/mysql/mysql.sock'(38)を介してローカルMySQLサーバーに接続できません