Вы находитесь на странице: 1из 13

Registro de usuarios

CREAR USUARIO nombre de usuario


[ CON
[ SYSID uid ]
[PASSWORD 'palabra clave' ] ]
[ CREARDB | NOCREARDB ] [ CREARUSUARIO | NOCREARUSUARIO ]
[ EN EL GRUPO nombre de grupo [, ...] ]
[ VALIDO HASTA 'abstime' ]
Nombre de usuario: El nombre del usuario. uid
La orden SYSID puede ser usada para escoger el identificador de usuario
PostgreSQL del usuario que se est creando. Si no se especifica, se usar por
defecto el nmero ms alto asignado ms uno.
Palabra clave Pide la palabra clave del usuario. Si no va a usar autentificacin
por palabra clave puede omitir esta opcin, de otra manera el usuario no ser
capaz de conectar con el servidor de autenticacin de palabras clave.
CREATEDB, NOCREATEDB Estas rdenes definen la capacidad de un usuario
para crear bases de datos. Si se especifica
CREATEDB, el usuario definido tendr permiso para crear sus propias bases de
datos. Usando NOCREATEDB se denegar a un usuario la capacidad de crear
bases de datos. Si se omite esta orden,
NOCREATEDB se usa por defecto.
CREATEUSER, NOCREATEUSER Estas rdenes determinan si a un usuario se
le permitir crear nuevos usuarios. Esta opcin har del usuario un super
usuario que podr pasar por encima de todas las restricciones de acceso. Si se
omite esta orden se coger la orden de NOCREATEUSER como valor por
defecto del usuario. Nombre de grupo El nombre de un grupo dentro del cual
se coloca al usuario como un nuevo miembro.
Abstime La orden VALIDO HASTA pone un valor absoluto a la fecha en la que
la palabra clave del usuario pierde su validez. Si se omite esta orden el login
valdr para siempre.
Crear un usuario sin palabra clave:
CREAR USUARIO Jonathan
Crear un usuario con palabra clave:
CREAR USUARIO david CON PALABRA CLAVE 'jw8s0F4'
Crear un usuario con una palabra clave, cuya cuenta es vlida hasta el final del
2001. Ntese que un segundo dentro del ao 2002 la cuenta no es valida:
CREAR USUARIO miriam CON PALABRA CLAVE 'jw8s0F4' VALIDA HASTA '1 En
2002'
Crear una cuenta con la que el usuario pueda crear bases de datos:
CREAR USUARIO manuel CON PALABRA CLAVE 'jw8s0F4' CREARDB

Control de Acceso
Postgres proporciona mecanismos para permitir a los usuarios limitar el acceso
que otros usuarios tendrn a sus datos.
SuperUsuarios de la Base de Datos
Los SuperUsuarios de la base de datos (aquellos que tienen el campo
pg_user.usesuper activado) ignoran todos los controles de acceso descritos
anteriormente con dos excepciones: las actualizaciones del catlogo del
sistema no estn permitidas si el usuario no tiene el campo
pg_user.usecatupd activado, y nunca se permite la destruccin del catlogo
del sistema (o la modificacin de sus estructuras).
Privilegios de acceso
El uso de los privilegios de acceso para limitar la lectura, escritura y la
puesta de reglas a las clases se trata en grant/revoke.
Borrado de clases y modificacin de estructuras.
Los comandos que borran o modifican la estructura de una clase, como
alter, drop table, y drop index, solo funcionan con el propietario de la clase.
Como hemos dicho antes, estas operaciones no estn permitidas nunca en los
catlogos del sistema.

Manejo de transacciones

Atomicity(Atomicidad): todas las acciones en la transaccin se cumplen


o no se cumple ninguna.

Consistency(Consistencia): la transaccin solo termina si la data es


consistente.

Isolation(Aislamiento): la transaccin es independiente de otras


transacciones.

Durability(Durabilidad): Persistencia. Es la propiedad que asegura que


una vez realizada la operacin, sta persistir y no se podr deshacer
aunque falle el sistema y que de esta forma los datos sobrevivan de
alguna manera.

ESTADOS DE UNA TRANSACCION

Active : es el estado inicial y permanece durante toda la ejecucin.

Partially committed : despus de que se ha ejecutado el ltimo


statement

Failed : despus de algn error, no se puede continuar.

Aborted : se hace un "rollback" hacia un estado anterior consistente.

Committed : despus del xito

Gestin de permisos
Es necesario tener permiso de definicin de reglas en una clase para poder
definir una regla en l. Se debe utilizar el comando GRANT y REVOKE para
modificar estos permisos. El archivo pg_hba.conf le permite establecer el tipo
de autenticacin basada en mquina a ser usada. Esta autenticacin es
realizada antes de que PostgreSQL establezca una conexin a la base de datos
en cuestin, donde los permisos de usuarios seran relevantes.

Bases de Datos Distribuidas (BDD)


Una base de datos distribuida (BDD) es un conjunto de mltiples bases de
datos lgicamente relacionadas las cuales se encuentran distribuidas en
diferentes espacios lgicos e interconectados por una red de
comunicaciones.

Medidas de recuperacin en caso de falla


Generalmente, la prdida de datos se
caracteriza por:
La incapacidad de acceder a
cualquier dato desde un sistema
de computacin en
funcionamiento o una copia de
seguridad
La supresin accidental de
archivos o la sobre escritura de
estructuras de control de datos
Los archivos daados o con
acceso bloqueado debido al funcionamiento anormal o a la avera del
dispositivo
Tipos de Backups
En PostgreSQL existen diferentes tipos de Copias de Seguridad -Backups-:
Completos y Parciales.
En esta primera parte, veremos los backups completos y cmo podemos
realizarlos, dejaremos los backups parciales para las siguientes entregas.
Backup Completo -Full BackupEste tipo de copia de seguridad es un volcado completo de nuestra base de
datos en un instante "t", y como es natural, contiene la informacin hasta el
instante que comenzamos el proceso de backup. Para realizar este backup
utilizaremos el comando <pg_dump> y, es posible realizar esta operacin en
caliente, es decir, podemos tener nuestra base de datos abierta.
Ventajas del Backup Completo

Sencillo de realizar
Se puede realizar en caliente
Backup "consistente"
En bases de datos pequeas es muy rpido

Desventajas del Backup Completo

Se restaura "todo" o "nada"


Consumo de I/O elevado
En bases de datos grandes puede no ser efectivo al Realizar un Backup

Ya hemos hablado que para realizar un "full backup" utilizaremos el comando


<pg_dump> cuyo formato es el siguiente:
pg_dump [OPCIONES] [DATABASE]
Las opciones ms importantes son:

f Nombre del archivo de salida donde vamos a guardar nuestro backup


Z Salida comprimida con GZip. Por defecto el nivel de compresin es
normal, pero podemos utilizar la compresin mxima si ponemos -Z 9
a Slo datos, nada de estructura.

b Incluye objetos grandes en el volcado (blobs)


c Aade comandos de borrado (clean) antes de cada objeto, por
ejemplo, "DROP SCHEMA"
C Aade los comandos de creacin (create) antes de cada objecto, por
ejemplo, "CREATE SCHEMA"
E Utiliza el tipo de caracteres indicado en el volcado, por ejemplo, "-E
UTF8"
n Vuelca slo el schema indicado, por ejemplo, "-n public"
N Vuelca todos los schemas menos el indicado, por ejemplo, "-N private"
o Incluye los OIDs en el volcado
O No restaura los propietarios a los objetos
s Vuelca slo estructura nada de datos
t Vuelca slo la tabla indicada, por ejemplo, "-t havoctec.users"
T Vuelca todas las tablas menos la indicada, por ejemplo "-T
havoctec.options"
X No vuelva los privilegios, es decir, los GRANT y REVOKE
Por ejemplo, podemos realizar un backup completo utilizando: $ pg_dump
-f /u07/backups/full/havoctec-db-FULL-02.NOV.2010.dump.gz -Z 9 -o -C
havoctec
Restaurar un Full Backup
La restauracin de un backup realizado con <pg_dump> es realmente sencilla,
debemos tener en cuenta que al ser un backup completo vamos a "volcar
todos los datos". En funcin de las opciones que hemos utilizado en el volcado,
deberemos realizar algunos pasos diferentes, por ejemplo, si hemos utilizado la
opcin -C <opcin Create>, dentro del propio dump tendremos los comandos
SQL para la creacin de la base de datos, y por lo tanto no ser necesario
crearla. Si no hemos utilizado esa opcin, deberemos crear la base de datos
primero -a no ser que queramos restaurar sobre otra base de datos diferentePara realizar la restauracin de un volcado completo, utilizaremos el comando
<psql> y como entrada nuestro archivo de backup, por ejemplo
$ psql -U postgres < /u07/backups/full/havoctec-db-FULL-02.NOV.2010.dump
Fijaros que no he puesto el archivo gzip (.gz) ya que el comando <psql> cree
que lo que viene son instrucciones SQL en texto plano, si no queremos
descromprimirlo podemos utilizar
$ gzip -dc /u07/backups/full/havoctec-db-FULL-02.NOV.2010.dump | psql -U
postgres
Un Ejemplo Completo
En este ejemplo vamos a crear una base de datos llamada "havoctec" y en ella
una tabla donde introduciremos varios datos. Posteriormente realizaremos una
copia de seguridad y la restauraremos.
Recordar que si no tenemos asignado el valor de <PGDATA> deberemos
exportarlo antes de poder trabajar con PostgreSQL.
$ export PGDATA=/var/postgres/8.4/data

Nos conectamos a PostgreSQL y crearemos la base de datos "havoctec"


$ psql -U postgres
Password for user postgres:
psql(8.4.1)
Type "help" for help.
postgres=# create database havoctec;
CREATE DATABASE
postgres=# \c havoctec;
psql (8.4.1)
You are now connected to database "havoctec".
havoctec=# create table urls(url_id serial, url_name character varying);
NOTICE: CREATE TABLE will create implicit sequence "urls_url_id_seq" for serial
column "urls.url_id"
CREATE TABLE
havoctec=# insert into urls(url_name) values('http://www.havoctec.com/');
INSERT 0 1
havoctec=# insert into urls(url_name) values('http://www.sfchildren.com/');
INSERT 0 1
havoctec=# insert into urls(url_name) values('http://sparcki.blogspot.com/');
INSERT 0 1
havoctec=# select * from urls;
url_id |
url_name
--------+-----------------------------1 | http://www.havoctec.com/
2 | http://www.sfchildren.com/
3 | http://sparcki.blogspot.com/
(3 rows)
A continuacin, realizaremos una copia de seguridad utilizando la opcin <-C>
(create) para poder restaurar en la misma base de datos con el mismo nombre.
$ time pg_dump -C -f /var/backups/havoctec-db-full.dump -U postgres havoctec
Password:
real 0m3.490s
user 0m0.029s
sys
0m0.012s
Ahora, borramos la base de datos
$ psql -U postgres
Password for user postgres:
psql (8.4.1)
Type "help" for help.
postgres=# drop database havoctec;
DROP DATABASE
postgres=# \q
Por ltimo, restauraremos la base de datos

$ psql -U postgres < /var/backups/havoctec-db-full.dump


Password for user postgres:
SET
SET
SET
SET
SET
SET
CREATE DATABASE
ALTER DATABASE
You are now connected to database "havoctec".
SET
SET
SET
SET
SET
SET
CREATE LANGUAGE
ALTER LANGUAGE
SET
SET
SET
CREATE TABLE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
ALTER SEQUENCE
setval
-------3
(1 row)
ALTER TABLE
REVOKE
REVOKE
GRANT
GRANT
Comprobamos que tenemos los mismos registros, realizando un simple
<SELECT>
$ psql -U postgres -d havoctec
Password for user postgres:
psql (8.4.1)
Type "help" for help.
havoctec=# select * from urls;
url_id | url_name
--------+-----------------------------1 | http://www.havoctec.com/
2 | http://www.sfchildren.com/
3 | http://sparcki.blogspot.com/
(3 rows)

havoctec=# \q
Automatizar la Copias usando el <cron>
Por ltimo, podemos utilizar nuestro <crontab> para realizar una copia de
seguridad completa diariamente, y as, evitar sorpresas de ltima hora.
El problema que nos podemos encontrar es, principalmente, que el comando
<pg_dump> nos solicite una contrasea y no podamos automatizar el proceso.
No hay problema, para ello est el archivo <pgpass> PostgreSQL Password File,
en el cual declararemos los usuarios y contraseas necesarios para el acceso
sin password. El formato del archivo es el siguiente:
maquina:puerto:base de datos:usuario:password
Si utilizamos un "*" en el campo de <base de datos> se podrn acceder a
todas la bases de datos, por ejemplo, si queremos que el usuario backups
pueda acceder a cualquier base de datos, ponemos
$ echo "db1.havoctec.com:*:backups:password" > $HOME/.pgpass
$ chmod 600 $HOME/.pgpass
$ pg_dump -U backups -Z9 -C -f /var/backups/havoctec-db-full.dump.gz
havoctec
Ahora PostgreSQL no nos ha solicitado la contrasea, porque la ha encontrado
en el archivo, y por lo tanto, la ha introducido por nosotros, as que ya podemos
aadir nuestra entrada al cron para que haga copias de seguridad completas
todos los das a las 02:00h, por ejemplo,
$ crontab -e00 02 * * * /u01/app/postgres/8.4/bin/pg_dump -U backups -Z9 -C -f
/var/backups/havoctec db-full.dump.gz havoctec:wq

Encriptacin de datos
Pgcrypto es una extensin para encriptar datos en Postgresql, a partir de pg9.1 se instala con create extension pgcrypto, para ello debemos tener instalado
el paquete postgresql-contrib de la version de nuestro postgres.
Ejemplo de uso:
CREATE TABLE usuario
( id serial NOT NULL,
usuario character varying(15) NOT NULL,
clave bytea)
Ingresamos datos:
insert into usuario (usuario, clave) values ('alex', encrypt('11112222',
'password','3des'))
Como vemos usamos la funcion encrypt, el primer parametro es la clave a
encriptar, el segundo es la clave de encriptacion y el tercero el algoritmo
utilizado, en nuestro caso 3des, mejor conocido como triple des
Si hacemos un select directo a la tabla nos mostrar algo como
usuario
alex

clave
\xefea90726dc45f756f40a9e22f66fc1a

Para tomar el valor desencriptado hacemos:


select usuario, encode(decrypt(clave,'password','3des'::text), 'escape'::text) AS
clave from usuario

Memoria
Mnimo:

Ediciones Express: 512 MB


Todas las dems ediciones: 1
GB

Se recomienda:
Ediciones Express: 1 GB
Todas las dems ediciones: al
menos 4 GB y debe aumentar
a medida que el tamao de la
base de datos aumente para
asegurar un rendimiento
ptimo.

Procesador
Mnimo:

Procesador x86: 1,0 GHz


Procesador x64: 1,4 GHz

Se recomienda:
2 GHz o ms
Procesador x64: AMD Opteron,
AMD Athlon 64, Intel Xeon
compatible con Intel EM64T
Intel Pentium IV compatible
con EM64T
Procesador x86: compatible
con Pentium III o superior

Requisitos para instalar Postgre SQL

Вам также может понравиться