4

私はバックエンドデータベースとしてPostgreSQLとスクリプトを処理するperlを使用してWebベースのアプリケーションを開発しています

ここでのアドバイスと同様に、ログイン情報を別のファイルに保持し、グローバルデータベース接続パラメーターを保存する場所を指定します。スクリプトが何を達成する必要があるかに応じて、異なるログイン資格情報を指す可能性があります。現在、これは明らかに変更が必要なデフォルトのPostgreSQLアカウントです。

PostgreSQLでユーザーアカウントを設定する方法について頭を悩ませる必要があります

ユーザーがデータベースにクエリを実行できるようにする2つが必要だと思います(例:web_user)。もう1つは変更を送信する必要があります(例:web_admin)。

web_adminアカウントはWebページにログインする必要があります

pgAdminまたはコマンドラインでログインロールを作成し、必要な権限を与えるにはどうすればよいですか?

編集してください明確にしてください

私は2つのアカウントを作成することに苦労しましたが、これが正しい方法であるかどうかは不明です

CREATE USER web_user PASSWORD 'password1';
GRANT SELECT to web_user on Table1;   // Read Only
CREATE USER web_admin PASSWORD 'password2';
GRANT SELECT,INSERT,UPDATE,DELETE to web_admin on Table1;        // Read Insert and update / delete rows within a existing table but not able to create, alter or delete a Table  or column

2つのooopsを編集する

だから私はpgAdminウィンドウで以下を実行しました

 CREATE USER web_user PASSWORD 'password1';
 GRANT SELECT to web_user in schema PUBLIC;   // Read Only

 CREATE USER web_admin PASSWORD 'password2';
 GRANT SELECT,INSERT,UPDATE,DELETE to web_admin in schema PUBLIC

web_userアカウントは、データベースへの読み取りアクセスのみを許可します。問題は、web_adminアカウントが同じ読み取りアクセスを持っている場合です。

web_userを削除して取り消してみました

revoke all privileges on database mydb from web_admin;

しかし、mydb内のすべてのテーブルを一覧表示する依存関係に関するエラーで失敗します

web_adminが実際に持っている特権を確認しようとしましたが、確認できませんでした。

このアカウントを削除するにはどうすればよいですか

grant web_userの構文の何が問題になっていますか?

4

1 に答える 1

3

ユーザーを作成するには、SQLでCREATEUSERコマンドを使用できます。(と同じCREATE ROLE ... WITH LOGINです)その後、GRANTを使用して特権を付与します。

「デフォルトのPostgreSQLアカウント」の意味がわかりません。あなたが「postgres」アカウントについて話しているなら、それはスーパーユーザーであり、すべてに対する権利を持っています。

特権とセキュリティのトピックは非常に複雑ですが、少なくとも2、3回はそれについて書きました。

  1. PostgreSQL<9.0ですべてのテーブルに特権を付与する方法
  2. PostgreSQL>9.0のすべてのテーブルに権限を付与する方法
  3. データベースを保護する方法
于 2013-02-06T17:21:20.480 に答える