MySQL
MySQL 5.7+のデフォルトのrootパスワードを回復してリセットする
サーチ…
前書き
MySQL 5.7以降、MySQLをインストールするときにrootアカウントを作成する必要はなく、ルートパスワードを与える必要もありません。デフォルトでは、サーバを起動すると、デフォルトのパスワードがmysqld.log
ファイルに保存されます。そのパスワードを使用してシステムにログインする必要があり、パスワードを変更する必要があります。
備考
この方法を使用してデフォルトのルートパスワードを復元してリセットすることは、MySQL 5.7以降
サーバーの初期起動時に何が起こるか
サーバのデータディレクトリが空の場合:
- サーバーが初期化されます。
- SSL証明書とキーファイルがデータディレクトリに生成されます。
- validate_passwordプラグインがインストールされ、有効になっています。
- スーパーユーザーアカウント 'root' @ 'localhost'が作成されます。スーパーユーザーのパスワードが設定され、エラーログファイルに保存されます。
既定のパスワードを使用してルートパスワードを変更する方法
デフォルトの「root」パスワードを表示するには:
shell> sudo grep 'temporary password' /var/log/mysqld.log
生成された一時パスワードでログインし、スーパーユーザーアカウントのカスタムパスワードを設定して、できるだけ早くrootパスワードを変更します。
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!';
注意: MySQLのvalidate_passwordプラグインはデフォルトでインストールされます。これには、パスワードに少なくとも1つの大文字、1つの小文字、1つの数字、および1つの特殊文字が含まれ、パスワードの長さの合計が8文字以上である必要があります。
UNIXソケットファイルの "/ var / run / mysqld"が存在しない場合にrootパスワードをリセットする "
私がパスワードを忘れたら、私はエラーに遭うでしょう。
$ mysql -u root -p
パスワードを入力する:
ERROR 1045(28000):ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードは「はい」です)
私は最初にステータスを知って問題を解決しようとしました:
$ systemctl status mysql.service
mysql.service - ロードされたMySQLコミュニティサーバ:/lib/systemd/system/mysql.service; enabled;ベンダープリセット:enアクティブ:アクティブな(実行中)Thu 2017-06-08 14:31:33 IST; 38s前
それから、コードmysqld_safe --skip-grant-tables &
を使用しましたが、エラーが出ます:
mysqld_safe UNIXソケットファイルのディレクトリ '/ var / run / mysqld'が存在しません。
$ 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 &
と同じコードを使い、get
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およびその関連会社の登録商標です。その他の名称は、それぞれの所有者の商標です。
タイプ 'help;'ヘルプは '\ 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
今はmysqlをquit
してstop / startする必要があります
FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
もう一度 `mysql -u root -p 'を実行し、新しいパスワードを使って
mysql>