MySQLのユーザー管理とPostgreSQLのユーザー管理の違い

MySQLのユーザー管理とPostgreSQLのユーザー管理の違い

1. MySQL ユーザー管理

[例1.1] ローカルMySQLサーバーのテストデータベースにrootユーザーとしてログインする

mysql -uroot -p -hlocalhost テスト

[例1.2] ルートユーザーを使用してローカルMySQLサーバーのテストデータベースにログインし、クエリステートメントを実行します。

mysql -uroot -p -hlocalhost test -e "DESC 人;"

[例 1.3] CREATE USER を使用して、ユーザー名 jeffrey、パスワード mypass、ホスト名 localhost のユーザーを作成します。

'mypass' によって識別されるユーザー 'jeffrey'@'localhost' を作成します。

[例 1.4] GRANT ステートメントを使用して、パスワードが testpwd の新しいユーザー testUser を作成します。ユーザー testUser には、すべてのデータに対するクエリおよび更新権限があり、すべてのデータ テーブルに対する SELECT および UPDATE 権限が付与されています。

GRANT SELECT,UPDATE ON *.* TO 'testUser'@'localhost' IDENTIFIED BY 'testpwd'; /*アカウントを作成し、権限を付与する*/
SELECT Host,User,Select_priv,Update_priv, FROM mysql.user where user='testUser'; /*アカウント権限情報を表示*/

[例 1.5] INSERT を使用して、ユーザー名 customer1、ホスト名 localhost、パスワード customer1 の新しいアカウントを作成します。

INSERT INTO user (ホスト、ユーザー、パスワード) VALUES('localhost'、'customer1'、PASSWORD('customer1'));

[例 1.6] DROP USER を使用してユーザー 'jeffrey'@'localhost' を削除します。

ユーザー 'jeffrey'@'localhost' を削除します。

[例 1.7] DELETE を使用してユーザー 'customer1'@'localhost' を削除します。

DELETE FROM mysql.user WHERE host='localhost' and user='customer1';

[例 1.8] mysqladmin を使用して、root ユーザーのパスワードを "rootpwd" に変更します。

mysqladmin -u root -p パスワード "123456"

[例 1.9] UPDATE ステートメントを使用して、root ユーザーのパスワードを "rootpwd2" に変更します。

mysql.user を更新して、Password=password("rootpwd2") を設定します。
ここで、User="root"、Host="localhost";

[例 1.10] SET ステートメントを使用して、root ユーザーのパスワードを "rootpwd3" に変更します。

パスワードを設定する=password("rootpwd3");

[例 1.11] SET ステートメントを使用して、testUser ユーザーのパスワードを "newpwd" に変更します。

'testUser'@'localhost' のパスワードを設定する = password("newpwd");

[例 1.12] UPDATE ステートメントを使用して、testUser ユーザーのパスワードを "newpwd2" に変更します。

mysql.user を更新して、Password=PASSWORD("newpwd2") を設定します。
ここで、User="testUser" および Host="localhost";

[例 1.13] GRANT ステートメントを使用して、testUser ユーザーのパスワードを "newpwd3" に変更します。

sql

[例 1.14] testUser ユーザーは SET ステートメントを使用してパスワードを "newpwd4" に変更します。

パスワードの設定 = PASSWORD("newpwd4");

[例 1.15] GRANT ステートメントを使用して、パスワードが「grantpwd」の新しいユーザー grantUser を作成します。ユーザー grantUser には、すべてのデータに対するクエリおよび挿入権限があり、GRANT 権限が付与されます。 GRANT ステートメントとその実行結果は次のとおりです。

MySQL> GRANT SELECT、INSERT ON *.* TO 'grantUser'@'localhost' IDENTIFIED BY 'grantpwd' WITH GRANT OPTION;
クエリは正常、影響を受けた行は 0 行 (0.03 秒)

結果は実行が成功したことを示しています。SELECT ステートメントを使用して、ユーザー testUser2 の権限を照会します。

MySQL> SELECT Host,User,Select_priv,Insert_priv, Grant_priv FROM mysql.user where user='grantUser';
+-----------+-------------+-------------+--------------+--------------+
| ホスト | ユーザー | Select_priv | Insert_priv | Grant_priv |
+-----------+-------------+--------------+--------------+--------------+
| ローカルホスト | testUser2 | Y | Y | Y |
+-----------+-------------+--------------+--------------+--------------+
セット内の 1 行 (0.00 秒)

[例 1.16] REVOKE ステートメントを使用して、ユーザー testUser の更新権限を取り消します。 REVOKE ステートメントとその実行結果は次のとおりです。

MySQL> 'testUser'@'localhost' からの *.* の更新を取り消します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

実行結果は、実行が成功したことを示しています。SELECT ステートメントを使用して、ユーザー test の権限を照会します。

MySQL> SELECT Host,User,Select_priv,Update_priv,Grant_priv FROM MySQL.user where user='testUser';

[例 1.17] SHOW GRANTS ステートメントを使用して、ユーザー testUser の権限情報を照会します。 SHOW GRANTS ステートメントとその実行結果は次のとおりです。

MySQL> 'testUser'@'localhost' の権限を表示します。

ケース操作プロセス

MySQL クライアント ツールを開き、ログイン コマンドを入力して MySQL にログインします。

C:\>mysql -u ルート -p
パスワードを入力してください: **

正しいパスワードを入力して Enter キーを押します。ログインが成功したことを示すウェルカム メッセージが表示されます。

現在のデータベースとしてmysqlデータベースを選択します。

MySQL> mysql を使用します。
データベースが変更されました

データベースの切り替えが成功したことを示す「データベースが変更されました」というメッセージが表示されます。

ユーザー名 newAdmin とパスワード pw1 を使用して新しいアカウントを作成し、ローカル ホストから MySQL にアクセスできるようにします。

GRANT ステートメントを使用して新しいアカウントを作成します。作成プロセスは次のとおりです。

MySQL> GRANT SELECT、UPDATE(id、name、age)
 -> ON test_db.person_old
 -> 宛先 'newAdmin'@'localhost' 識別名 'pw1'
 -> MAX_CONNECTIONS_PER_HOUR 30 の場合;
SELECT host、user、select_priv、update_priv FROM user WHERE user='newAdmin';
ホスト、DB、ユーザー、テーブル名、テーブル権限、列権限を選択します。 
tables_priv から user='newAdmin' を指定します。
ホスト、DB、ユーザー、テーブル名、列名、列権限を選択します。 
columns_priv から user='newAdmin' を指定します。

3 つの SQL ステートメントのクエリ結果は次のとおりです。

MySQL> SELECT host、user、select_priv、update_priv FROM user WHERE user='newAdmin';
MySQL> ホスト、データベース、ユーザー、テーブル名、テーブル権限、列権限を選択します
 -> tables_priv から user='newAdmin';
MySQL> ホスト、データベース、ユーザー、テーブル名、列名、列権限を選択します
 -> columns_priv から user='newAdmin';

SHOW GRANTS ステートメントを実行して、newAdmin の権限情報を表示します。

newAdmin アカウントの権限情報を表示するには、次のステートメントを入力します。

'newAdmin'@'localhost' の権限を表示します。

newAdmin ユーザーを使用して MySQL にログインします。

現在のログインを終了するには、EXIT コマンドを使用します。ステートメントは次のとおりです。

MySQL>終了
さよなら

newAdmin アカウントを使用して MySQL にログインします。ステートメントは次のとおりです。

C:\>MySQL -u 新しい管理者 -p
パスワードを入力してください: ***

正しいパスワードを入力すると、「mysql>」プロンプトが表示され、ログインが成功します。

newAdmin ユーザーを使用して、test_db データベースの person_dd テーブルのデータを表示します。

newAdmin ユーザーには、テスト データベースの person テーブルの 3 つのフィールドに対するクエリ権限が付与されているため、SELECT ステートメントを実行してこれらのフィールドの値を表示できます。実行プロセスは次のとおりです。

MySQL> SELECT * FROM test_db.person_dd LIMIT 5;

newAdmin ユーザーを使用して、person_dd テーブルに新しいレコードを挿入し、ステートメントの実行結果を表示します。

新しいレコードを挿入するには、次のステートメントを入力します。

test_db.person_old(name, age,info) に VALUES('gaga', 30) を挿入します。

実行結果は次のとおりです。

エラー 1142 (42000): テーブル 'person' に対するユーザー 'newAdmin'@'localhost' への INSERT コマンドが拒否されました

ご覧のとおり、ステートメントは実行できず、エラー メッセージは newAdmin ユーザーが person テーブルにエントリを挿入できないことを示しています。したがって、ユーザーは不正な操作を実行することはできません。

現在のアカウントからログアウトし、ルート ユーザーとして再度ログインして、新しい管理者アカウントの権限を取り消します。

終了コマンドを入力します: exit

