Mysql8の設定でリモート接続が許可されるGRANTを使用してユーザーを作成することは許可されていません



Mysql 8 Settings Allow Remote Connections You Are Not Allowed Create User With Grant



1. mysqlにログインします: mysql -u root -p

2.パスワードを入力します。 パスワードを入力してください:xxxxx



------サーバーバージョン:8.0.15 MySQL CommunityServer-GPL

3.mysqlデータベースを入力します。 mysqlを使用する



4.リモートユーザーアクセスを許可するように設定します。

MySQL [mysql]> GRANT ALL ON *。* TO'root '@'% '

問題があります:エラー1410(42000):GRANTでユーザーを作成することは許可されていません



原因:現在のユーザーテーブルにルートがありません-%レコードルート-ローカルホストをルートに更新できます-%

MySQL [mysql]> update user set host = '%' where user = 'root'
問題がありました:エラー1062(23000):キー 'PRIMARY'のエントリ '%-root'が重複しています

その理由は、host + userがフェデレーションプライマリキーである必要があり、競合するためです。

5.解決策:解決策:

MySQL [mysql]> update user set host = '%' where user = 'root' and host = 'localhost'

6.ユーザーrootを再度承認します

MySQL [mysql]> GRANT ALL ON *。* TO'root '@'% '

MySQL [mysql]>フラッシュ権限

この時点で、navicat接続またはエラーを使用しています:クライアントはサーバーによって要求された認証プロトコルをサポートしていません

その理由は、mysql8のデフォルトの暗号化方法はcaching_sha2_passwordであり、mysql5の暗号化方法mysql_native_passwordが異なるためです。

7.解決策-ユーザーの暗号化方法を更新します。

MySQL [mysql]> ALTER USER'root '@'% 'IDENTIFIED WITH mysql_native_password BY'password'

変更の結果をクエリします。MySQL[mysql]>ユーザーからホスト、ユーザー、プラグインを選択します

その他:root-localhostをサポートする必要がある場合は、insertステートメントを使用できます

MySQL [mysql]> insert user(user、host、ssl_cipher、x509_issuer、x509_subject)values( 'root'、 'localhost'、 ''、 ''、 '')

もう一度見てください:(ssl_cipher、x509_issuer、x509_subjectこれらのフィールドにはデフォルト値がなく、設定がないとエラーが発生することに注意してください)