web-dev-qa-db-ja.com

mysql.sockが見つからないため、centosでmysqlを起動できません

こんにちは、mysqldを起動しようとすると、次のエラーが発生します。

[[email protected] /]# service mysqld restart
Stopping mysqld:                                           [  OK  ]
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]

主な理由は、my.cnfファイルがmysql.sockファイルを見つけられないことです。

[[email protected] /]# mysqladmin -u root -p status

mysqladmin: connect to server at 'localhost' failed

error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists!

私がそれを検索しようとすると:

Sudo find / -type s | grep mysqld.sock

取得します

find: ‘/proc/3253/task/3253/fd/5’: Bestand of map bestaat niet 
find: ‘/proc/3253/task/3253/fdinfo/5’: Bestand of map bestaat niet
find: ‘/proc/3253/fd/5’: Bestand of map bestaat niet
find: ‘/proc/3253/fdinfo/5’: Bestand of map bestaat niet

"Bestand of map bestaat niet" == "File or directory don't exists"

私はこれが初めてなので、誰か助けてくれませんか?

8
Yannick

なんて痛い!私は(RedHatで)同じ問題に遭遇し、これは私を助けました:

service mysqld stop
rm -rf /var/lib/mysql/*
service mysqld start
mysql_secure_installation

お役に立てば幸いです。幸運を!

20
Barmaley

"主な理由は、my.cnfファイルが私のmysql.sockファイルを見つけられないことです。"

いいえ。 「主な理由」は_mysqld has not started_であるため、mysql.sockはなく、どのクライアントも接続を確立できません。

現在、「mysqldが失敗する理由」は幅広い質問です。 MySQLエラーログには、「MySQLが失敗する理由」という理由があります。 mysqlエラーログがどこにあるかがわかっている場合は、それを開いて、質問にエラーメッセージを投稿してください。

しかし、おそらくmysqlエラーログがどこにあるのかわからないと思います。

mysqlエラーログがどこにあるかを特定します

したがって、それがどこにあるかを特定する必要があります。どこかで推測できます...しかし、正確なアプローチはstraceを使用することです

_$ strace -f > strace.log 2>&1 service mysqld start
_

現在、strace.logには、MySQLデーモンに関連するすべてのシステムコールがあります。任意のエディターでstrace.logを開き、「err」を検索します。私の場合は

_[pid 26976] open("/XXX/hostname.err", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
_

open()が失敗した場合

open()が失敗する可能性があり、一般的なエラーは

  • 「そのようなファイルまたはディレクトリがない」の「2」は、「/ XXXディレクトリがない」ことを意味します。
  • 「許可が拒否されました」の「3」は、あなた(またはmy.cnfのユーザー)が「XXX」への書き込み許可を持っていないことを意味します

したがって、mysqldが「/XXX/hostname.err」で開始できない理由を見つけることができます。エラーメッセージを投稿していただければ幸いです。

p.s.

私はテストstraceを持っています

_$ strace -f > strace.log 2>&1 mysql.server start
_

_service mysqld_で動作するかどうかはわかりませんが、動作しない理由はありません

更新

"次のコマンドで何も返されません:$ strace -f> strace.log 2>&1 service mysqld start"

実際には、_service mysqld start_は_/etc/rc.d/init.d/mysqld start_を呼び出します(CentOSまたはFedoraを想定)。だから、あなたは試すことができます。

_$ strace -f > strace.log 2>&1 /etc/rc.d/init.d/mysqld start
_

参照した_my.cnf_がmysqldの正しいファイルである場合は、それを開いて_[mysqld]_セクションを検索します。次のようになります

_[mysqld]
user    = username
port    = 1111
basedir = /path/
datadir = /path/data
_

MySQLエラーログは_/path/data_にあります

3
Jason Heo

素晴らしい答えをくれたBarmaleyに感謝します。 mysqld.logファイルを確認しました。

それは私のmysqlサービスが開始しないすべての理由を示しています。私の場合、ユーザーmysqlには"/ var/run/mysqld"への書き込み権限がありません。私はrootユーザーからmysqlユーザーに許可を与えました、そしてそれは私のために働きました。

再度、感謝します!バルマレイ

1
Bhushan

あなたの投稿から、mysqldはMySQL Daemon failed to start. Starting mysqld: [FAILED]を開始できなかったようです。

Mysqldがservice mysqld statusを実行しているかどうかを確認します。

設定ファイルmy.cnfはmysql.sockを探しており、あなたはmysqld.sockを探していました。 2つの異なる名前。

1
alvits

Mysqlの専門家ではありませんが、質問は次のとおりです。

Mysqlはソケット、tcpポート、またはその両方でリッスンしていますか?

通常/ etcまたは/ etc/mysqlにあるmy.cnf構成ファイルを確認すると、これが表示されます。また、すでにソケットとして実行されている場合は、ソケットへのパスが表示されます。

それが役に立てば幸い。

よろしく

1

技術設定:

Vagrant (Centos 6.6, MySQL 6.6) on top of MacOS Captain

Centosでmysqlを実行しようとするたびに、この問題が発生します。この問題がOSとMySQLのバージョンにのみ固有であるかどうかはわかりません。

ログファイルを開いて確認すると、次のように表示されます。

/ usr/sbin/mysqld:ファイル '/var/log/mysql-bin.index'が見つかりません(エラーコード:13-アクセスが拒否されました)

Permission Deniedは、デフォルトでは/ var/logファイルに書き込むためのアクセス許可がないため、ユーザーのアクセス許可を変更する必要があるためです。 MySQLは、bin-logにあるrelay-logsまたは/var/log/mysqlに何かを書き込もうとしています。

パーミッションを変更する前に、/ var/logにmysqlディレクトリがないことを認識する必要があるため、最初にそれを作成してから、パーミッションを変更する必要があります。だから、私はこれをしました:

mkdir mysql
chown mysql: mysql

mysqldは今すぐ動作を開始するはずです!

0
JumpMan