Utilizando MySql en Debian exDebian

Utilizando MySql en Debian

Solapas principales

Índice

1. Introducción
1.1. Licencia
1.2. Estructura cliente-servidor

2. Instalación en Debian
2.1. Versiones de mySQL según la rama de Debian
2.2. Instalar el cliente mySQL
2.3. Instalar el servidor mySQL
2.4. Instalar la herramienta gráfica de administración

3. Configuración
3.1. Permitir conexiones remotas
3.2. Puerto de conexión al servidor

4. Manejo del servidor mySQL
4.1. Arrancar y parar el servidor MySQL
4.2. Conectarse y desconectarse del servidor MySQL

5. Uso de sentencias SQL en mySQL
5.1. Manipulación de datos
5.2.1. Borrar registros de una tabla - DELETE
5.2.2. Seleccionar registros de una tabla - SELECT
5.2.3. Modificar registros de una tabla - UPDATE
5.3. Obtener información de bases de datos
5.3.1. Indicar la base de datos con la que trabajar - USE
5.3.2. Ver estructura de una tabla de la base de datos que está en uso - DESCRIBE
5.4. Administración de bases de datos
5.4.1. Gestión de cuentas
5.4.2. Otras sentencias para la administración

6. Referencias

 

1. Introducción:

es un sistema de gestión de bases de datos que permite manejar y administrar bases de datos SQL.

Fue creado en 1995 por MySQL AB, que fue comprada en 2008 por Sun Microsystems, actualmente subsidiaria de Oracle.

Es muy utilizado en servidores de aplicaciones web, junto a PHP y Apache ().

1.1. Licencia:

MySQL es software libre, pero tiene licenciamiento dual: GPL / Comercial

 

  • Su licencia GNU GPL indica que su código es abierto y que se puede usar, modificar y distribuir libremente siempre que el producto derivado tenga la misma licencia.
  • No es desarrollado por voluntarios sino que la empresa desarrolladora tiene el copyright sobre la mayor parte del código, por lo que se puede comprar una licencia para uso comercial que nos permite incorporarlo en productos derivados sin tener que usar la licencia GPL.

1.2. Estructura cliente-servidor:

MySQL tiene arquitectura cliente-servidor. Esto significa que consta de 2 partes diferenciadas:

  • Cliente: Aplicación que se encarga de realizar peticiones a la aplicación servidor.
  • Servidor: Aplicación que se encarga de prestar el servicio a la aplicación cliente (responde a sus peticiones).

Cliente y servidor pueden estar instalados en la misma máquina, pero no es necesario.

Un mismo servidor puede atender a varios clientes y cada cliente puede conectarse a varios servidores diferentes.

2. Instalación en Debian:

Debian nos ofrece los siguientes paquetes, que nos permiten instalar mySQL en nuestro sistema:

  • mysql-client - Instala el cliente mySQL y las dependencias necesarias.
  • mysql-server - Instala el servidor mySQL junto al cliente y las dependencias necesarias.
  • mysql-admin - Instala una herramienta que nos permite administrar mysql de forma gráfica.

2.1. Versiones de mySQL según la rama de Debian:

En la web de Debian podemos comprobar qué versión de mySQL está disponible para nuestra rama de Debian:

  • Stable:
  • Testing:
  • SID:

2.2. Instalar el cliente mySQL:

# aptitude install mysql-client

2.3. Instalar el servidor mySQL:

# aptitude install mysql-server

2.4. Instalar la herramienta gráfica de administración:

# aptitude install mysql-admin

 

3. Configuración:

El archivo de configuración de mySQL en Debian se encuentra en /etc/mysql/my.cnf

3.1. Permitir conexiones remotas:

Por defecto, mySQL sólo permite conexiones locales. Para modificar este comportamiento, debemos modificar la siguiente línea en el archivo de configuración:

bind-address = 127.0.0.1

Para permitir conexiones desde otros equipos a nuestro servidor mySQL, debemos sustituir la dirección de localhost (127.0.0.1) por las IP del equipo al que permitiremos conectarse.

Por ejemplo, para permitir conexiones desde un equipo de nuestra red con IP 192.168.1.100, esta línea quedaría así:

bind-address = 192.168.0.100

Para permitir conexiones a un rango de IPs, usaremos un guión (-) para indicarlo. Como ejemplo, para permitir conexiones desde cualquiera de las 6 IP que se encuentran en el rango de 192.168.0.100 hasta 192.168.0.105, la línea quedaría de esta forma:

bind-address = 192.168.0.100-192.168.0.105

Para permitir conexiones desde cualquier host, la línea sería de esta otra manera:

bind-address = 0.0.0.0

Nota:
Si una vez configurado sigue siendo imposible conectarse desde algún host, es posible que se deba preparar la configuración adecuada en el archivo /etc/hosts.allow

3.2. Puerto de conexión al servidor:

Para conectar con el servidor, debemos especificar el número del puerto de red (TCP/IP) por el cual se realizará la comunicación.

Por defecto, a mySQL se le asigna el puerto número 3306, pero esto también es configurable modificando la siguiente línea del archivo de configuración:

port = 3306

Por ejemplo, para asignarle el puerto 9999, la línea quedaría así:

port = 9999

Nota:
El número de puerto que configuremos no puede estar ya asignado para otra aplicación.

 

4. Manejo del servidor MySQL:

4.1. Arrancar y parar el servidor MySQL:

El servidor mySQL suele estar configurado para que se inicie durante el inicio del sistema, pero podemos iniciarlo o detenerlo manualmente con los siguientes comandos:

