こんにちは、mysqldを起動しようとすると、次のエラーが発生します。
[root@localhost /]# service mysqld restart
Stopping mysqld: [ OK ]
MySQL Daemon failed to start.
Starting mysqld: [FAILED]
主な理由は、my.cnfファイルがmysql.sockファイルを見つけられないことです。
[root@localhost /]# 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"
私はこれが初めてなので、誰か助けてくれませんか?
なんて痛い!私は(RedHatで)同じ問題に遭遇し、これは私を助けました:
service mysqld stop
rm -rf /var/lib/mysql/*
service mysqld start
mysql_secure_installation
お役に立てば幸いです。幸運を!
"主な理由は、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()
が失敗する可能性があり、一般的なエラーは
したがって、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
_にあります
素晴らしい答えをくれたBarmaleyに感謝します。 mysqld.logファイルを確認しました。
それは私のmysqlサービスが開始しないすべての理由を示しています。私の場合、ユーザーmysqlには"/ var/run/mysqld"への書き込み権限がありません。私はrootユーザーからmysqlユーザーに許可を与えました、そしてそれは私のために働きました。
再度、感謝します!バルマレイ
あなたの投稿から、mysqldはMySQL Daemon failed to start. Starting mysqld: [FAILED]
を開始できなかったようです。
Mysqldがservice mysqld status
を実行しているかどうかを確認します。
設定ファイルmy.cnfはmysql.sockを探しており、あなたはmysqld.sockを探していました。 2つの異なる名前。
Mysqlの専門家ではありませんが、質問は次のとおりです。
Mysqlはソケット、tcpポート、またはその両方でリッスンしていますか?
通常/ etcまたは/ etc/mysqlにあるmy.cnf構成ファイルを確認すると、これが表示されます。また、すでにソケットとして実行されている場合は、ソケットへのパスが表示されます。
それが役に立てば幸い。
よろしく
技術設定:
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は今すぐ動作を開始するはずです!