macos - pg_dump - postgres app create database
¿Cómo iniciar el servidor PostgreSQL en Mac OS X? (20)
Aquí mis 2 centavos: hice un alias para postgres pg_ctl y lo puse en .bash_profile (mi versión de postgresql es 9.2.4, y la ruta de la base de datos es /Library/PostgreSQL/9.2/data).
alias postgres.server="sudo -u postgres pg_ctl -D /Library/PostgreSQL/9.2/data"
Lanzar nueva terminal.
¿Y entonces? Puede iniciar / detener su servidor postgresql con esto:
postgres.server start
postgres.server stop
ACTUALIZACIÓN FINAL:
Me había olvidado de ejecutar el comando initdb.
</ ACTUALIZACIÓN FINAL>
ejecutando este comando
ps auxwww | grep postgres
Veo que Postgres no se está ejecutando.
> ps auxwww | grep postgres
remcat 1789 0.0 0.0 2434892 480 s000 R+ 11:28PM 0:00.00 grep postgres
esto plantea la pregunta: ¿Cómo inicio el servidor postgresql?
actualizar:
>pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
sh: /usr/local/var/postgres/server.log: No such file or directory
actualización 2:
El toque no tuvo éxito, así que hice esto en su lugar:
> mkdir /usr/local/var/postgres
> vi /usr/local/var/postgres/server.log
> ls /usr/local/var/postgres/
server.log
Pero cuando intento iniciar el servidor de rieles, todavía veo esto:
Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?
actualización 3:
> pg_ctl -D /usr/local/var/postgres status
pg_ctl: no server running
actualización 4:
Descubrí que NO HABÍA pg_hba.conf (solo pg_hba.conf.sample), así que modifiqué la muestra y la cambié de nombre (para eliminar la .sample). Aquí están los contenidos:
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
pero no entiendo esto
> pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
> pg_ctl -D /usr/local/var/postgres status
pg_ctl: no server running
además:
sudo find / -name postgresql.conf
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
actualización 5:
sudo pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Password:
pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process.
actualización 6:
esto parece extraño
> egrep ''listen|port'' /usr/local/var/postgres/postgresql.conf
egrep: /usr/local/var/postgres/postgresql.conf: No such file or directory
aunque, hice esto:
>sudo find / -name "*postgresql.conf*"
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample
/usr/share/postgresql/postgresql.conf.sample
así que hice esto:
egrep ''listen|port'' /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample
#listen_addresses = ''localhost'' # what IP address(es) to listen on;
#port = 5432 # (change requires restart)
# supported by the operating system:
# %r = remote host and port
así que intenté esto:
> cp /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf
> cp /usr/share/postgresql/postgresql.conf.sample /usr/share/postgresql/postgresql.conf
sigue recibiendo el mismo "¿Está funcionando el servidor?" mensaje.
El gestor de paquetes de Homebrew incluye listas de launchctl para iniciarse automáticamente. Para más información ejecute brew info postgres
.
Comience manualmente:
pg_ctl -D /usr/local/var/postgres start
Detener manualmente:
pg_ctl -D /usr/local/var/postgres stop
Iniciar automáticamente:
"Para que launchd inicie postgresql ahora y reinicie al iniciar sesión:"
brew services start postgresql
¿Cuál es el resultado de pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
?
¿Cuál es el resultado del pg_ctl -D /usr/local/var/postgres status
de pg_ctl -D /usr/local/var/postgres status
?
¿Hay algún mensaje de error en el server.log?
Asegúrese de que las conexiones tcp localhost estén habilitadas en pg_hba.conf:
# IPv4 local connections:
host all all 127.0.0.1/32 trust
Compruebe las direcciones de escucha y el puerto en postgresql.conf:
egrep ''listen|port'' /usr/local/var/postgres/postgresql.conf
#listen_addresses = ''localhost'' # what IP address(es) to listen on;
#port = 5432 # (change requires restart)
Limpiar
Postgres fue probablemente instalado a través de Homebrew , Fink , MacPorts o el instalador EnterpriseDB .
Verifique la salida de los siguientes comandos para determinar con qué administrador de paquetes se instaló:
brew && brew list|grep postgres
fink && fink list|grep postgres
port && port installed|grep postgres
La forma más limpia de iniciar / detener / reiniciar Postgres si lo ha instalado a través de brew
es simplemente descargar y / o cargar el archivo de configuración launchd que viene con la instalación:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
La primera línea detendrá postgres y la segunda línea la iniciará. No es necesario especificar ningún directorio de datos, etc. ya que todo está en ese archivo.
Otro enfoque es el uso de lunchy gem (una envoltura para launchctl):
brew install postgresql
initdb /usr/local/var/postgres -E utf8
gem install lunchy
Para iniciar postgres:
lunchy start postgres
Para detener postgres:
lunchy stop postgres
Para obtener más información, consulte: " Cómo instalar PostgreSQL en una Mac con Homebrew y Lunchy "
Para Mac / OSX, realmente me gusta LaunchRocket para este y otros servicios de fondo que usé en el desarrollo.
https://github.com/jimbojsb/launchrocket
Este sitio tiene buenas instrucciones de instalación: http://macappstore.org/launchrocket/
Esto le da una buena pantalla en sus Preferencias del sistema que le permite iniciar, reiniciar, root, iniciar al iniciar sesión.
Para fines de desarrollo, una de las formas más sencillas es instalar Postgres.app desde el sitio oficial . Se puede iniciar / detener desde la carpeta Aplicaciones o usando los siguientes comandos en el terminal:
# start
open -a Postgres
# stop
killall Postgres
killall postgres
Para iniciar el servidor postgresql:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
para finalizar el servidor postgresql:
pg_ctl -D /usr/local/var/postgres stop -s -m fast
También puede crear un alias a través de CLI para hacerlo más fácil:
alias pg-start=''pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start''
alias pg-stop=''pg_ctl -D /usr/local/var/postgres stop -s -m fast''
Con estos solo puede escribir "pg-start" para iniciar Postgres y "pg-stop" para apagarlo.
Para macports, solo use el comando de carga / descarga y el nombre del puerto del servidor en ejecución:
sudo port load postgresql96-server
- or -
sudo port unload postgresql96-server
para no tener que recordar dónde se encuentra el archivo /Library/LaunchDaemons/org.macports.postgresql96.plist
Para propósitos de prueba, creo que la aplicación PostgreSQL es la mejor opción.
Ejecuta una aplicación, y el servidor está en funcionamiento. Cierra la aplicación, y el servidor se desactiva.
Para una base de datos de prueba desechable rápida, puede ejecutar el servidor en primer plano.
Inicializar una nueva base de datos postgres en un nuevo directorio
mkdir db
initdb db -E utf8
createdb public
Inicie el servidor en primer plano (ctrl-C para detener el servidor)
postgres -d db
En otra sesión de shell, conéctese al servidor.
psql -d public
PostgreSQL está integrado en Server.app disponible a través de la App Store en Mountain Lion. Eso significa que ya está configurado y solo necesita iniciarlo y luego crear usuarios y bases de datos.
Consejo : No empiece con la definición de $ PGDATA y así sucesivamente, tome las ubicaciones de los archivos tal como están.
Tendría este archivo: /Library/Server/PostgreSQL/Config/org.postgresql.postgres.plist
Para comenzar:
sudo serveradmin start postgres
Proceso iniciado con argumentos:
/Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D / Library / Server / PostgreSQL / Data -c listen_addresses = 127.0.0.1, :: 1 -c log_connections = on -c log_directory = / Library / Logs / PostgreSQL partes de los sistemas de las partes de los parques = PostgreSQL.log -c log_line_prefix =% t -c log_lock_waits = en -c log_statement = ddl -c logging_collocket -parques de las partes de las partes -c unix_socket_directory = / private / var / pgsql_partspolaspa-
Puedes sudo:
sudo -u _postgres psql template1
O conecte:
psql -h localhost -U _postgres postgres
Puede encontrar el directorio de datos, la versión, el estado de ejecución, etc. con
sudo serveradmin fullstatus postgres
Si desea iniciar y detener manualmente postgresql (instalado a través de homebrew), la forma más sencilla es:
brew services start postgresql
y
brew services stop postgresql
Tengo el mismo problema y realizo todas las actualizaciones desde la primera publicación. Pero después de comprobar el archivo de registro:
/usr/local/var/postgres/server.log
Veo verdadera causa:
FATAL: data directory "/usr/local/var/postgres" has group or world access
DETAIL: Permissions should be u=rwx (0700).
Después de cambiar el permiso en este directorio
chmod 0700 /usr/local/var/postgres
El servidor de Postgres ha comenzado.
Cada vez que compruebe el archivo de registro.
Tuve casi el mismo problema, y usted citó el comando initdb como la solución. Esta fue también la solución para mí, pero no vi que nadie la publicara aquí, así que para aquellos que la buscan:
initdb /usr/local/var/postgres -E utf8
Variación en esta respuesta: https://.com/a/13103603/2394728
initdb `brew --prefix`/var/postgres/data -E utf8`
cuando instala postgresql usando homebrew:
brew install postgres
Al final de la salida, verá estos métodos para iniciar el servidor:
To have launchd start postgresql at login:
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
Then to load postgresql now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Or, if you don''t want/need launchctl, you can just run:
postgres -D /usr/local/var/postgres
Creo que esta es la mejor manera.
Puede agregar un alias a su perfil. Para mayor comodidad.
ninguna de las respuestas anteriores solucionó el problema para mí a pesar de recibir los mismos mensajes de error. Pude hacer que mi instancia volviera a funcionar al eliminar el archivo postmaster.pid existente que estaba bloqueado y no permitir conexiones.
$ brew upgrade postgres
lo arregla para mi
Eso, por supuesto, actualizará su versión de postgres y actualizará / instalará cualquier dependencia. ADVERTENCIA: haga esto sabiendo que su versión postgresql probablemente cambiará. Para mí, eso no fue un gran problema.
Si su computadora fue reiniciada abruptamente
Primero, debe eliminar el archivo /usr/local/var/postgres/postmaster.pid
Luego, puede reiniciar el servicio utilizando uno de los muchos otros métodos mencionados, dependiendo de su instalación.
Puede verificar esto mirando los registros de Postgres para ver qué podría estar pasando: tail -f /usr/local/var/postgres/server.log
# remove old database files (If there was any)
$rm -rf /usr/local/var/postgres # install the binary
$ brew install postgresql
# init it
$ initdb /usr/local/var/postgres
# start the postgres server
$ postgres -D /usr/local/var/postgres
# create your database
$ createdb mydb
# Access db.
$ psql mydb
psql (9.0.1)
Type "help" for help.