====== PostgreSQL ====== ===== Descripción =====  PostgreSQL es una base de datos enterprise muy flexible y  popular. ===== Prerequistos ===== Tener el server instalado. Usualmente es un paquete postgresql-server ===== Procedimiento ===== ==== 1. Instalar ==== Ya no hay distribucion que no tenga postgresql. Instale como mejor prefiera\\ * yum install postgresql-server * apt-get install postgresql-server No suele ser productivo hacerlo desde un tar.gz a menos que necesite una compilacion especial ==== 2. Configurar ==== **Crear Usuario** Crear usuario administrador de la base de datos CREATE USER admin WITH SUPERUSER CREATEDB CREATEROLE PASSWORD 'kuine' O desde el shell como postgres puede crear el usuario  preo no asignarle permisos createuser -d -s -r -l -W admin Y el usuario mortal CREATE USER orfeo_usr WITH PASSWORD 'Eichahcu5P'; **Crear Base de Datos** CREATE DATABASE orfeo_odb; **Asigne permisos al usuario** Asignar permisos de administrador al usuario de orfeo sobre la base de datos de orfeo. GRANT ALL PRIVILEGES ON DATABASE orfeo_odb to orfeo_usr; **Permita Acceso remoto**\\ Una cosa importante es permitir el acceso remoto al servidor **SI LO NECESITA!!!!** . Esto se hace en un par de sitios En  postgresql.conf   ( /etc/postgresql/8.3/main/postgresql.conf) o (/etc/postgresql/9.1/main/postgresql.conf) pongalo a escuchar por todas las direcciones listen_addresses = '*' #listen_addresses = 'localhost' EN pg_hba.conf (///var/lib/pgsql/data/pg_hba.conf//)  o (/etc/postgresql/9.1/main/pg_hba.conf)  agregue la lineas de acceso deseada. (no borre las otras) host all all 192.168.8.0/24 md5 Y listo ..ya teniedo esto puede accederlo remoto El cambio a md5 toca hacerlo tambien ent 127.0.0.1 porque con "ident" no logramos conectar. **Conectarse remoto por linea de comandos** psql -h 192.168.8.74 -U admin -p 5432  orfeo o use pgadmin3 o phppgadmin  que son bastante bonitos ===== Otras funcionalidades ===== ==== 1. Asignarle privilegios y contraseña a root ==== Si nunca lo ha usado necesita asignar un password a root  o un administrador su -c psql postgres o sudo -u postgres psql Cambiar contrasena de postgres ALTER USER postgres WITH PASSWORD 'root123--'; ===== Trucos ===== ==== a. Cambiar el dueno de unas tablas ==== Use la siguiente sentencia: for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" orfeodb` ; do echo "psql -c alter table $tbl owner to orfeousr orfeodb" psql -c "alter table $tbl owner to orfeousr" orfeodb done\\ for tbl in `psql -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';" orfeodb` ; do echo "psql -c alter table $tbl owner to orfeousr orfeodb " psql -c "alter table $tbl owner to orfeousr" orfeodb done\\ for tbl in `psql -qAt -c "select table_name from information_schema.views where table_schema = 'public';" orfeodb` ; do echo  "psql -c alter table $tbl owner to orfeousr orfeodb" psql -c "alter table $tbl owner to orfeousr" orfeodb done\\ ==== b. Crear usuario Read/Only ==== Use la siguiente sentencia: - https://jamie.curle.io/posts/creating-a-read-only-user-in-postgres/\\ ==== c. Instalacion en CentOS (toca a mano) ==== postgresql-setup initdb chmod 777 /tmp chmod +t /tmp https://www.hostinger.com/tutorials/how-to-install-postgresql-on-centos-7/\\ ==== c. Instalacion versiones viejas Ubuntu ==== En esencia .. descargue y compile Las instrucciones https://stackoverflow.com/questions/39737568/install-older-versions-of-postgres7-x-or-8-x-in-ubuntu Los fuentes https://ftp.postgresql.org/pub/source/ ==== d. Restore un dump binario ==== pg_restore --clean --no-acl --no-owner -d -U ===== Problemas ===== ==== 1. No me deja conectar desde aplicativo web ==== Si es un Centos /RedHat  seguro es SELINUX. Tiene que darle setsebool -P httpd_can_network_connect_db on Y ahi debe funcionar Ojo que phpPgAdmin sufre de lo mismo. El server debe ser 127.0.0.1 .. ..por socket nolo logra - ------------------------- FIN ------------------------