MySQLのrootパスワードをリセットできません。すべて試しました


9

まず、この問題についてAsk Ubuntuからすべての質問を読み、公式ドキュメントのすべての手順を実行したことを最初に明確にしましょう。

help.ubuntu.com

dev.mysql.com

Ubuntu 16.04.1 LTSを使用しています

だから、誰かがおそらく私がすでに試したことを提案する前に、私が何をしたかを示します:

root@localhost:/# sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

MySQLは正しく停止しました。

root@localhost:/# sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 3316
root@localhost:/#

ここでは、これが機能していたかどうかわからないので、とにかく手順を実行します。

root@localhost:/# mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
root@localhost:/#

サービスが開始されていないため、機能していないようです。次のステップに進むことができないので、他の方法(パージ)を試します。

使用後:

sudo apt-get --purge remove
sudo apt-get install

私は次のステップを試します:

root@localhost:/# mysqladmin -u root password MyNewPassword
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
root@localhost:/#

これも機能しないため、mysql Webで言及されている他の方法を試しました。

そこで私はそこで指摘されているようにmysqlプロセスを殺し、それから私は

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &
[1] 5267
root@localhost:/# 2017-02-01T12:47:49.250083Z mysqld_safe Logging to syslog.
2017-02-01T12:47:49.252427Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.254765Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.257045Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

[1]+  Salida 1                mysqld_safe --init-file=/home/me/mysql-init
root@localhost:/#

今は選択肢がなくなったので、Ask Ubuntuでここに記載されている別の方法も試します。

root@localhost:/# sudo dpkg-reconfigure mysql-server-5.7
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.17, use --force if you still need to run mysql_upgrade
root@localhost:/#

そして今、私は本当に選択肢がないので、どんな提案でも大歓迎です。

回答:


16

同じ問題があり、次の行を実行して解決しました。

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld

この行を実行する前に:

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &

私にとって、これらの手順はよりうまくいきました。

これを行うにはよりクリーンな方法があると思いますが、私にとっては、これは迅速かつ効率的な回避策でした。



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

1

何を試してもmysqlを再インストールできなかったので、パスワードを再設定する必要がありました。

私はこのルートをUbuntu 16.04.1 LTSで実行する必要がありました。私は最終的にそれが作業してしまった、SO上のすべてのものだけでなく、AskUbuntu Q&Aのに対するMySQLのWebサイトから他のすべての提案をしようと時間を費やした以上:

注:それはユーザーrootのパスワードを入力示した、私は元のパスワードを持っていませんでしだから私は、新しいパスワードと同じパスワードを入力しただけです。

注: /var/log/mysqld.logはなく、/ var / log / mysql / error.logのみ

でした。これは私にとっては機能しませんでした。
sudo dpkg-reconfigure mysql-server-5.7

また、
sudo dpkg-reconfigure --force mysql-server-5.5

MySQLサービスディレクトリを作成しませんでした 。
sudo mkdir /var/run/mysqld

MySQLユーザーにサービスディレクトリへの書き込み権限を付与します。
sudo chown mysql: /var/run/mysqld

次に:

  1. 現在のmysqld pidを終了します
  2. mysqldをsudo / usr / sbin / mysqld&で実行します
  3. / usr / bin / mysql_secure_installationを実行します。mysql_secure_installation

    からの出力

    root @ myServer:〜#/ usr / bin / mysql_secure_installation

    MySQLサーバーデプロイメントの保護。

    ユーザーrootのパスワードを入力してください:

    VALIDATE PASSWORD PLUGINを使用して、パスワードをテストし、セキュリティを向上させることができます。パスワードの強度をチェックし、ユーザーが十分に安全なパスワードのみを設定できるようにします。VALIDATE PASSWORDプラグインをセットアップしますか?

    はいの場合はy | Y、いいえの場合はその他のキーを押します。いいえrootの既存のパスワードを使用します。rootのパスワードを変更しますか?((はいの場合はy | Y、いいえの場合はその他のキーを押します):y

    新しいパスワード:

    新しいパスワードの再入力:デフォルトでは、MySQLのインストールには匿名ユーザーがあり、ユーザーアカウントを作成しなくても、誰でもMySQLにログインできます。これはテストのみを目的としており、インストールを少しスムーズにするためのものです。本番環境に移行する前に削除する必要があります。

    匿名ユーザーを削除しますか?(はいの場合はy | Y、いいえの場合はその他のキーを押します):y成功。

    通常、rootは「localhost」からの接続のみを許可されている必要があります。これにより、誰かがネットワークからrootパスワードを推測できないようになります。

    リモートでrootログインを禁止しますか?(はいの場合はy | Y、いいえの場合はその他のキーを押します):y成功。

    デフォルトでは、MySQLには「test」という名前のデータベースが付属しており、誰でもアクセスできます。これもテストのみを目的としており、実稼働環境に移行する前に削除する必要があります。

    テストデータベースを削除してアクセスしますか?(はいの場合はy | Y、いいえの場合はその他のキーを押します):y

    • テストデータベースを削除しています...成功しました。

    • テストデータベースの権限を削除しています...成功しました。

    特権テーブルを再ロードすると、これまでに行ったすべての変更がすぐに有効になります。

    特権テーブルをリロードしますか?(はいの場合はy | Y、いいえの場合はその他のキーを押します):y成功。

    全部終わった!


0

私は同じ問題を抱えており、それで解決しました:

# /etc/init.d/mysql stop
# service mysql stop
# mkdir -p /var/run/mysqld
# chown mysql:mysql /var/run/mysqld
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=password('1234') where user='root';

(ここでauthentication_stringは、パスワードフィールドを保持します。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.