Herramientas de usuario

Herramientas del sitio


db:rdbms

¡Esta es una revisión vieja del documento!


RDBMS

MySQL

Empezando...

Cuando MySQL esté instalado y lo ejecutemos por primera vez este se configurará. Una vez esta tarea se realice deberemos dar el password al root mediante el siguiente comando:

/usr/bin/mysqladmin -u root password 'new-password'

Se aconseja eliminar los usuarios anonimos que vienen por defecto:

DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.db WHERE User='';
FLUSH PRIVILEGES;

Comandos de consola

  • mysql, abre el cliente nativo de mysql. Distingue entre el ejecutable con el mismo nombre que lanza el server.
  • mysql -u user -p, entra con el usuario user y pida su password.

Comandos

Recuerda, tras cada comando coloca un ';'

  • show [databases | tables | columns] muestra los elementos indicados.
    • Para mostrar las tablas o las columnas debes de estar conectado a una base de datos.
    • Para mostrar las columnas de la tabla tablaX: show columns from tablaX;.
    • Para mostrar las tablas de la base de datos dbX: show tables from dbX;.
    • Para mostrar propiedades de una tabla: show table status. - Ver más abajo.
  • exit sale de mysql.
  • connect, conecta con el servidor, puedes indicar a qué base de datos conectar directamente.
  • use nombre, conecta a la base de datos con el nombre indicado.
  • describe tabla muestra los detalles (columnas, tamaño de estas…) de una tabla. Se puede acortar con desc tabla.
  • source archivo ejecuta un archivo .sql.

SHOW TABLE STATUS

  • Sintaxis: SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern' | WHERE expr]

Este comando te muestra las propiedades de una tabla (como por ejemplo el último índice asignado). Para consultar una tabla concreta harías: SHOW TABLE STATUS LIKE tabla_concreta.
Las propiedades que te muestra son:

  • Name, el nombre.
  • Engine, el tipo de motor usado para almacenar.
  • Version, el número de versión de la tabla.
  • Row_format, el formato de línea (Fixed, Dynamic, Compressed, Redundant, Compact).
  • Rows, el número de filas.
  • Avg_row_length
  • Data_length
  • Max_data_length
  • Index_length
  • Data_free, bytes no asignados.
  • Auto_increment, el próximo valor de auto incremento.
  • Create_time, cuando fue creada.
  • Update_time, cuando fue actualizada.
  • Check_time
  • Collation
  • Checksum
  • Create_options
  • Comment

Administración de usuarios

  • Cambiar una contraseña de un usuario: SET PASSWORD FOR usuario@dominio=PASSWORD('nuevo_password')
SET PASSWORD FOR root@localhost=PASSWORD('password');
  • Para eliminar un usuario hay que eliminar el registro de las bases de datos user y db.
DELETE FROM mysql.user WHERE User='alfred';
DELETE FROM mysql.db WHERE User='alfred';
FLUSH PRIVILEGES;

FLUSH PRIVILEGES activa los cambios de privilegios.

  • Crear usuarios, utiliza el comando GRANT privilegios ON donde TO usuario IDENTIFIED BY 'password', siendo…
    • Privilegios: USAGE, SELECT, INSERT, UPDATE, CREATE, ALTER, DELETE, DROP… Separados por comas si damos varios o ALL si le damos todos.
    • Donde: database.table.
GRANT SELECT ON *.* TO tina IDENTIFIED BY 'muller';
GRANT ALL ON db1.* TO tina IDENTIFIED BY 'muller';

Si el usuario sólo puede conectarse desde un solo ordenador el nombre de usuario lo indicariamos como: usuario@identificador_maquina. Si no se indica el identificador de la máquina (que podrá ser una ip o el nombre de la máquina) el usuario tendrá acceso desde fuera de la red y en el campo Host de la tabla mysql.user el valor será %.
Al ejecutar mysql, el cliente, si no especificamos nombre de usuario, entraremos como el usuario en el que estemos logueados en la máquina.

  • Para quitar privilegios utilizamos el comando REVOKE de la misma forma que se utiliza el GRANT.

Notas

  • Para exportar una base de datos a un fichero sql ejecuta, desde la consola del sistema, el siguiente comando: mysqldump -user -p basedatos > basedatos.sql

Sqlite

Sqlite es una base de datos dentro de un fichero, es muy manejable y ligera, usa sql standard pero, como imaginarás no es muy potente. Actualmente existen dos versiones posibles la sqlite 2 y la 3, para crear\usar una base de datos en UNIX (a parte de, evidentemente, tener instalados los paquetes) sólo tendremos que usar los comandos que la definenen seguidos del nombre de la base de datos:

sqlite myDb.db
sqlite3 mySecondDb.db

Ahora podemos lanzar comandos como .tables o .quit, que describen las tablas existentes o salen de la base de datos respectivamente, o lanzar comandos sql:

CREATE TABLE prueba (id INTEGER);

Para recoger el último identificador generado para un registro insertado utilizaremos el comando:

SELECT last_insert_rowid();

Para insertar una fecha:

UPDATE files SET created = '2029-11-06' WHERE id=1;

Para crear una tabla con identificador con autoincremento:

CREATE TABLE t1(a INTEGER PRIMARY KEY, b INTEGER);

DataTypes

CREATE TABLE t1(
    t  TEXT,     -- text affinity by rule 2
    nu NUMERIC,  -- numeric affinity by rule 5
    i  INTEGER,  -- integer affinity by rule 1
    r  REAL,     -- real affinity by rule 4
    no BLOB      -- no affinity by rule 3
);
 
-- Values stored as TEXT, INTEGER, INTEGER, REAL, TEXT.
INSERT INTO t1 VALUES('500.0', '500.0', '500.0', '500.0', '500.0');
SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;
text|INTEGER|INTEGER|REAL|text
 
-- Values stored as TEXT, INTEGER, INTEGER, REAL, REAL.
DELETE FROM t1;
INSERT INTO t1 VALUES(500.0, 500.0, 500.0, 500.0, 500.0);
SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;
text|INTEGER|INTEGER|REAL|REAL
 
-- Values stored as TEXT, INTEGER, INTEGER, REAL, INTEGER.
DELETE FROM t1;
INSERT INTO t1 VALUES(500, 500, 500, 500, 500);
SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;
text|INTEGER|INTEGER|REAL|INTEGER
 
-- BLOBs are always stored as BLOBs regardless of column affinity.
DELETE FROM t1;
INSERT INTO t1 VALUES(x'0500', x'0500', x'0500', x'0500', x'0500');
SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;
BLOB|BLOB|BLOB|BLOB|BLOB
 
-- NULLs are also unaffected by affinity
DELETE FROM t1;
INSERT INTO t1 VALUES(NULL,NULL,NULL,NULL,NULL);
SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;
NULL|NULL|NULL|NULL|NULL

Equivalencias:

INT, INTEGER, TINYINT, SMALLINT, MEDIUMINT, BIGINT, UNSIGNED BIG INT, INT2, INT8 INTEGER 1
CHARACTER(20), VARCHAR(255), VARYING CHARACTER(255), NCHAR(55), NATIVE CHARACTER(70), NVARCHAR(100), TEXT, CLOB TEXT 2
BLOB, no datatype specified NONE 3
REAL, DOUBLE, DOUBLE PRECISION, FLOAT REAL 4
NUMERIC, DECIMAL(10,5), BOOLEAN, DATE, DATETIME NUMERIC 5

Documentos

db/rdbms.1351769192.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)