2011-03-06 28 views
7

Estoy tratando de crear un espacio de tabla en postgres, pero estoy obteniendo problemas de propiedad. El comando que estoy usando es:Creando un espacio de tabla en postgresql

CREATE TABLESPACE magdat OWNER maggie LOCATION '/home/john/BSTablespace' 

me sale el error:

ERROR: could not set permissions on directory "/home/john/BSTablespace": Operation not permitted 

La carpeta pertenece a Postgres: postgres, He intentado cambiar a Maggie, pero si me voy:

chown maggie:postgres /home/john/BSTablespace 

me sale:

chown: invalid user: `maggie:postgres' 

¿Cómo es que el usuario no existe? Si enumero los usuarios dentro de postgres, aparece. ¿Alguna idea de lo que podría estar haciendo mal?

Respuesta

16

Me atrevo a adivinar que el problema radica en los permisos del directorio principal "/ home/john". El directorio de inicio probablemente esté configurado de modo que solo su usuario tenga acceso (es decir, chmod 700) (es bueno que su directorio de inicio sea chmod 700, no lo cambie).

Hacer algo como:

 
mkdir /BSTablespace 
chown postgres:postgres /BSTablespace 

y luego

 
CREATE TABLESPACE magdat OWNER maggie LOCATION '/BSTablespace'; 

debería funcionar bien.

En cuanto al usuario maggie: los usuarios de la base de datos no son lo mismo que los usuarios del sistema operativo. Eso no quiere decir que no puedas tener un usuario en ambos lugares llamado Maggie, pero necesitarías crear al usuario tanto en la base de datos como en el sistema operativo para que eso suceda.

+1

Gracias, ese era el problema. Ponlo en la raíz y no hubo problema. –

+0

@gsiems actualice su respuesta, chown postgres: postgres/Directorio. – Giri

+0

¿Cómo se hace esto para los archivos en una unidad/partición separada? He intentado hacer referencia a un directorio '/ media/username/drive_name/pg_data', cuyos permisos se establecen con un comando 'chown' similar y un directorio principal cuyos permisos se establecen en 700 (con un usuario diferente).Aunque recibo el mismo error de permisos que en la publicación original. –

0

Al instalar Postgres en un Mac, y están tratando de utilizar PgAdmin para crear sus bases de datos, espacios de tablas, etc. Usted necesita saber que el PgAdmin Utility se ejecuta bajo la cuenta postgres que creó al instalar la base de datos PostgreSQL y las utilidades

El postgres account es parte del grupo _postgres

(dscacheutil -q group|grep -i postgres comando enumerará el grupo asociado a la cuenta postgres)

La mejor práctica sería la creación de un nuevo directorio en la raíz (/) para alojar los espacios de tabla, (llamémosla /postgresdata luego hacer postgres:_postgres los propietarios de ese directorio, utilizando el comando a continuación)

sudo chown postgres:_postgres /postgresdata

Esto debería hacerlo por usted. Podría crear un subdirectorio bajo /postgresdata para cada espacio de tabla único

Cuestiones relacionadas