2012-01-12 14 views
22

me sale este error al intentar volcar la base de datos, que entré enpermiso volcado Postgresql negó

linuxuser $ sudo su postgres 
linuxuser $ [sudo] password for linuxuser:... 
$ pg_dump -h localhost mydb >tempfile 
$ sh: cannot create tempfile: Permission denied 

cuál es el problema? Acabo de instalar postgresql nuevo.

Respuesta

42

de escritura en el directorio donde postgres usuario tiene acceso de escritura. Por ejemplo, /tmp.

$ pg_dump -h localhost mydb >/tmp/tempfile 

En su intento, el usuario de postgres intenta crear un archivo en algún directorio aleatorio que pertenezca al otro usuario.

5

sudo su postgres no cambia el directorio actual por lo que todavía estamos en el directorio y postgres casa de LinuxUser no tiene permiso para escribir en él. Cambio a un directorio diferente

2

postgres usuario

Como las otras respuestas correctas, dijo, la carpeta en la que está intentando guardar la copia de seguridad no tiene permisos asignados a la postgres usuario (cuenta de usuario del sistema operativo). El usuario postgres es el que ejecuta la utilidad de copia de seguridad. Esta cuenta de usuario se creó durante el proceso de instalación de Postgres. Puede haber usado un nombre diferente, pero el predeterminado es postgres.

carpeta con permisos de

la solución es bien encontrar o crear una carpeta donde el usuario ha postgres permisos de lectura y escritura.

Mac OS X

En Mac OS X (Mountain Lion), soy capaz de crear una carpeta, en el Finder.

  1. En el Finder, cree una nueva carpeta. Seleccionarlo
    En este ejemplo, creé una carpeta llamada postgres_backups.
  2. Elija File>Get Info.
  3. Abra el triángulo de revelación para la sección Sharing & Permissions.
  4. Haga clic en el botón Más para agregar otro elemento a la lista de usuarios.
    Aparece una lista de usuarios en un cuadro de diálogo "hoja".
  5. postgres seleccione el usuario de la lista.
  6. En la columna Privilege, para la nueva fila postgres, cambie el menú emergente a Read & Write.
  7. Cierre la ventana Get Info. Hecho.

Ahora puede dirigir sus archivos de copia de seguridad Postgres a esa carpeta.

screen shot of a "Get Info" window in the Finder

Por cierto, yo uso la aplicación pgAdmin hacer copias de seguridad y restauraciones. Control + clic en la base de datos deseada y elija Backups…. La aplicación pgAdmin probablemente se incluyó en tu instalación de Postgres.

0

Lo primero que debe hacer es no cambiar al usuario postgres. El uso de este comando para la copia de seguridad:

pg_dump -U username -h localhost dbname > /db.sql 
2

copia de seguridad y restauración puede ser realizado por cualquier usuario sin privilegios que conoce las postgres contraseña de superusuario cambiando los permisos en el directorio de trabajo:

% mkdir backup 

% chmod 0777 backup 

% su postgres 

[enter password] 

$ cd backup 

$ pg_dump mydb >tempfile 

$ exit 

"archivo temporal" habrá propiedad de Postgres y del mismo grupo que el usuario

0

Luché con este problema de "Permiso denegado" al intentar hacer una copia de seguridad de mi base de datos PSQL en una máquina Ubuntu durante mucho tiempo, e intenté derechos de acceso de usuario, estado de superusuario, propiedades de carpeta- -un montón de cosas. Finalmente, algo funcionó que era ridículamente simple. En el comando:

pg_dump -U username -O dbname > 'filename.sql' 

Asegúrese de que tiene comillas (simples o dobles comillas parecen funcionar) alrededor del nombre de archivo que sigue el signo mayor que (">"). Los ejemplos anteriores no tienen comillas alrededor del nombre del archivo. Una vez que lo intenté, ya no recibí errores Permiso denegado.

Cuestiones relacionadas