【MySQLシリーズ】MySQLユーザー管理

「まえがき」の記事の内容は、大まかにMySQLのユーザー管理についてです。

「属性列」MySQL

「ホームページリンク」個人ホームページ

《作者》 メイプルリーフ氏(fy)

MySQL

1. ユーザー管理

  • MySQL は Linux に似ており、一般ユーザーと root ユーザーに分かれています。
  • root ユーザーのみを使用できる場合はセキュリティ上のリスクがあるため、MySQL ユーザー管理を使用してユーザー権限を管理する必要があります。

1.1 ユーザー情報

mysqlMySQL には、デフォルトでデータベースがあります。
ここに画像の説明を挿入します
データベースにはuserテーブルがあります。
ここに画像の説明を挿入します
テーブルには、MySQL ユーザー関連の情報が保存されます (\G行ごとに出力されます)。
ここに画像の説明を挿入します
いくつかのフィールドの説明:

  • user:ユーザーのユーザー名を示します。
  • host: このユーザーがログインできるホストを示します。「はい」の場合localhost、ユーザーはこのマシンからのみログインできることを意味し、%どこからでもログインできることを意味します。
  • authentication_string: ユーザーパスワードは、パスワード機能により暗号化された文字列です。
  • *_priv( xxx_priv): ユーザーが所有する権限を示します。Y は権限を持ち、N は権限を持ちません。

現在のユーザーを表示

select user();

ここに画像の説明を挿入します
注: root はユーザー名、localhost はホスト名です。

1.2 新しいユーザーの作成

ユーザーを作成するSQLは次のとおりです。

create user '用户名'@'登陆主机/ip' identified by '密码';

どこからでもログインできる test という名前のユーザーを作成します

 create user 'test'@'%' identified by '123123aa';

注:%どこからでもログインできることを意味します。はいlocalhost、このコンピュータからのみログインできることを意味します。

MySQL 自体の認証レベルは比較的高いため、ユーザー作成時に設定するパスワードは単純すぎるとエラーが発生しますが、その場合はパスワードを複雑にするか、パスワードを調整することができます。関連する設定。

MySQL パスワード入力のセキュリティ強度を下げるには、validate_password関連する変数を変更することで実現できます。

現在の validate_password 関連変数を表示する

show variables like 'validate_password%';

ここに画像の説明を挿入します
validate_password_policyのデフォルト値は 1 です。これは、パスワードに数字、小文字、大文字、特殊文字を含める必要があることを意味します。0 に設定すると、これらの要件が無効になります。

 set global validate_password_policy=0;

ここに画像の説明を挿入します
新しいユーザーが正常に作成されると、先ほどユーザーテーブルにユーザーの関連情報が書き込まれますので、ユーザーを確認してください(情報が多すぎるのでフィルタリングしてください)

 select user,host,authentication_string from user;

ここに画像の説明を挿入します
新しく作成した一般ユーザーを使用して MySQL サーバーに接続できます。
ここに画像の説明を挿入します
作成したユーザーはどこからでもログインできるため、Windows に MySQL がインストールされている場合は、Windows の cmd ウィンドウからリモートでログインできます。
ここに画像の説明を挿入します
知らせ

  • パスワードが MySQL に関係している場合、SQL は履歴に記録されません。
  • 注意してください。どこからでもログインできるユーザーを安易に追加せず、テスト後に削除してください(そうしないとハッカーに簡単にやられてしまいます)

1.3 ユーザーの削除

ユーザーを削除するための構文は次のとおりです。

drop user '用户名'@'主机名';

たとえば、上記のテスト ユーザーを削除します。

drop user 'test'@'%';

ここに画像の説明を挿入します

1.4 ユーザーパスワードの変更

自分のパスワードを変更する

構文は次のとおりです。

set password=password('新的密码');

root ユーザーは、指定されたユーザーのパスワードを変更します。

構文は次のとおりです。

set password for '用户名'@'主机名'=password('新的密码')

2. データベースの権限

  • ユーザーが MySQL の特定のデータベース、またはデータベース内の特定のテーブルにのみアクセスする必要がある場合は、自分用の通常ユーザーを作成できます。
  • また、対応する権限をユーザーに付与して、ユーザーがデータベース内の他のデータを参照できないようにしたり、他のデータに対する誤操作を防止したりできます。

