MySQLをインストールしましたが、インストール中に入力したパスワードの入力を求められましたが、先生から、パスワードなしでrootとしてログインできるはずだと言われました。
これは機能しますが、特権を取得できません:
これは機能しません:
これもそうではありません
承認された回答:
問題の原因
root
としてログインするためのデフォルト設定 MySQL 5.7のユーザーは、認証ソケットを使用する必要があります。これは、user
にクエリを実行することで確認できます テーブル:
mysql> select user,authentication_string,plugin from user where user='root';
+------+-----------------------+-------------+
| user | authentication_string | plugin |
+------+-----------------------+-------------+
| root | | auth_socket |
+------+-----------------------+-------------+
1 row in set (0.00 sec)
ドキュメントから:
ソケットプラグインは、ソケットユーザー名(オペレーティングシステムのユーザー名)がクライアントプログラムによってサーバーに指定されたMySQLユーザー名と一致するかどうかを確認します。
名前が一致しない場合、プラグインはソケットユーザー名がmysql.userシステムテーブル行の
authentication_string列で指定された名前と一致するかどうかを
チェックします。
一致するものが見つかった場合、プラグインは接続を許可します。
つまり、デフォルトではmysqlにrootパスワードが設定されていません。phpMyAdminをrootとして実行するか、sudo
を介して実行する必要があります。 (どちらもセキュリティ上の理由からお勧めできません)、またはDigital Oceanチュートリアルに示すように、認証方法を変更してルートパスワードをリセットします。
同じ名前を除いて、MySQLユーザーとシステムユーザーは同じではないことに注意してください。 MySQLユーザーをjdoe
にすることができます ホストシステムにはそのようなユーザーがいません。したがって、root
はMySQLのrootユーザーであり、システムユーザーではありません。
プラグインとパスワードを変更する手順:
-
ターミナルを開き、
sudo mysql -u root
を実行します 。あいさつメッセージとmysql>
が表示されます。 促す。これはMySQLシェルであり、コマンドラインシェルとは異なるため、ここではSQLステートメントのみが受け入れられます。 -
次の一連のSQLクエリを入力します。
mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> UPDATE user SET plugin='mysql_native_password',authentication_string=PASSWORD('newpassword') WHERE user = 'root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1
-
終了してサインインを試みます:
mysql> exit Bye $ sudo systemctl restart mysql $ sudo mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.21-1 (Debian) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
すべてがうまくいけば、新しいパスワードを使用してphpMyAdminからサインインできるはずです。問題が発生した場合は、許可を確認せずにサーバーを再起動してみてください(これは、Digital Oceanチュートリアルのステップ番号3です)。その他の問題については、ここまたはデータベース管理者– Stack Exchange
で別の質問をしてください。 関連:tempdbの複数のDATAファイルを作成するときにLOGファイルを作成しますか?