再度、MySQL に root ユーザーとしてログインし、mysql データベースを現在のデータベースとして選択します。

newAdmin アカウントの権限を取り消すステートメントを入力します。実行プロセスは次のとおりです。

'newAdmin'@'localhost' からの test.person の SELECT、UPDATE を取り消します。

実行結果は次のとおりです。

MySQL> test.person の SELECT と UPDATE を取り消します ('newAdmin'@'localhost' から)。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

newAdminのアカウント情報を削除します。

指定したアカウントを削除するには、DROP USER ステートメントを使用して次のように入力します。

ユーザー 'newAdmin'@'localhost' を削除します。

2. PostgreSQLユーザー管理

2.1 グループロール管理

[例 2.1] post2 という名前のロールを作成します。SQL コードは次のとおりです。

ロール post2 を作成します。

[例 2.2] システム内のロールを確認します。SQL コードは次のとおりです。

pg_rolesからrolnameを選択します。

[例 2.3] ロール名 post1 を post3 に変更します。 SQL ステートメントは次のとおりです。

ロール post1 を変更して post3 に名前を変更します。

【例2.4】ロールpost3を削除します。 SQL ステートメントは次のとおりです。

ロールポスト3を削除します。

2.2 ロールのさまざまな権限

1. ログイン

[例 2.5] ログイン権限を持つロール post4 を作成します。 SQL ステートメントは次のとおりです。

ロール post4 ログインを作成します。

2スーパーユーザー

[例 2.6] スーパーユーザー権限を持つロール post5 を作成します。 SQL ステートメントは次のとおりです。

ロール post5 スーパーユーザーを作成します。

3. データベースを作成する

[例 2.7] データベースを作成する権限を持つロール post6 を作成します。 SQL ステートメントは次のとおりです。

ロール post6 CREATEDB を作成します。

4. キャラクターを作成する

ロールを作成するには、この権限を明示的に付与する必要があります (スーパーユーザーを除く)。ロールに CREATEROLE 権限が付与されると、他のロールを変更および削除したり、他のロールへのメンバーシップを付与または取り消したりできるようになります。もちろん、スーパーユーザーで操作したい場合は、この権限だけでは不十分で、SUPERUSER 権限が必要です。

ロールを作成する権限を持つロールを作成します。SQL 構文は次のとおりです。

CREATE ROLE 名 CREATEROLE;

[例 2.8] データベースを作成する権限を持つロール post7 を作成します。 SQL ステートメントは次のとおりです。

ロール post7 CREATEROLE を作成します。

5. パスワード

クライアント認証方法でデータベースへの接続が必要な場合は、パスワード認証が必要です。一般的な認証方法には、パスワード、md5、crypt などがあります。

パスワード権限を持つロールを作成します。SQL 構文は次のとおりです。

ロール名の作成

パスワード認証方法固有のパスワード

[例 2.9] パスワード権限を持つロール post8 を作成します。 SQL ステートメントは次のとおりです。

ロール post8 を作成します。パスワード '123456';

2.3 アカウント管理

1. ユーザーを作成する

[例 2.10] データベースとロールを作成する権限を持ち、ログイン パスワードが「123456789」である postgre02 という名前のユーザーを作成します。 SQL ステートメントは次のとおりです。

ユーザー postgre02 を作成 パスワード '123456789' 
CREATEDB CREATEROLE ;

2. ユーザーを削除する

[例 2.11] DROP USER を使用してアカウント "postgre02" を削除します。SQL ステートメントは次のとおりです。

DROP USER postgre02;

3. ユーザーパスワードを変更する

[例 2.12] アカウント「postgre01」のパスワードを「123123」に変更します。SQL 文は次のようになります。

ALTER USER postgre01 パスワード '123123';

2.4 グループロールとユーザーロールの管理

1. グループロールを承認する

[例 2.13] テーブルとロールを作成する権限を「post1」ロールに追加します。SQL ステートメントは次のとおりです。

ロール post1 を CREATEDB CREATEROLE に変更します。

2. ユーザー認証

[例 2.14] 「postgre01」ユーザーにテーブルとロールを作成する権限を追加します。SQL ステートメントは次のとおりです。

ALTER USER postgre01 でデータベース CREATEDB CREATEROLE を作成します。

3. グループロールの権限を取り消す

[例 2.15] 「post1」ロールのテーブル作成権限とロール作成権限を取り消します。SQL 文は次のようになります。

ロール post1 を変更します。NOCREATEDB NOCREATEROLE;

4. ユーザー権限を取り消す