MySQL データベースによって提供される権限のリスト

ここに画像の説明を挿入します
知らせ: 新しく作成したユーザーには権限がないため、ユーザーを作成した後、ユーザーを承認する必要があります。

2.1 ユーザーを承認する

新しく作成されたユーザーには権限がないため、承認される必要があります。構文は次のとおりです。

grant 权限列表 on.对象名 to '用户名'@'登陆地址/ip' [identified by '密码']

例証します:

  • to:To の後に user が続き、どのユーザーが許可されているかを示します。
  • 库名.对象名: どのデータベースのどのオブジェクト (テーブル) がユーザーに付与されるかを示します。
  • たとえば、*.*: は、このシステム内のすべてのデータベースのすべてのオブジェクト (テーブル、ビュー、ストアド プロシージャなど) を表します。
  • 库.* : データベース内のすべてのデータ オブジェクト (テーブル、ビュー、ストアド プロシージャなど) を表します。
  • identified byオプション: ユーザーが存在する場合は、権限を付与するときにパスワードを変更します。ユーザーが存在しない場合は、ユーザーを作成します。
  • 权限列表: ユーザーに付与する権限を示します。複数の権限はカンマで区切られます。
-- 权限列表,例如
grant select on ... -- 赋予select权限
grant select, delete, create on -- 表示赋予select, delete, create权限
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限

新しいユーザー zhangsan を作成し、いくつかのコマンドを使用してユーザーの既存の権限を表示します。

show grants for '用户名'@'登录地址';

例えば:

 show grants for 'zhangsan'@'localhost';

ここに画像の説明を挿入します
注記

  • ユーザーを作成すると、そのユーザーにはデフォルトで権限が付与されますUSAGE。この権限はデータベースへのログインにのみ使用でき、いかなる操作も実行できません。

ユーザーのデータベースを確認してください。組み込みシステムは 1 つだけです。root ユーザーの下のデータベースは、通常のユーザーには表示されません。root ユーザーの下に test_db データベースを作成し、test_db データベースの下のすべてのオブジェクトに対する選択権限を
ここに画像の説明を挿入します
zhangsna ユーザーに付与します。

grant select on test_db.* to 'zhangsan'@'localhost';

ここに画像の説明を挿入します

注:*.*すべてのデータベースのすべてのオブジェクトを示し、库名.*特定のデータベースのすべてのオブジェクト (テーブル、ビュー、ストアド プロシージャなど) を示します。

現時点では、ユーザーのデータベースを表示することでデータベースを表示できます。
ここに画像の説明を挿入します
現在、ユーザーはテーブル内の情報の表示のみが可能ですが、テーブル内のデータに対して他の操作を実行することはできません。他の操作が必要な場合は、対応する権限が必要です。次のように付与されます
ここに画像の説明を挿入します
。test_db データベースのすべての権限がこのユーザーに付与されます。承認後、ユーザーはデータベース上であらゆる操作を実行できます (説明はありません)。

 grant all on test_db.* to 'zhangsan'@'localhost';

ここに画像の説明を挿入します

知らせ: 権限を付与した後に権限が有効にならないことが判明した場合は、次のコマンドを実行します。

flush privileges;

2.2 ユーザーの権利を取り戻す

ユーザー権限を再利用するための SQL 構文は次のとおりです。

revoke 权限列表 on.对象名 from '用户名'@'登陆地址/ip';

アクセス許可を取り消す構文は認可の構文と似ているため、説明は省略します。

たとえば、test_db データベース内のユーザー zhangsan のすべての権限をリサイクルします。

revoke all on test_db.* from 'zhangsan'@'localhost';

ここに画像の説明を挿入します
知らせ: アクセス許可が取り消されたときにユーザーが対応するデータベースを使用していた場合、ユーザーはアクセス許可が取り消された後も対応するアクセス許可を保持します。新しいアクセス許可は、ユーザーが次回データベースにアクセスしたときにのみ有効になります
------- --- ---------- 終了 -------------

「 作者 」 枫叶先生
「 更新 」 2023.9.13
「 声明 」 余之才疏学浅,故所撰文疏漏难免,
          或有谬误或不准确之处,敬请读者批评指正。

おすすめ

転載: blog.csdn.net/m0_64280701/article/details/132781680