sql >> Databáze >  >> RDS >> PostgreSQL

Vytvořte roli PostgreSQL 9 s přihlášením (uživatelem), abyste mohli provádět funkce

Proveďte toto připojení k databázi, kterou chcete konfigurovat.

-- Create the user.
CREATE ROLE somebody WITH LOGIN PASSWORD '...';

-- Prevent all authenticated users from being able to use the database,
-- unless they have been explicitly granted permission.
REVOKE ALL PRIVILEGES ON DATABASE foo FROM PUBLIC;
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM PUBLIC;
REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM PUBLIC;
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM PUBLIC;

-- Allow the user to only use the specified functions.
GRANT CONNECT ON DATABASE foo TO somebody;
GRANT EXECUTE ON FUNCTION return_customers(), return_time() TO somebody;

Pokud máte více schémat než „veřejných“, budete je muset přidat do dvou REVOKE ALL PRIVILEGES ON ALL ... prohlášení.

Nezapomeňte, že funkce musí být vytvořeny pomocí SECURITY DEFINER nebo je tento uživatel stále nebude moci spustit, protože obsah funkce bude spuštěn s oprávněními tohoto uživatele, nikoli uživatele, který funkci vytvořil.

Viz:




  1. Jak váš ovladač Oracle ODBC načte klienta Oracle?

  2. Co znamená dvojtečka před literálem v příkazu SQL?

  3. Jaký je nejrychlejší způsob vyhledávání velkých tabulek pro body v okruhu MySQL (zeměpisná šířka a délka)

  4. Použijte seskupit podle a vraťte identitu řádku