En postgresql, quelle est la différence entre une "base de données" et une "relation"? ('la relation d'erreur x n'existe pas', 'la base de données d'erreur x existe déjà')
Je vois la juxtaposition de ces deux erreurs et, compte tenu de la faiblesse des résultats de recherche Google, a dû demander. Quelle est la différence et que dois-je faire ici?
deploy=# GRANT SELECT ON angel_research_production TO angel_research;
ERROR: relation "angel_research_production" does not exist
deploy=# create database angel_research_production;
ERROR: database "angel_research_production" already exists
Ma conjecture est que j'ai besoin de faire cette subvention sélectionner entreprise à partir d'un autre utilisateur...
Donc je lance cette sur postgres (dbroot) et d'obtenir ceci:
postgres=# GRANT SELECT ON angel_research_production TO angel_research;
ERROR: relation "angel_research_production" does not exist
De sorte qu'il n'existe pas une base de données, mais pas comme une relation. Comment pourrais-je remédier à cela et quels sont les enjeux sous-jacents ici? Je suis un peu débordé. Grâce
source d'informationauteur boulder_ruby
Vous devez vous connecter pour publier un commentaire.
Ma conjecture est que vous voulez vraiment de manière récursive
GRANT
laSELECT
droit de chaque relation (table et de vue) dans la base de donnéesangel_research_production
. - Il Correct?Comment accorder sur toutes les tables dans une base de données
Si oui, dans PostgreSQL 9.0 et plus vous avez:
de la manuel de SUBVENTION. Remarque le
ALL TABLES IN SCHEMA
clause. Utilisation:Si tous vos objets définis par l'utilisateur sont dans le
public
schéma (voir ci-dessous) qui va faire l'affaire.Dans les versions antérieures il n'existe pas de telle fonction, mais fonctions définies par l'utilisateur existe que des solutions de contournement.
Pg 9.0 a également MODIFIER DES DROITS PAR DÉFAUTce qui modifie la par défaut les privilèges attribués à nouvellement créé objets. Il n'affecte pas les objets existants.
Ce que signifie le message d'erreur veut dire?
Comme l'a noté TokenMacGuy, une relation est une table ou une vue, pas une base de données.
peut être considéré comme un raccourci pour:
et le tableau(relation) n'existe pas, de sorte que vous obtenez l'erreur signalée ci-dessus.
Dans le manuel de SUBVENTION ou la
psql
\h GRANT
de sortie, vous verrez:Cela montre que les privilèges que vous pouvez
GRANT
à une base de données sontCREATE
CONNECT
etTEMPORARY
. Il n'y a pas deSELECT
droit sur une base de données.Relations? Schéma? Hein?
Il existe quatre niveaux d'organisation dans Pg:
Cluster - contrôlée par le maître de poste, accepte les connexions sur adresse IP/port combo, contient un ou plusieurs bases de données y compris le haut -
template0
template1
etpostgres
bases de données. Contrôlé parpostgresql.conf
etpg_hba.conf
. Votre base de données de cluster est souvent créé pour vous par un installateur ou un package. À ne pas confondre avec le sens normal de cluster en tant que cluster de calcul ou le général langue anglaise sens.Base de données - contient un ou plusieurs schémas ou schémas. Vous vous connectez à une base de données spécifique lors de la connexion à la Pg.
Schéma - contient objets y compris relations. Si vous ne spécifiez pas le contraire, quelque chose de créé par l'utilisateur va dans le
public
schéma. Les requêtes peuvent faire référence à des objets dans plusieurs schémas ou explicitement, via search_pathimplicitement.Les objets - Un peu de PostgreSQL spécifique, quoi que ce soit (y compris une relation) qui existe dans un schéma.
Les Relations entre les Choses qui ressemblent et se comportent comme des tables, comme vues et tables
D'autres objets également résider dans des schémas, comme des fonctions, des moulages, des index, des séquences, des opérateurs, des agrégats, etc.
une relation est un tableau (ou quelque chose qui ressemble à l'une, par exemple, un point de vue), c'est, c'est une collection de lignes, avec les mêmes champs, donné un nom de référence.
Une base de données est un ensemble de relations et d'autres entités (comme les déclencheurs, les fonctions et les règles) qui sont maintenus ensemble dans une certaine logique de regroupement.