3

したがって、非常に一般的な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ステートメントは、パスワードの変更に気付くように、許可テーブルをメモリに再ロードするようにサーバーに指示します。

4

2 に答える 2

8

3 つの SQL ステートメントである必要があります。

CREATE USER 'root'@'localhost' IDENTIFIED BY PASSWORD 'root';
GRANT ALL ON *.* TO 'root'@'localhost';
FLUSH PRIVILEGES;
于 2013-01-18T07:09:45.247 に答える