Archivo de la etiqueta: mysql

Un servidor web con VirtualBox – Instalando Apache

Después de haber instalado VirtualBox y de haber configurado la red para poder acceder al servidor sin necesidad de escribir su IP, ahora le toca el turno a las aplicaciones “de servidor” propiamente dichas.

Vamos a instalar Apache, PHP y MySql desde tasksel y realizar las pruebas para ver que todo funciona correctamente. En posteriores entregas veremos como instalar algunos módulos directamente desde la consola.

Instalando el servidor desde tasksel

Deberemos arrancar nuestra máquina virtual Linux, y teclear en la línea de comandos

sudo tasksel

accederemos a la pantalla de instalación de paquetes, marcaremos la opción Lamp Server y aceptaremos.

servidor-local-ubuntu-paquete-lamp

Marcando esta casilla instalaremos de una sola vez Apache, PHP y MySQL ya que el sistema se encargará de descargar los paquetes necesarios y de instalar el software.

En un punto de la instalación, el sistema nos solicitará que indiquemos una contraseña para el acceso a la base de datos MySQL. La indicaremos y proseguiremos con la instalación.

servidor-local-ubuntu-password-mysql

Una vez finalizada la instalación, es aconsejable que reiniciemos el equipo para que los servicios se activen correctamente.

Probando el servidor

Antes de continuar instalando mas aplicaciones, vamos a verificar que el servidor esta funcionando correctamente, y de paso, comprobaremos la configuración de la red que hicimos en la entrega anterior.

Desde nuestro equipo anfitrión, abriremos el navegador y teclearemos el nombre del servidor que indicamos en el fichero hosts, que en nuestro caso miservidor y comprobaremos como Apache está funcionando correctamente.

servidor-local-ubuntu-probando-apache

Para comprobar el funcionamiento de php, vamos a crear el típico phpinfo. Lo primero será situarnos en la carpeta donde se almacena el contenido web. Para ello teclearemos:

cd / var/www

Una vez allí, crearemos el fichero con el editor “nano” que viene instalado por defecto:

sudo nano info.php

Se nos abrirá el editor y teclearemos lo siguiente:

<?php
phpinfo();
?>

Despues pulsaremos F2 para guardar, s para sobreescribir y Intro para aceptar el nombre que le hemos asignado. A continuación accederemos al navegador en nuestro equipo anfitrión e indicaremos la url:

http://miservidor/info.php

Si obtenemos esta ventana de información del servidor es que nuestro PHP está funcionando correctamente.

servidor-local-ubuntu-probando-php

Finalmente vamos a acceder por la línea de comandos para ver si MySQL esta bien instalado. Teclearemos:

mysql -u root -p

e indicaremos la contraseña que indicamos en la instalación. Si se nos conecta al servidor MySQL es porque funciona correctamente. Una última prueba será ver las bases de datos actuales. Podemos visualizarlas si tecleamos:

show databases;servidor-local-ubuntu-probando-mysql
Facebooktwittergoogle_plus

Averiguar el último id en MySQL

Es muy común que cuando estamos programando un sitio web, por cualquier circunstancia, necesitemos conocer el último id auto-increment de la una tabla en MySQL. Si este es tu caso, existen métodos para averiguar dicho indice sin tener que realizar complicados bucles para recorrer toda la tabla.

Averiguar el último id es tan sencillo como escribir en la consola:

select last_insert_id();

o también nos puede servir

mysql_insert_id();
Facebooktwittergoogle_plus

Listado de motores soportados por MySQL

Cuando instalamos un entorno que necesita de una base de datos MySQL para funcionar y por norma general, los motores utilizados serán o InnoDB o MyISAM. Las diferencias entre un sistema y otro la puedes ver en nuestro artículo Elegir entre MyISAM o InnoDB.

Pero existen muchos mas motores soportados por MySQL. Si por necesidad, necesitaras utilizar un motor que no sea InnoDB ni MyISAM, puedes conoces si tu base de datos lo soporta tecleando en la consola de MySQL:

mysql> show engines;

