Algunos comandos para MySQL


  • \ # o rehash: Habilitar rehash automático.


¿Tiene los nombres de tablas largas, le resulta difícil recordar los nombres de tablas o eres tan perezoso como yo, rehashing es bueno para usted. Intro:

mysql> \ #  o   mysql> rehash

Para completar un nombre, introduzca la parte inicial del nombre y presione Tab. Si el nombre no es ambiguo, mysql completará por usted. Por ejemplo.

mysql> use inform

a continuación se llenará INFORMATION_SCHEMA si no hay ambigüedad  nombres que empiecen por inform.

Por defecto esta función está activada y se puede desactivar mediante la opción  –disable-auto-rehash.


  • System o \!  Ejecutar comando del sistema

 

Permite ejecutar comandos del sistema sin necesidad de salir del prompt mysql.

Un ejemplo muy simple de la utilización de este comando será de buscar un camino a  un fichero sql

mysql> system locate Fichero.sql

/path / carpeta/Fichero.sql

Y ese camino que puede utilizar para cargar datos:

mysql>source /path / carpeta/Fichero.sql


 

  •   Tee o \T:  insertar los comandos y salidas a un archivo (log)

 

\T  nombre de archivo log  Anexa los comandos SQL y  la salida al archivo «nombre de archivo». Para detener el registro puede usar  el comando notee.


 

  • Prompt \R : Establecer prompt en mysql

 

Símbolo del sistema [PROMPT -CADENA] fijará el símbolo mysql según se especifica cadena. Utilizando sin parámetros fijará por defecto «mysql>».

Viene muy útil cuando se trabaja simultáneamente con múltiples MySQL pide que con diferentes bases de datos o servidores.

Por ejemplo: nombre de usuario @ nombre de host [Actual base de datos por defecto]>

mysql> prompt \ u @ \ h [\ d]>

PROMPT conjunto a ‘\ u @ \ h [\ d]>’

Configuración rápida de my.cnf: En my.cnf puede especificar la cadena de indicador predeterminado en la sección [mysql]

[Mysql]

prompt = \\ u @ \\ h [\\ d]>

* Tenga en cuenta las barras inversas (\).

 Tenemos muchas otras opciones rápidas disponibles.


 

  • \ S – punto y coma
  • \ ‘- Comilla simple
  • \ «- Comilla doble
  • \ V – versión del servidor
  • \ P – puerto
  • \\ – Barra invertida
  • \ n – la nueva línea
  • \ t – tabulacion
  • \ – Espacio (No espacio después de \)
  • \ d – la base de datos por defecto
  • \ h – host predeterminado
  • \ _ – Espacio
  • \ C – un contador de declaración mysql. sigue aumentando a medida que escribe comandos.
  • \ U – nombre de usuario
  • \ U – nombre de usuario @ nombre de host nombredecuenta

 Para los ajustes relacionados de tiempo Fecha:


 

  • \ D – fecha actual completa
  • \ W – 3 letras del día de la semana (por ejemplo, Mon)
  • \ y – Dos dígitos de el año
  • \ Y – Los cuatro dígitos del año
  • \ O – mes en número
  • \ O – 3 letras del mes (por ejemplo, Feb)
  • \ R – hora actual en formato de 24 HR
  • \ r – hora en formato de 12 horas
  • \ m – los minutos
  • \ s – los segundos
  • \ P – AM o PM

  •   Pager\P: Utiliza el comando especificado para la paginación de la salida de la consulta.

Comando Pager se encargará de la paginación de la salida de la consulta según el comando especificado.

mysql> pager cat > /path/to/file.log

Cada salida de la consulta ira  a /path/to/file.log

Si se espera que el resultado de una consulta larga puede usar los comandos   linux more / less  que facilitaran la lectura.

mysql> pager less

Esto permitirá que desplazarse hacia arriba / abajo en el resultado de la consulta MySQL .

Si además hay un gran número de columnas los problemas de legibilidad se pueden evitar usando:

mysql> pager less -S

o

mysql> pager less -S -X

Esto permitirá desplazarse horizontalmente resultado por la consulta con las teclas de flecha izquierda y derecha de flecha.

