したがって、非常に一般的なERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
mysqlエラーが発生します。フォーラムで一般的な修正をすべて試し、mysql_safeメソッドを使用してログインしてから、rootパスワードをリセットしようとしました。ただし、そうすると、;で戻ります。
UPDATE user SET password=PASSWORD("PASSWORD")WHERE user="root";
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
したがって、影響を受ける行はなかったので、実際に変更するユーザーはいないと思いました。ユーザーを作成しようとしました:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'root'
-> GRANT ALL ON *.* TO 'root'@'localhost'
-> flush privileges;
However this returns with ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GRANT ALL ON *.* TO 'root'@'localhost'
現在のユーザーが何であるかを確認する:
mysql> SELECT user();
+--------+
| user() |
+--------+
| root@ |
+--------+
構文エラーは、「root」の後の@の後に何も来ないという事実だと思います。この情報をroot@localhostに編集して問題を修正するにはどうすればよいですか?
アップデート
mysqldのドキュメントを注意深く読んだ後、このセクションにたどり着きました。これは完全に機能しました。
mysqldを停止し、-skip-grant-tablesオプションを指定して再起動します。これにより、誰でもパスワードなしですべての権限で接続できます。これは安全ではないため、リモートクライアントが接続できないように--skip-grant-tablesを--skip-networkingと組み合わせて使用することをお勧めします。
次のコマンドを使用してmysqldサーバーに接続します。
shell> mysql
mysqlクライアントで次のステートメントを発行します。パスワードを使用するパスワードに置き換えます。
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
-> WHERE User='root';
mysql> FLUSH PRIVILEGES;
FLUSHステートメントは、パスワードの変更に気付くように、許可テーブルをメモリに再ロードするようにサーバーに指示します。