De todas formas te adelantamos que por norma general, los motores admitidos son:

  • MyISAM
  • Heap
  • Memory
  • Merge
  • MRG_MyISAM
  • InoDB
  • InnoBase
  • Archive
  • CSV
Facebooktwittergoogle_plus

Resetear el auto_increment de una tabla en MySQL

logo-mysqlEn numerosas ocasiones tenemos tablas que su ID o Indice es un campo auto_increment. Esto es interesante ya que dicho valor se va incrementando de manera automática, y no es necesario crear el código para comprobar el último valor e incrementarlo manualmente.

Pero en ocasiones al eliminar algunos campos o incluso todos, esta valor se conserva y aunque insertemos valores en una tabla vaciada, el valor no se reseteará. Deberemos hacerlo manualmente de la siguiente forma:

alter table nombre_de_la_tabla AUTO_INCREMENT=1;

Cambiando “nombre_de_la_tabla” por el nombre de tu tabla y “1” por el valor que quieres que comience el contador del auto_increment.

Facebooktwittergoogle_plus

Elegir entre MyISAM o InnoDB

mysql

Seguro que en alguna ocasión, al instalar una aplicación web, al llegar a las opciones de la base de datos, nos encontraremos la opción de elegir motor de almacenamiento de la base de datos MySQL, pudiendo seleccionar entre MyIsam o InnoDB. Llegados a ese punto de la instalación nos preguntaremos que opción será la mas conveniente para nuestro sistema, por ello vamos a ver en que se caracteriza cada sistema:

MyISAM

  • Sus tablas son mas simples, por tanto recomendado para nuevos usuarios de MySQL o de bases de datos en general.
  • Este sistema permite el bloqueo de tablas, lo que en algunos casos puede ser una ventaja, en otros puede ser un inconveniente ya que el resto de operaciones quedarán a la espera de la finalización de las operaciones en el registro actual.
  • Permite las caracteristicas ACID (Atomicity, Consistency, Isolation and Durability), con lo que se garantiza la integridad de las tablas.
  • Opción recomenda si se van a ejecutar en su mayoria sentencias SELECT, ya que destaca el rendimiento en éstas.
  • Es el motor que MySQL utiliza por defecto.

InnoDB

  • Gran fiabilidad en la integridad de los datos: si se realizan muchas operaciones con sentencias INSERT, DELETE o UPDATE, puede darse el caso de que de que se incluyan datos no validos, aunque con este sistema es muy dificil que ocurra.
  • Se puede recuperar de no esperados, ya que cuenta con sistema de logs de respaldo.
  • Realiza mas rapido las opciones de actualización / inserción por tanto es la opción indicada si tu sistema va a ejecutar principalmente las sentencias INSERT, UPDATE o DELETE.
  • Su diseño es mucho mas complejo, por lo que son necesarios mas conocimientos técnicos.

 

Facebooktwittergoogle_plus

Reemplazar datos en MySQL de forma masiva

Supongamos que tenemos un campo en nuestra base de datos que queremos modificar. Deberemos realizar un update con los campos que cumplan dicha condición:

UPDATE tabla SET campo = "valor_nuevo" WHERE campo = "valor_antiguo"

Pero si lo que queremos modificar es unicamente una parte concreta de una cadena de texto, deberemos actuar de esta manera:

UPDATE tabla SET campo = replace(campo,"cadena_existente", "cadena_nueva")
WHERE ...

Con ésto obtenemos las cadenas de texto seleccionadas, sustituyéndolas por el texto indicado. Éstas cadenas a continuación son almacenadas en la base de datos, consiguiendo el resultado que queremos.

Tenéis mas información consultando en la página de referencia de MySQL la función REPLACE

Facebooktwittergoogle_plus

Importar un fichero CSV a MySQL

El formato CSV es un formato bastante común para intercambiar información entre sistemas no compatibles entre sí. Su principal caracteristica es que están formados por caracteres, separados entre sí por un caracter especifico (coma, tabulador, punto y coma, etc.) que separa cada uno de los campos.

Sigue leyendo

Facebooktwittergoogle_plus

Cambiar la contraseña de MySQL