También puede buscar a través del conjunto de resultados con /search-term en el conjunto de resultados.

Pager sólo funcionará en sistemas Linux / Unix.



Lista de todos los comandos de MySQL:

Tenga en cuenta que todos los comandos de texto deben ser lo primeros en la línea y terminar con ‘;

? \? Sinónimo de ‘ayuda’.
clear \c comando Borrar.
connect \r Volver a conectar con el servidor. Los argumentos opcionales son db y host.
delimiter \d  Establecer delimitador de sentencia.
edit \e comando Editar con $EDITOR.
ego \G Enviar comando al servidor mysql, resultado de visualización vertical.
exit \q Salir de mysql. Igual que quit.
go \g Enviar comando al servidor mysql.
help \h Mostrar esta ayuda.
nopager   \n Desactivar pager, se imprime en la salida estándar.
notee     \t No escribir en archivo outfile.
pager     \P Imprimir los resultados de la consulta a través de PAGER.
print \p Imprimir el comando actual.
prompt    \R Cambiar el prompt mysql.
quit      \q Salir de mysql.
rehash    \# Autocompletar.
source    \. Ejecutar un archivo de secuencia de comandos SQL. Toma un nombre de archivo como argumento.
status    \s Obtener información de estado del servidor.
system    \! Ejecutar un comando de shell del sistema.
tee       \T Establecer archivo de salida [to_outfile]. Anexar todo en el archivo de salida otufile.
use       \u Utilizar otra base de datos. Toma el nombre de base de datos como argumento.
charset   \C Cambiar a otro conjunto de caracteres
warnings  \W Mostrar advertencias después de cada sentencia.
nowarning \w No muestran advertencias después de cada sentencia.

 

Gestión de Usuarios

Vamos a utilizar 2 máquinas una de ellas será el servidor, con la bases de datos de jardineria y nba, y la otra será la máquina “cliente “ (bastará con que esta última tenga instalado el cliente de mysql o workbench.)

Para este ejercicio podemos clonar el servidor Linux (la maquina virtual). Clonación completa y reiniciando la dirección MAC de las tarjetas de red.

Por tanto tenemos 2 máquinas el Servidor y el Clon. El Clon será nuestro “cliente” para evitar confusiones eliminaremos en este último las BBDD jardinería y nba.

Comprobar que tenemos seleccionado el adaptador de red en modo puente en las dos máquinas:

Portapapeles-1

Mostramos y  tomamos nota de las IP de ambas máquinas

Portapapeles-2Portapapeles-3

Comprobamos la conectividad entre ellas:

Portapapeles-4Portapapeles-5

Conéctate en el servidor y crea un nuevo usuario llamado remoto@direccion_ip donde direccion_ip es la IP del cliente y el password ha de ser ‘ulhi’.

Sentencia(s):

Otórgale permisos de selección en todas las tablas de la base de datos jardineria.

Sentencia(s):

Ten cuidado, es posible que tu servidor solo permita conexiones desde el ordenador local. Para permitir conexiones remotas debes editar la linea bind-adress de tu fichero my.cnf  que impide conexiones desde otros sitios que no sea el especificado (127.0.0.1) y cambiala por 0.0.0.0 para que permita conexiones desde cualquier equipo. Asegúrate de reiniciar el servidor

 Portapapeles-6

 

Conéctate desde la segunda máquina (la máquina cliente) con el usuario remoto y comprueba qué permisos has otorgado. Indica qué instrucción sql ejecutas para conocer los permisos que tienes y sobre qué BBDD.

 

Sentencia(s):

Portapapeles-7Portapapeles-8

 

 

Revócale los permisos concedidos en jardinería al usuario remoto@direccion_ip y muestra que ya no los tiene;

Sentencia(s):

Conéctate en el servidor con el usuario remoto@direccion_ip

Sentencia(s):

¿Qué sucede? ¿Por qué?

Conéctate como root en el servidor y crea un usuario de nombre Radmin que se pueda conectar remotamente al servidor desde cualquier  equipo de la red (192.168.137.0) con el password ‘ulhi’  y dale todos los permisos sobre todas las bases de datos.

 