Iniciar:

# /etc/init.d/mysql start

Detener:

# /etc/init.d/mysql stop

Reinicar:

# /etc/init.d/mysql restart

4.2. Conectarse y desconectarse del servidor MySQL:

Podemos acceder al servidor con el siguiente comando:

# mysql -h nombre_host -u nombre_usuario -pcontraseña nombre_BDD
  • nombre_host = nombre de la máquina en la que se encuentra el servidor (se usa "localhost" si está en la misma máquina que el cliente).
  • nombre_usuario = nombre del usuario de la cuenta mySQL que se usará para conectarse (debe tener los permisos correspondientes).
  • contraseña = puede indicarse después de la opción -p (sin dejar espacios en blanco) o también podemos omitirla y se nos solicitará después.
  • nombre_BDD = nombre de la base de datos que queremos que esté directamente en uso al conectar (si no usamos esta opción, no se usa ninguna base de datos en concreto y podriamos hacerlo luego con la sentencia "USE nombre_BDD").

Por ejemplo, para acceder en localhost con el usuario "root" y contraseña = 12345, el comando quedaría así:

# mysql -h localhost -u root -p12345

Para que la contraseña no esté a la vista en el comando, podemos omitirla y se nos solicitará antes de acceder al servidor:

# mysql -h localhost -u root -p
Enter password: *****

Para hacer la misma conexión que en el ejemplo de arriba, pero entrando directamente a la base de datos "mi_BDD", quedaría de esta otra forma:

# mysql -h localhost -u root -p mi_BDD

En el anterior comando hay un espacio entre la opción "-p" y el texto "mi_BDD", por lo que no se tomará como contraseña, sino como el nombre de la base de datos que debe estar en uso al conectar.

Sea como sea, una vez conectado se nos muestra el prompt de mySQL:

mysql>

A partir de aquí, podremos empezar a introducir comandos (ver Sección 5: Uso de sentencias SQL).

Al finalizar, para desconectar del servidor usamos el siguiente comando:

mysql> quit

 

5. Uso de sentencias SQL en mySQL:

En esta sección se describe la sintaxis para los comandos SQL soportados en mySQL.

Una vez que accedemos a mySQL, su monitor nos presentará el siguiente prompt:

mysql>

Los comandos siempre deben terminar con ";" o de lo contrario la aplicación pensará que el comando aun no está completo. De hecho, se puede escribir el comando en varias lineas, y no se ejecutará hasta que se termine con el símbolo de punto y coma (;).

Es lo mismo escribirlos en mayúsculas o en minúsculas.

5.1. Manipulación de datos

5.2.1. Borrar registros de una tabla:

> DELETE FROM nombre_tabla WHERE cláusula_condición;

Más información en el "Manual de referencia mysql" - 13.2.1

5.2.2. Consultar registros de una tabla:

Para realizar consultas sobre una tabla:

> SELECT lista_campos FROM nombre_tabla WHERE cláusula_condición;

Para exportar registros a un archivo:

> SELECT lista_campos INTO OUTFILE 'nombre_archivo' fields terminated by ';' lines terminated by '\r\n' FROM nombre_tabla;

Notas:
El archivo creado no puede existir previamente; de esta forma se evita la destrucción accidental de archivos importantes.
La cadena "\r\n" representa un salto de linea, por eso se suele usar para el argumento "lines terminated by"

Más información en el "Manual de referencia mysql" - 13.2.7

5.2.3. Modificar registros de una tabla:

> UPDATE nombre_tabla SET columna=valor WHERE cláusula_condición;

Más información en el "Manual de referencia mysql" - 13.2.10

5.3. Obtener información de bases de datos

5.3.1. Indicar la base de datos con la que trabajar:

> USE nombre_bd;

Más información en el "Manual de referencia mysql" - 13.3.2

5.3.2. Ver estructura de una tabla de la base de datos que está en uso:

> DESCRIBE nombre_tabla;

Por ejemplo, para mostrar la estructura de la tabla "articulos" en la base de datos "almacen", se procedería de la siguiente manera:

> use almacen;

	Database changed

	> describe articulos;

	+---------------------+---------------+------+-----+---------+-------+

	| Field               | Type          | Null | Key | Default | Extra |

	+---------------------+---------------+------+-----+---------+-------+

	| **********          | ****(**)      | NO   | PRI | NULL    |       |

	| ********            | *******(*)    | YES  |     | NULL    |       |

	| ************        | **********    | NO   | MUL | NULL    |       |

	+---------------------+---------------+------+-----+---------+-------+

	** rows in set (*.** sec)

Más información en el "Manual de referencia mysql" - 13.3.1

5.4. Administración de bases de datos

5.4.1 Gestión de cuentas

5.4.1.1. Configurar los privilegios / permisos de acceso:

> GRANT tipo_privilegios
> ON nombre_bd.nombre_tabla
> TO 'nombre_usuario'@'nombre_host'
> IDENTIFIED BY PASSWORD'contraseña';

Nota:
Se puede usar la opción "with grant options", que concede permisos para usar este comando GRANT.

Más información en el "Manual de referencia mysql" - 13.5.1.3

5.4.2 Otras sentencias para la administración

5.4.2.1. Consultar los privilegios:

> SHOW grants;

5.4.2.2. Ver lista de bases de datos:

> SHOW databases;

5.4.2.3. Ver lista de tablas de la base de datos que está en uso:

> SHOW tables;

Más información en el "Manual de referencia mysql" - 13.5.4

 

6. Referencias: