サーチ…


前書き

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>



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow