MySQL8.0リモートアクセスし、ユーザー認証の設定

 

 

 

1、MySQLのリモート接続を開きます

#MySQLデータベースにいくつかの操作を行い-p mysqlの-uルート。
MySQLの> MySQLの使用を、
MySQLの>ユーザーの更新SET user.Host = '%' user.user = 'ルート';
MySQLの>フラッシュ権限;

注:ホストは任意のIPは、MySQLを接続することができ、また、「%」は、IP指定するために変更することができる「%」手段に設定されている
ここに画像を挿入説明
リモート接続が発生した場合、次のエラー:

Unable to load authentication plugin 'caching_sha2_password'.

理由: mysql8はcaching_sha2_password暗号化ルールを使用しているため。
ソリューション:

  1. リモートユーザーを接続するための暗号化ルールを変更します。

MySQLの> ALTER USERの 'テスト' @ '%' は '12345' でmysql_native_passwordで識別します。

  1. 設定ファイルを変更します。

#viな/etc/my.cnfは
以下の内容を追加した:default_authentication_plugin = mysql_native_password

2、MySQLのリモート接続をシャットダウン

近くへのリモート接続の必要がある場合は、実際には、我々は唯一のデフォルト設定(のみローカル接続)にホスト戻す必要があり、次のようになります

#MySQLデータベースにいくつかの操作を行い-p mysqlの-uルート。
MySQLの> MySQLの使用;
MySQLの>ユーザーの更新SET user.Host = 'localhost'のuser.user = 'ルート';
MySQLの>フラッシュ権限;

ここに画像を挿入説明
上記の操作は、MySQLユーザー表を参照して成功したホスト、ユーザフィールドを修正するかどうかを確認するために使用することができます。

MySQLの>ホストを選択し、利用者からの利用者。

ここに画像を挿入説明

3、ファイアウォールのルールを変更し、開いているポート

サーバーがファイアウォールのMySQLのリモート接続をオンにした後も、ファイアウォールを設定し、そのポート(例:3306)を開く必要があり、閉じられていない場合は、ここで例えばcentos7に、あなた自身の百度の他のバージョンは、次の通り:

#centos7オープンファイアウォールポート
ファイアウォール-CMD --zone =公共--add-ポート= 3306 / tcpの--permanent

ここに画像を挿入説明
パラメータの説明:
    --zone#スコープは
    --add-ポート= 3306 / TCP#追加ポート、形式は次のとおりです。ポート/プロトコル
    --permanent#永久、この引数には、障害発生後に再起動しません。

systemctl再起動firewalld#リブートファイアウォール、またはファイアウォール-CMD --reload(更新済みファイアウォールルール)
ファイアウォール-CMD --list-#すでに開いているポートをポートを見ます

ここに画像を挿入説明

systemctlステータスは#ビューのファイアウォールの状態をfirewalld、またはファイアウォール-CMD -state

これは、基本的には、リモートでのMySQLツールを接続することができます。

4、ユーザーおよびユーザーの権限を作成します

  1. ユーザーは、すべての権限は、すべてのテーブル内のすべてのカタログをテストするために付与しています

:MySQL8.0新しい構文についての話に権限を付与する前に
、次にMySQL8.0は、セキュリティのレベルを高めるため、より厳格なので、ユーザー認証を作成するためには、完全なSQL文を使用して、前と同じにすることができない、と今はユーザーのパスワードを作成する必要がありますし、承認。

#以前はSQLとして直接使用することができます:
MySQLの>グラントすべての権限をON テストするために@「12345」でIDENTIFIED「%」;

あなたはこのSQL MySQL8.0を実行する場合は、上記のSQL構文エラーが報告されます。

#あなたはMySQL8.0のユーザーで作成する必要があります任意のホストにアクセスすることができます:
MySQLの>「12345」で識別されるユーザテストを作成します@「%」;
は、ユーザーが許可されている:
MySQLの>グラントすべてONにテストするには、@「% 「; #privilegesを省略することができます!
MySQLの>フラッシュ権限;#リフレッシュ許可

MySQL8.0は、ユーザおよび権限を作成します
注:でMySQL8.0ユーザーを作成し、付与した場合、中のすべての権限を、それがrootユーザーでこれらのユーザーを削除しない場合であっても、報告されます

ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation

図:
ここに画像を挿入説明
理由:MySQL8.0ユーザーを作成し、すべての権限がSYSTEM_USER権限が与えられます許可する場合は、SYSTEM_USER権限を追加するには、このが原因で、rootユーザーは、あなたが他のユーザーを削除することはできません。この権限を持っていません。
ソリューション:

  • 不授予用户all权限。(一般为了安全是不可能给一个用户授予all权限的,即便root也没有all权限)

mysql> show grants for root@’%’;

ここに画像を挿入説明

  • 授予root用户SYSTEM_USER,然后删除其他用户。

mysql> grant SYSTEM_USER on . to root@’%’;
mysql> flush privileges;
mysql> drop user test@’%’;

ここに画像を挿入説明

  1. 授予 test 用户拥有所有库所有表部分权限

mysql> grant select,insert,update on . to test@’%’;
mysql> flush privileges;

ここに画像を挿入説明
3. 授予 test 用户拥有testdb库所有表部分权限

mysql> grant select,insert,update on testdb.* to test@’%’;
mysql> flush privileges;

ここに画像を挿入説明
4. 授予 test 用户拥有testdb库test表的部分权限

mysql> grant select,insert,update on testdb.test to test@’%’;
mysql> flush privileges;

ここに画像を挿入説明
更多的权限请自行琢磨,或者一起来琢磨(滑稽.jpg)

5、删除用户及权限

mysql> drop user test@’%’;
mysql> drop user test1@localhost;


欢迎进群:747509472 交流学习!感谢指正!

 

おすすめ

転載: www.cnblogs.com/dbdd/p/12159438.html
おすすめ