En caso de necesitar cambiar nuestra contraseña de root de MySQL podemos escribir en el terminal el siguiente comando:

mysqladmin -u root -p passwordviejo nuevopassword

En el caso de querer cambiar el password de cualquier otro usuario necesitaremos saber ademas del nombre del usuario, su contraseña. Si no disponemos de ésta información, pero tenemos acceso como root, podremos cambiar la contraseña si accedemos directamente a la tabla donde MySQL guarda ésta información. Para ello deberemos hacer lo siguiente:

Abriremos un terminal y nos identificaremos:

mysql -u root -p

Seleccionaremos la base de datos de MySQL:

mysql> use mysql;

Escribiremos el nuevo password para el usuario:

mysql> update user set password=PASSWORD(“NUEVOPASSWORD”) where User=’nombre-del-usuario’;

Cargaremos los privilegios:

mysql> flush privileges;

Ahora el usuario ya dispondrá de una nueva contraseña.

Facebooktwittergoogle_plus

Trabajar con MySQL desde la línea de comandos

Cuando accedemos a una base de datos MySQL, por lo general lo hacemos por phpMyAdmin o mediante el propio script de nuestra página web. Pero MySQL se puede administrar desde la línea de comandos, aunque no resulte tan intuitivo como phpMyAdmin. Podremos hacer copias de seguridad, consultas, cambiar y asignar permisos, etc.

Pero lo primero de todo será acceder. Para ello deberemos abrir un terminal y escribir:

mysql -h servidor -u usuario -p

Donde deberás cambiar “servidor” y “usuario” por tus datos. A continuación el sistema solicitará la contraseña de acceso.

Ahora ya estás dentro del sistema. El paso siguiente será seleccionar la base de datos con la que queremos operar. Para ello, lo primero que podemos hacer, es ver que bases de datos existen en nuestro sistema. Escribiremos:

show databases;

Nos aparecerá un listado de las bases de datos. Para seleccionar una escribiremos:

use nombre_base_de_datos;

El paso siguiente será ver las tablas de la base de datos. Para ello teclearemos:

show tables;

Una vez conocemos las tablas, podemos realizar consultas sobre dicha tabla por ejemplo:

Select * from nombre_de_la_tabla;

Facebooktwittergoogle_plus

Monitorizar consultas lentas en MySQL

Puede ocurrir que nuestra página tarde mucho en cargarse. Esto puede ser debido a varios factores (conexión, carga del servidor, etc). Pero si la página realiza peticiones a una base de datos MySQL, también puede ralentizarse, debido a que las consultas no estén optimizadas.

Guardando las consultas lentas

MySQL nos brinda la posibilidad de activar un log para las consultas “lentas” al que podremos acceder para localizar que consultas están ralentizando la carga de nuestra página.

Para activar dicho log deberemos acceder al terminal SSH como administrador y acceder al archivo de configuración de MySQL, por lo general ubicado en:

/etc/mysql/my.cnf

Deberemos buscar las siguientes líneas:

# Here you can see queries with especially long duration
#log_slow_queries        = /var/log/mysql/mysql-slow.log
#long_query_time = 2

y descomentar:

  • log_slow_queries: aqui es donde indicamos la ruta del fichero log.
  • long_query_time: aqui es donde indicamos el tiempo en segundos a partir del cual se considerará una consulta lenta.

Guardaremos los cambios y reiniciaremos el servicio MySQL:

/etc/init.d/mysql restart

Ahora cada consulta sql que tarde más de 2 segundos en ejecutarse será guardada en el fichero de logs.

Recuperando la información de las consultas lentas

En MySQL también disponemos de mysqldumpslow, una herramienta mediante la cual podremos leer el fichero log, filtrar y ordenar los resultados para que podamos consultarlos de manera mas sencilla, mediante una serie de comandos.

Por ejemplo con:

mysqldumpslow -s c -t 10 /var/log/mysql/mysql-slow.log

Estamos solicitando las 10 consultas (-t 10) que se han ejecutado mas veces (-s c).

Facebooktwittergoogle_plus