Sentencia(s):

Conéctate como root en el servidor y crea la base de datos BBDDsvr

CREATE DATABASE BBDDsvr;

Concédele  a remoto@direccion_ip permisos de creación de tablas en una nueva base de datos que has creado

Sentencia(s):

Conéctate desde la segunda máquina (la máquina cliente) con el usuario remoto y prueba a crear la tabla departamentos.

CREATE TABLE departamentos     (

            dept_no  TINYINT(2) NOT NULL,

            dnombre  VARCHAR(15),

            loc      VARCHAR(15)

            );

En la primera máquina, el servidor, el resultado de la ejecución de las siguientes sentencias;

INSERT INTO departamentos   VALUES 10,’CONTABILIDAD’,’SEVILLA’);

INSERT INTO departamentos        VALUES (20,’INVESTIGACIÓN’,’MADRID’);

INSERT INTO departamentos        VALUES (30,’VENTAS’,’BARCELONA’);

INSERT INTO departamentos        VALUES (40,’PRODUCCIÓN’,’BILBAO’);

SELECT * FROM departamentos;

muestra la sigicaptura .

Portapapeles-9

Con el usuario Radmin  en la segunda máquina (la máquina cliente) escribe la sentencia que mostraría el contenido de la tabla (debe ser el mismo que arriba) y el resultado de su ejecución.

Sentencia(s):

Muestra la Captura:

Con el usuario remoto  en la segunda máquina (la máquina cliente) escribe la sentencia que mostraría el contenido de la tabla (que sería el mismo que arriba) y el resultado de su ejecución.

Sentencia(s):

¿Qué ha sucedido?

¿Por qué?

Muestra la Captura:

Puedes probar creando usuarios con distintos permisos sobre la base de datos, las tablas y las columnas.

Prueba a cambial la IP del equipo “cliente” por otra IP de  la misma red.

¿Podrías conectarte remotamente al  sevidor con el usuario remoto?

¿Podrías conectarte remotamente al  sevidor con el usuario Radmin?

Explica por qué;

Instalación compilando el código fuente


La instalación  a través de un gestor de paquetes es automática y no nos permite configurarla. Para poder parametrizar la instalación deberemos de realizar una instalación a partir del código fuente.

Lo primero deberemos de descargar el archivo con el código fuente desde la página de MySQL. El esta página puedes consultar el proceso de instalación. En nuestro caso optaremos por MySQL 5.6

Oracle proporciona un conjunto de distribuciones binarias de MySQL. Estos incluyen distribuciones binarias «tar»en formato  comprimido (archivos con una  extensión tar.gz) para una serie de plataformas.

Para descargar el fichero entraremos como root y escribiremos

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.38.tar.gz

Wget

 

Añadimos el grupo mysql y creamos el usuario mysql dentro del grupo mysql:

# groupadd mysql
# useradd -g mysql mysql

creamos el directorio /usr/mysql donde se instalaran los binarios

# mkdir /usr/mysql

Descomprimiremos el fichero:

# tar -zxvf mysql-5.5.38.tar.gz

cambiaremos al directorio donde se ha descomprimido:

# cd mysql-5.5.38

Para configurar el entorno utilizaremos las opciones;

–prefix para indicar dónde se van a instalar los binarios

–localstatedir para indicar dónde guardar las bases de datos

–with-named-curses-libs=/lib/libncurses.so.5 indicando la ruta de la correspondiente librería

# ./configure –prefix=/usr/mysql –localstatedir=/usr/mysql/data –with-named-curses-libs=/lib/libnscurses.so.5

Compilaremos

#make

Instalaremos con:

make install

 

LAS VISTAS

 Una vista es una tabla sin contenido, totalmente virtual, que devuelve las filas resultado de ejecutar una consulta SQL. La diferencia con una consulta ejecutada directamente es que, mientras cada sentencia SQL enviada al SGBD tiene que pasar por un proceso de compilación, la vista es una consulta cuya definición ha sido almacenada previamente y que ya ha sido compilada, siendo por tanto el tiempo de ejecución bastante menor. También tiene una implicación importante en el hecho de que un usuario podría no tener acceso a la información de varias tablas y, sin embargo, sí tener acceso a la vista que consulta esas tablas, proporcionando de esta manera un acceso controlado solo a determinadas filas y columnas de esas tablas

 Por ejemplo, en una tabla de clientes, un usuario de una oficina podría tener solo acceso a la información de los clientes de una zona, y tan solo a ciertos campos. De esta manera, no tendría acceso a ningún campo de la tabla de clientes y, sin embargo, podría, tener acceso a una vista que consulte aquellos clientes cuya zona sea la suya.

La sintaxis para crear una vista es la siguiente:

 CREATE [OR REPLACE] VIEW [esquema.]nombre_vista [(lista_columnas)]  AS sentencia_select

 La ejecución del CREATE VIEW provoca que se compile la sentencia SELECT y que se almacene con el nombre nombre_vista. Los nombres: de las columnas de la vista se pueden especificar mediante lista_columnas. Si se especifica la lista de columnas, cada columna tendrá el alias correspondiente, si no, se obtendrá el nombre devuelto por la consulta. Si la vista ya existe, se puede reemplazar con OR REPLACE

Un ejemplo de CREATE VIEW es el siguiente:

Fichero para generar la base de datos nba

 CREATE VIEW nba_jugadoresMiami AS SELECT Nombre, Posición FROM nba.jugadores WHERE Nombre_equipo=”HEAT”;

SELECT * FROM nba_jugadoresMiami;vista1

 Además, se pueden crear vistas para que los usuarios no expertos puedan acceder de forma fácil a la información, proporcionándoles, a través de una vista, información obtenida a través de una sentencia SQL compleja:

Fichero para generar la base de datos jardinería.

CREATE VIEW VístaPedídos (CodigoPedido,Cliente,Total)  AS SELECT CodigoPedido, NombreC1iente, SUM(Cantidad*PrecioUnidadFROM Clientes NATURAL JOIN Pedidos NATURAL JOIN Detal1ePedidos  GROUP BY CodigoPedido;

vista2avista2b

Para eliminar una vista se hace uso del comando DROP VIEW:

DROP VIEW [esquema.]nombre_vista;

Hay pequeñas variaciones en la sintaxis de los comandos CREATE VIEW y DROP VIEW dependiendo del SGBD que se utilice. Además, se dispone también de un comando ALTER VIEW para hacer modificaciones a la definición de la vista. Para más información sobre estas variaciones, consultar los manuales de cada gestor

 ¿Sabías que … ? Una vista materializada es un tipo de vista que sí que contiene información. En todo momento el SGBD vuelca el resultado de la consulta en una tabla caché que existe de verdad (no es virtual) y que será actualizada de forma periódica con los resultados de la consulta SQL. Este tipo de tablas se utilizan en bases de datos multidimensionales y datawarehouse donde el acceso a tablas sencillas resulta muy costoso

EL ACCESO A LA INFORMACIÓN

La concurrencia en el acceso a la información de múltiples usuarios motiva la necesidad de una protección frente a accesos indebidos y uso fraudulento de .esa información compartida. Veremos la introducción a las técnicas más comunes para permitir y denegar el acceso a las partes más sensibles de una base de datos

Cuando se administra la seguridad en el acceso a información de una base de datos, es común utilizar dos tipos de seguridad, la integrada con el sistema operativo y la proporcionada por el SGBD (nativa). En la seguridad integrada, se suele contar con los usuarios de un sistema de dominio o un servicio de directorio (LDAP) para proporcionar el acceso a determinados recursos del gestor de base de datos. En la seguridad nativa del SGBD, es el propio software servidor el que proporciona los mecanismos mediante los cuales se autoriza a un usuario a utilizar distintos elementos de bases de datos. El alcance de este blog es tratar la seguridad nativa de un SGBD a través de SQL explicando el funcionamiento básico de la seguridad en MySQL.

La postinstalación

La postinstalación a través de APT configura automáticamente la ubicación de los ficheros del SGBD de la siguiente forma:

Directorio de instalación; /usr/bin

Directorio de datos /var/lib/mysql

Ficheros de configuración /etc/mysql/my.cnf

El directorio de instalación indica la ruta de los ejecutables del gestor de mysql. (/usr/bin)

Entre otros se encuentran los siguientes:

Mysqld

Este programa lanza desde el proceso demonio (daemon) de Mysql Server. Es decir es la aplicación servidora, el software de gestor de base de datos propiamente dicho. Es el software que se encarga de organizar los datos y almacenarlos en dispositivos de almacenamiento persistente. Es el encargado de recibir las consultas enviadas por el cliente y ejecutarlas, devolviendo los resultados pertinentes.

 

Mysql

Este proceso es la aplicación cliente, en el cliente se escriben las consultas que se van a enviar al gestor y una vez obtenidos los resultados, se muestran por pantalla al usuario de la base de datos.

Mysqld_safe

Es un script que se encarga de arrancar el gestor de base de datos (mysqld) El gestor de base de datos siempre se debe arrancar con este script. También es el encargado de rearrancar el gestor si por cualquier motivo se detuviera.

 

El directorio de datos contiene los archivos físicos (datafiles) donde se almacenan los datos. (/var/lib/mysql)

También hay que conocer el fichero de configuración, puesto que es donde se establecen los parámetros de funcionamiento tanto del servidor como de los programas clientes locales. (/etc/mysql/my.cnf)

Instalación Debian ligera

Partiremos de una instalación mínima


Tenemos dos opciones:

  • Clonar una instalación anterior.
  • Exportar e Importar un servicio virtualizado.

Vamos a partir de la instalación que se indica en el siguiente enlace: Linux mínimo  una vez inicializado el nuevo sistema como root (usuario root y clave t00r) lo primero que haremos será instalar una interfaz gráfica ligera, optaremos por LXDE [apt-get install lxde] Nos pedirá  permiso pulsaemos, s, y continuará la  instalación. Es posible que sean necesario [apt-get update]

B01 B02 Abrimos un editor de texto  (nano) y añadimos lo siguiente al mismo:

[Desktop Entry]
Encoding=UTF-8
Type=XSession
Exec=/usr/bin/startlxde
TryExec=/usr/bin/startlxde
Name=LXDE

Lo guardamos con el nombre LXDE.desktop y a continuación: # install -m644 LXDE.desktop /usr/share/xsessions # install -m644 LXDE.desktop /usr/share/kde4/apps/kdm/sessions y reiniciaremos # reboot Y ya disponemos de una distribución ligera con interfaz gráfica. Inicio usuario dba y clave dba C01

Instalación desde el gestor de paquetes apt-get (modo texto)

Advance packaging Tool, o APT, es un sistema de gestión de paquetes en Debian, que facilita la instalación y eliminación de programas en los sistemas Linux. Para instalar MySQL a través de este gestor, solo hay que escribir en la consola; apt-get install mysql-server Esto hay que hacerlo como root o utilizando; sudo apt-get install mysql-server. La ejecución de este comando iniciará la descarga de los paquetes necesarios y solicitará una contraseña para el usuario administrador de la base de datos.
Para esto podemos o bien instalar una nueva máquina siguiendo los pasos de este enlace  o bien descargar el servicio virtualizado DBASvr e importarlo en VirtualBox.
Iniciamos la máquina virtual como root y password t00r y a continuación escribimos el comando de instalación:  apt-get install mysql-server, iniciando la instalación y pidiéndonos permiso, s, para continuar.
c02C03   Nos pedirá la clave para el root de MySQL y pondremos Myt00r

C04

Una vez realizada la instalación, responde a las siguientes preguntas

  1. ¿Qué versión has instalado?
  2. ¿En qué idioma está instalado el servidor?
  3. ¿En que ubicación esta la base de datos mysql?
  4. Cambia el password de el usuario root con el comando:         UPDATE mysql.user set password=PASSWORD(‘MyT00r’) WHERE USER=’root’
  5. Desinstala el servidor mediante el comando                                           apt-get remove mysql-server.

 

Instalación linux mínima

Instalación de una máquina virtual linux mínima (debian)


 

Primero descargaremos la iso de instalación desde https://www.debian.org/CD/netinst/index.es.html

la imagen será del tipo debian-7.5.0-i386-netinst.iso

Abriremos el administrador de VirtualBox y elegiremos crear una máquina nueva. Completaremos los datos; Nombre DBASvr, Linux Debian (32bits)

Sin título

Pulsaremos Next  y crear en los siguientes pasos.

 

2 3 4 5 67

Ya hemos creado la máquina virtual, ahora tenemos que instalar el sistema operativo.

Iniciamos la máquina y nos aparecerá la siguiente pantalla, donde seleccionaremos la imagen ISO que hemos descargado anteriormente e iniciaremos la instalación seleccionado install.

810

 

Comenzará la instalación. Seleccionaremos el idioma (Spanish)  el país (España) teclado (Español)  y continuará la instalación.

11 12

 

Nos pedirá el nombre de la máquina, pondremos DBASvr y pulsaremos continuar. Nos pedirá el nombre de dominio, pondremos dba.hz y pulsamos continuar.

13 14

Ahora nos pedirá la clave del super usuario (root) pondremos t00r (2 veces)

15 16

 

Nos pedirá nombre (dba) y  clave (dba) del usuario a utilizar, dos veces.

17 18

 

Continuará la instalación. Nos pedirá elegir la zona horaria (península) y continuará  hasta aparecer la pantalla de partición del disco.

Elegiremos utilizar todo el disco, en la siguiente pantalla elegiremos el disco por defecto, a continuación elegiremos separar la partición Home  y daremos por finalizado el particionamiento confirmando los cambios.

Nos pedirá el país de replica (España) si no funciona Francia es una buena opción

20 21 22 23 24 25

En la siguiente pantalla nos ofrece configurar el proxi si es necesario (normalmente no)

A continuación no pregunta si queremos participar en la encuesta elegiremos que no. En la siguiente pantalla nos ofrece elegir los programas que queremos instalar, ninguno, quitaremos aquellos que estén seleccionados.

26 28 29

Nos preguntará si queremos instalar GRUB, diremos que sí y a continuación aparece una pantalla indicándonos que ha finalizado la instalación .

30 31

Reiniciamos. Aparece el inicio de GRUB aceptamos y accedemos al login  Login: dba y nos pedirá su clave «dba», y ya estamos dentro.

32 33 34

Esta es una instalación que nos pude  servir de base para instalar un servidor, por ejemplo de MySQL o XAMP…

y también nos puede servir de base para añadir aquellas aplicaciones que nos interese incluyendo una  interfaz gráfica.

 

 

 

Arquitectura en tres capas

Hasta ahora los SGBD mencionados se ajustan a la arquitectura estándar denominada ANSI-SPARC.

La arquitectura ANSI-SPARC American National Standards Institute, Standards Planning And Requirements Committee es un estándar de diseño abstracto para un Sistema de Gestión de Base de Datos (DBMS), propuesto por primera vez en 1975.
La mayoría de los DBMS comerciales modernos se basan en este sistema. El modelo ANSI-SPARC sin embargo, nunca se convirtió en un estándar formal.


Su objetivo es permitir:

  • Separación de las Aplicaciones de los Datos.
  • Manejo de múltiples vistas por parte de los usuarios.
  • Uso de un catálogo para almacenar el esquema de la Base de datos.

Es una arquitectura de 3 niveles
  1. Nivel Externo: Se refiere a las vistas o una porción de la Base de Datos completa.
  2. Nivel Conceptual: En este nivel se describen los datos que se almacenan en la Base de Datos, además de las relaciones que existen entre éstas.
  3. Nivel Interno: Su labor se refiere a como se almacenan físicamente los datos, se describen estructuras de datos complejas.

Gracias a la Arquitectura ANSI-SPARC se puede lograr:
  • Independencia Lógica: Se puede modificar la estructura de la Base de Datos sin la necesidad de reescribir las aplicaciones.
  • Independencia Física: Se  puede alterar la estructura física de la Base de Datos sin la necesidad de alterar su estructura lógica.

sparc