web-dev-qa-db-ja.com

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

さて、この問題について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:/#

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

9
Ilovelinux

私も同じ問題を抱えていたので、次の行を実行して解決しました。

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

この行を実行する前に:

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

私にとっては、 これらの手順 はうまく機能しました。

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

16
odradek

何を試してもmysqlを再インストールすることができなかったので、パスワードを再試行するだけで済みました。

Ubuntu 16.04.1 LTSでこのルートに行かなければなりませんでした。 MySql WebサイトからSOのすべて、およびAskUbuntuのQ&Aに対する他のすべての提案を試すのに1時間以上費やしました。

注:ユーザー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. sudo/usr/sbin/mysqldでmysqldを実行します&
  3. / usr/bin/mysql_secure_installationを実行します

    mysql_secure_installationからの出力

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

    MySQLサーバーのデプロイメントを保護します。

    ユーザーrootのパスワードを入力します。

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

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

    新しいパスワード:

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

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

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

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

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

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

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

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

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

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

    全部終わった!

1
JGlass

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

# /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はパスワードフィールドを保持します。)

0
Rajani