mysqld_safeディレクトリ '/ var / run / mysqld' for UNIXソケットファイルが存在しません


188

mysqld_safeを使用してmysqlサーバー5.7.17を起動すると、次のエラーが発生します。

2017-02-10T17:05:44.870970Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.872874Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.874547Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

それを修正するには?

回答:


507

このディレクトリがインストール時に作成されなかったのは奇妙に思われます-my.cfgのソケットファイルのパスを手動で変更しましたか?

このディレクトリを自分で作成し、サービスを再起動してみましたか?

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld

2
いいえ、手動で変更を加えていません。ディレクトリを作成してみます。提案をありがとう
Rajadip

14
これはmysql 5.7で発生します。mysqlサービスを停止すると、サービスを再開すると、/ var / run / mysqldが削除され、再作成されます。
Capy

2
両方にsudoを使用する必要がありました
Kasun Rajapaksha

1
@Capy-賛成-@Matt Clark-回答を編集して、DIRが作成されていても、実行すると削除されるという情報を含めるようにしてください- $ sudo /etc/init.d/mysql stop、ありがとう
Rohit Dhankar

これらの手順を実行しても同じエラーが発生する場合sudoこのディレクトリは一度mysql停止すると削除されるため、これを解決するとsudo、これらのフォルダがないとこれらのフォルダにアクセスできなくなります。
Jadeye

71

コードを使用したmysqld_safe --skip-grant-tables &がエラーが発生した場合:

mysqld_safeディレクトリ '/ var / run / mysqld' for UNIXソケットファイルが存在しません。

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

私は解決しました:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

今、私は同じコードを使用してmysqld_safe --skip-grant-tables &取得します

mysqld_safe / var / lib / mysqlのデータベースを使用してmysqldデーモンを起動する

私が使用する$ mysql -u rootと、次のようになります。

サーバーのバージョン:5.7.18-0ubuntu0.16.04.1(Ubuntu)

Copyright(c)2000、2017、Oracleおよび/またはその関連会社。全著作権所有。

OracleはOracle Corporationおよび/またはその関連会社の登録商標です。その他の名称は、それぞれの所有者の商標である可能性があります。

「ヘルプ」と入力します。または '\ h'を使用してください。現在の入力ステートメントをクリアするには、「\ c」と入力します。

mysql>

次にパスワードを変更します。

mysql> use mysql
mysql> describe user;

テーブル名と列名を補完するためのテーブル情報の読み取り-Aを使用すると、この機能をオフにして、起動時間を短縮できます

データベースが変更されました

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

または、どこからでも接続できるmysql rootアカウントがある場合は、次の操作も行う必要があります。

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

別の方法:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

そして、どこからでもアクセスできるrootアカウントがある場合:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

quitmysqlから停止して開始する必要があります

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

再び `mysql -u root -p 'を実行し、新しいパスワードを使用して

mysql>


9
MySQL 5.7.6以降、パスワード列の名前は「authentication_string」に変更されました。ここで詳細を確認できます:bugs.mysql.com/bug.php
id=

6

CentOSで私のために働く:

$ service mysql stop
$ mysqld --skip-grant-tables &
$ mysql -u root mysql

mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

$ service mysql restart

0

データベースにデータがない場合、またはそのデータを復元するための別の場所がある場合は、次の方法を試してください。Ubuntuサーバーのrootパスワードは知っている必要がありますが、mysqlのrootパスワードは必要ありません。

これはベストプラクティスであるため、多くの人が「mysql_secure_installation」をインストールしたと考えられます。mysql_secure_installationが存在するbinディレクトリに移動します。Ubuntuシステムの/ binディレクトリにあります。インストーラを再実行すると、ルートデータベースのパスワードを変更するかどうかを尋ねるプロンプトが表示されます。


しかし、これは安全なmysqlサーバーのみを使用することだと思います。この問題に影響はありません。
Rajadip 2017年

最初に現在のパスワードを入力する必要があるため、rootパスワードを忘れた場合は、これは役に立ちません。
Jistanidiot 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.