[例 2.16] ユーザー「postgre01」からテーブルとロールを作成する権限を取り消します。SQL ステートメントは次のようになります。

ALTER USER postgre01 NOCREATEDB NOCREATEROLE;

2.5 データベース権限管理

1. データベースの所有者を変更する

[例 2.17] 「mytest」データベースの所有者を post1 に変更します。 SQL ステートメントは次のとおりです。

データベース mytest の所有者を post2 に変更します。

2. ユーザーのデータテーブル権限を増やす

[例 2.18] ppo1 は既存のデータ テーブル、postgres は既存のユーザーであり、postgres は ppo1 データ テーブルを更新する権限を持っています。テーブル権限を更新するには、次のコマンドを使用します。

ppo1 に対する更新権限を postgres に付与します。

上記の文を次のように変更します。

ppo1 の更新を一般公開します。

これは、データ テーブル ppo1 の更新権限がシステム内のすべてのロールに付与されることを意味します。

上記の文を次のように変更します。

ppo1 のすべての権限を postgres に付与します。

これは、オブジェクトに適用可能なすべての権限がユーザー postgres に付与されることを意味します。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • Postgresql ログ設定チュートリアルの詳細な説明
  • PostgreSQLデータベースに匿名ブロックを書き込む例
  • Postgresql 現在のユーザー名の実装を表示する
  • PostgreSQL 主キー削除操作
  • PostgreSQL 論理レプリケーション構成操作
  • SpringBoot で PostgreSql データベースに接続する方法
  • PostgreSQL マスタースレーブデータダウンタイムリカバリテストソリューション
  • PostgreSQLデータベースの監視とデータメンテナンス操作

<<:  HTML テーブルタグチュートリアル (21): 行の境界線の色属性 BORDERCOLOR

>>:  docker view container log コマンドの実装

推薦する

ファイル共有サーバーを構築するための samba + OPENldap の詳細な説明

ここでは、samba (ファイル共有サービス) v4.9.1 + OPENldap (バックエンド ...

mysql-5.7.21-winx64 無料インストール版のインストール - Windows チュートリアル詳細説明

1 ダウンロードアドレスは https://dev.mysql.com/downloads/mysq...

MySQLログシステムの詳細情報共有

大規模なシステムに取り組んだことがある人なら誰でも、ログの役割を過小評価してはならないことを知ってい...

年末ですが、MySQL パスワードは安全ですか?

序文:年末です。データベースを検査する時期ではないでしょうか?一般的に、検査では、パスワードの複雑さ...

MySQL に配列を保存するサンプルコードと方法

多くの場合、ストアド プロシージャを作成するときに配列がよく使用されますが、MySQL ではストアド...

MySQL 5.6 zipパッケージのインストールチュートリアルの詳細

これまでは、拡張子が .msi のファイル、つまり、完全なインストールが使用されていました。しかし、...

MySQLでMyISAMストレージエンジンをInnodbに変更した操作記録のまとめ

一般的に、MySQL はデフォルトでさまざまなストレージ エンジンを提供しており、次のように表示され...

Nginx で同じドメイン名を持つ複数のプロジェクトを構成する方法

Nginx を使用して同じドメイン名で複数のプロジェクトを構成するには、次の 2 つの方法があります...

MYSQL は、指定されたユーザーのランキングとクエリを実装します。ランキング関数 (並列ランキング関数) のサンプルコード

序文この記事は主に、MYSQL でランキングを実現し、指定ユーザーランキング関数 (並列ランキング関...

LayUI+Shiroは動的なメニューを実装し、メニュー拡張の例を記憶します

目次1. Maven 依存関係2. メニュー関連クラス1. メインメニュー2. サブメニュー3. S...

TinyEditorはシンプルで使いやすいHTML WYSIWYGエディタです

数日前、国産の XHTML エディタを紹介しました。今日は、有名な海外の Web デザイン ブログl...

横スクロールウェブサイトデザインの概要

水平スクロールはあらゆる状況に適しているわけではありませんが、適切に行えば、Web サイトを他のサイ...

VMware で VMware ツールをインストールしてもインストール ファイルが表示されない問題を解決する方法

VMware ツールは VMware の使用に非常に便利です。そのため、VMware ツールをインス...

CSS3 で作成された背景グラデーションアニメーション効果

成果を達成する 実装コードhtml <h1 class="text-light&qu...

HTMLは入力完了を検出する機能を実装する

入力が進行中かどうかを検出するには、「onInput(event)」を使用しますコンテンツが変更され...