Thursday, December 27, 2012

Instalación y Configuración básica de MySQL Community  Server 5.5.29 en Windows 7 sin instalador gráfico.

En este manual se va a explicar como instalar y configurar MySQL Community Server desde un archivo .zip (Sin instalador gráfico). Es realizado en base a la documentación que se encuentra en la página de Oracle/MySQL.

Primero que nada, ¿qué es MySQL Community Server?, pues es un Sistema Manejador de Bases de Datos , mejor conocido por sus siglas en inglés (DBMS - Database Management System). Un manejador de base de datos es el software encargado de definir, diseñar, crear y administrar tanto las bases de datos, así como sus objetos [tablas (tables), procedimientos almacenados (stored procedures), disparadores (trigers), vistas (views), etc], ni más ni menos.

Como no me gusta hacer las cosas tan automatizadas aunque en cierto modo son más fáciles, prefiero realizar el manual para aprender a instalar este software sin una interfaz gráfica donde solo le vas "puchando"   como dicen las mujeres xD en el botón de "siguiente" y de paso aprender también su configuración básica.

Manos a la obra, ¿qué necesitamos? Pues los paquetes que se descargan de la página http://dev.mysql.com/ ingresamos a la página y nos vamos a la pestaña de "Downloads (GA)" para descargar los paquetes.



Seleccionamos el paquete dependiendo de la arquitectura de nuestro ordenador, en mi caso selecciono el de 32bits.



Una vez descargado en nuestro equipo lo descomprimes en la raíz de tu disco duro (para evitar problemas con rutas), en este caso en la ruta C:\, nos va a quedar al final una carpeta, eliminamos el archivo con extensión .ZIP ya que no lo necesitaremos más y renombramos la carpeta mysql-5.5.29-win32.zip como "MySQL"



Al final debe quedar de la siguiente manera.



Ingresamos a la carpeta y deberá tener una vista como la siguiente:

Bien, explico que los archivos "my-huge", "my-innodb-heavy-4G" "my-large", "my-medium", "my small" son archivos de configuración.

my-huge <==== sistemas de 1G, 2G de RAM

my-innodb-4G <=== sistemas de más de 4G de RAM

my-large <=== sistemas de 250MB de RAM

my-medium <=== sistemas de 64MB de RAM

my-small <=== sistemas de menos de 64MB de RAM


En este caso la más recomendable es utilizar "my-huge" para sistemas de 1GB, 2GB de RAM, podemos eliminar las restantes para evitar confusiones. Abrimos el archivo "my-huge" y aparecerá un bloc de notas con la configuración, así como se muestra en la imagen.



En este archivo vamos agregar dos opciones, una es "basedir" que es donde se encuentra la carpeta de MySQL y "datadir" que es donde serán almacenadas nuestras bases de datos.

En mi caso yo quité la carpeta "data" de C:/MySQL/data , la moví a mis documentos quedando la ruta como C:/Users/G31M/Documents/Databases y aparte le cambié el nombre a "Databases", entonces en el bloc de notas en la parte de  abajo de [mysqld] se debe de agregar "basedir" y "datadir" con las rutas correspondientes. En mi caso queda de la siguiente manera

[mysqld]
basedir=C:/MySQL      <=== Es la ruta donde está la carpeta de MySQL
datadir=C:/Users/G31M/Documents/Databases     <== ruta donde serán almacenadas mis bases de datos

Si tú no hiciste el cambio de la carpeta data, por default debe de quedar como:

[mysqld]
basedir=C:/MySQL
datadir=C:/MySQL/data

También se pueden agregar diagonales inversas, pero se debe de agregar doble, si agregas diagonales invertidas quedaría de la siguiente manera:

[mysql]
basedir=C:\\MySQL
datadir=C:\\MySQL\\data

agrego una imágen para que se den una idea como queda.



Ya que agregamos esos datos a la configuración cerramos la pestaña del bloc de notas, nos indicará si deseamos guardar los cambios efectuados y seleccionamos que sí para que se guarden los cambios. Ahora lo que tenemos que hacer es renombrar el archivo "my-huge" a "my", sin las comillas, quedando de la siguiente forma:



Despues de renombrar el archivo "my-huge" como "my" lo que sigue es mover ese archivo al directorio de Windows, en mi caso es C:/Windows, pero si no sabes como localizar el directorio de windows, puedes abrir una consola de comandos y ejecutar lo siguiente

echo %windir%

Entonces la consola te mostrará la ruta del directorio de windows como en la imagen de abajo:



Ya que sabemos la ruta del directorio de windows movemos el archivo "my" a la ruta que te indicó la consola, en mi caso C:/Windows quedando así:



Cerramos el explorador de archivos y ahora tenemos que agregar el directorio C:/MySQL/bin a las variables de entorno y esto ¿para qué?.

Para que puedas ejecutar los comandos de mysql desde cualquier ruta en la consola sin necesidad de tener que movernos hasta ese directorio, pongo un ejemplo, si no agrego el directorio C:/MySQL/bin a las variables de entorno, cada vez que yo abra la consola de comandos por defecto abre en "Documents".

C:\Users\G31M\Documents>

si yo ejecuto el comando mysqld me va a mandar un mensaje de error que no se encontró el archivo, teniendo que hacer lo siguiente:

C:\Users\G31M\Documents>cd..
C:\Users\G31M>cd..
C:\Users>cd..
C:\>cd MySQL
C:\MySQL>cd bin
C:\MySQL\bin>mysql

De esta forma no mandará error ya que me moví hasta la ruta, sin embargo si agrego el directorio a las variables de entorno, puedo ejecutar los comandos de mysql desde cualquier ruta en la que me abra la consola.

Ya que ah quedado más claro el porqué se debe de agregar, procedemos a realizarlo, para esto abrimos "Equipo" o "Computer" en la parte de arriba ingresamos a la opción de "Propiedades del Sistema" o "System Properties" y en el lado izquierdo aparecerá la opción "Configuración avanzada del sistema" o "Advanced system settings" como en la imagen de abajo, lo que hay que hacer es ingresar a esa opción.



Cuándo ingreses a esa opción te aparecerá una ventana como la siguiente en la cuál debes de seleccionar la opción "Variables de Entorno" o "Environment Variables".



Al entrar a esa opción abrirá otra ventana donde seleccionaremos "Path" y presionamos el botón de "edit" para agregar el directorio. Como en la imagen de abajo, hay que tener mucho cuidado el momento de editar ya que si por error lo hacemos mal el sistema no va a funcionar adecuadamente.



Una vez que presionamos el botón de "edit" aparecerá una última ventana más pequeña donde vienen direcciones separadas por un ";" aquí lo que tenemos que hacer es agregar el directorio

Ejemplo: tengo la ruta

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

para agregar el directorio primero agrego el símbolo de punto y coma ";" y luego agrego la dirección con diagonales invertidas C:\MySQL\bin , quedando de la siguiente forma:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\MySQL\bin

Una vez agregado, presionamos el botón de OK tanto en la primera ventana como en la segunda para guardar los cambios.



Una vez realizado esto, tenemos que probar el servidor de base de datos, para esto abrimos una nueva consola ("Windows+R" ,tipear cmd y presionar "Enter") y como ya agregamos el directorio C:/MySQL/bin a las variables de entorno ya podremos ejecutar los comandos desde cualquier parte que abra la consola, pues bien, para probar el servidor ejecutamos la sintaxis:

mysqld --console



Al ejecutar el comando empezará a correr el servidor y aparecerá una ventana del firewall de windows, esto aparece por que para comunicarte con el servidor se ocupa el puerto 3306, le damos en "Allow access" o "Permitir acceso" para agregar ese puerto a las excepciones del firewall de windows.



Ya que está corriendo el servidor de base de datos nos muestra un mensaje en consola "ready for connections" obviamente quiere decir que está puesto en marcha y listo para conectarnos.



Para hacer otra prueba vamos a intentar conectarnos al servidor, para esto abrimos otra consola y tipeamos la siguiente sintaxis:

mysql -u root



Donde -u [nombre de usuario] por defecto ahora solo tenemos 3 cuentas en mysql, la de root y dos cuentas sin nombre ni contraseña para "testear" (probar) el servidor en este caso ocupamos la cuenta de root, al presionar enter aparecerá algo como lo de abajo, notarás que ahora en vez de "C:\Users\G31M\Documents>" aparece "mysql>"  esto significa que ya estamos logeados en el servidor, para hacer una última prueba ejecuté la query "show databases;" la cuál me muestra las bases de datos que se instalan por defecto en mysql, esto quiere decir que está funcionando correctamente el servidor.



Ejecutando la query "show databases;" como última prueba y validando que funciona correctamente.



Ahora que ya validamos que corre bien el servidor de base de datos, tenemos que instalar el servicio para que puedamos conectarnos en cualquier momento ya que sino instalamos el servicio, tendremos que iniciarlo cada vez que desees conectarte, primero que nada tenemos que detener el servidor ya que en este momento se está ejecutando, entonces nos desconectamos del servidor tan solo escribiendo "exit" y presionando enter, ahora detenemos el servicio posicionandonos sobre la consola donde indica "ready for connections" y presionando la combinacion de teclas "Ctrl+C" (control más la letra "c" de nuestro teclado), ahora verificamos que en la consola aparece "Shutdown complete", esto nos indica que se ah parado el servidor y podemos proceder a instalar el servicio.



Hacemos una última prueba abriendo otra consola e intentando conectarnos de nuevo al servidor tipeando de nuevo en la consola

mysql -u root

Presionamos la tecla "Enter" y observamos en la imagen que ya nos devuelve un mensaje de error la consola, ya que no está corriendo el servidor, con esto terminamos de validar que se ah detenido por completo.



Bueno ahora para instalar el servicio tenemos que hacerlo desde una consola de windows pero con privilegios de administrador, nos vamos al menú de inicio y tipeamos "cmd" sin las comillas, aparecerá el símbolo del sistema, presionamos click derecho y seleccionamos "Run as administrator" "Ejecutar como administrador"



Una vez que estemos en la consola como administrador, por defecto nos abre la ruta "C:\Windows\windows32>" para instalar el servicio forzosamente tenemos que desplazarnos hasta la ruta "C:\MySQL\bin" ya que si desde la consola sin ingresar hasta ese directorio instalamos el servicio la próxima vez que reinicie el sistema no va a correr el servicio por que lo estará instalando con la configuración que trae por defecto que sería el directorio "C:\Program Files\MySQL 5.5.29\bin", entonces por obvias razones el servicio no va a inicar ya que no es la ruta correcta, entendido lo anterior procedemos a moverlos hasta la ruta:

C:\Windows\system32>cd..
C:\Windows>cd..
C:\>cd MySQL
C:\MySQL>cd bin
C:\MySQL\bin>

Ya que estemos en el directorio en la consola procedemos a instalar el servicio con la siguiente sintaxis:

mysqld --install MySQL --defaults-file=C:\Windows\my.ini

Donde:

--install MySQL <=== significa que le estamos indicando al sistema que instale el servicio con el nombre MySQL (esto puede ser sustituido por el nombre que tu gustes, ejemplo --install Datos ,etc, etc etc, pero lo recomendable es MySQL :) )

--defaults-file=C:\Windows\my.ini <=== significa que le estamos indicando al sistema que instale el servicio con la infomación que se encuentra en el archivo de configuración ubicado en "C:\Windows\my.ini"

Cuándo ejecutamos la sintaxis y se instala el servicio correctamente aparece una pantalla como la siguiente, la leyenda "Service sucessfully installed" por último debemos reiniciar el sistema, lo podemos realizar con el comando:

shutdown -r -t 30

Donde:

-r <=== significa "restart" (reiniciar), lo podemos sustituir por -s <=== que significa "shutdown" (apagar), pero lo recomendable es reiniciar

-t <=== es el tiempo en el que se va a reiniciar el sistema.



Después de que el sistema se reinició presionamos la combinación de teclas "Windows+R" (windows más la letra R de nuestro teclado) en donde aparecerá una ventana para ejecutar comandos, ahí tipeamos:

msconfig

presionamos enter y nos abrirá la ventana de configuración de inicio del sistema en la cuál nos vamos a ir a la pestaña "Services" o "Servicios" y vamos a buscar el servicio de nombre "MySQL", validamos que se encuentre seleccionado y con el estatus de "Running" o "Corriendo", si aparece así es que se ah instalado el servicio de forma correcta.

Para terminar de validar, vamos a intentar "loguearnos" en el servidor, anteriormente se indicó que es con la sintaxis:

mysql -u root

Presionamos enter y la consola no devuelve ningún error, y ahora muestra "mysql>" en vez de "C:\Users\G31M\Documents" lo que significa que ya estamos "loguados" en el servidor.



Anteriormente comenté que la instalación de MySQL trae por "default" 3 cuentas de acceso, una es la del usuario "root" y las otras dos son sin nombre de usuario ni contraseña, hasta ahora si nos mantenemos así es pontencialmente peligroso, para lo cuál de momento vamos a asignarle una contraseña al usuario "root", para esto tenemos que estar logueados dentro del servidor (tiene que aparecer en nuestra consola "mysql>"), bueno ya que estamos logueados para cambiar la contraseña de "root" basta con tipear la siguiente sintaxis:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('aquí vas a ingresar tu contraseña');

importante ingresar al final de la sintaxis el símbolo de punto y coma ";" hay que recordar que en la mayoría de los lenguajes de programación las instrucciones terminan con ";" pues MySQL no es la excepción así que tenemos que agregarla al final de cada instrucción

Donde:

SET PASSWORD FOR 'root'@'localhost' <== estamos indicando obviamente que vamos a cambiar la contraseña del usuario root

= PASSWORD('nueva contraseña') <===== estamos indicando que el nuevo password es .... recordar que la contraseña se delimita por comillas simples

; <====== fin de la sentencia.

Al ejecutar correctamente la sintaxis la consola solo devolverá el mensaje

"Query OK, 0 rows affected" <==== esto significa que se ah ejecutado correctamente.

ahora bien para borrar la caché que guarda el servidor es necesario "refrescarla" para que se apliquen los cambios de inmediado, esto lo hacemos con la sintaxis:

FLUSH PRIVILEGES;



Ahora para dar mayor seguridad a nuestro servidor de base de datos vamos a eliminar las cuentas sin nombre de usuario ni contraseña, para evitar que cualquiera ingrese de este forma, para borrarlas lo hacemos con la siguiente query:

DELETE FROM mysql.user WHERE user='';

Donde:

DELETE FROM mysql.user <=== estamos indicando que queremos eliminar un registro de la tabla llamada "user" ubicada en la base de datos de nombre "mysql"

| base de datos | | nombre de la tabla |
        mysql                    user

WHERE user='' <=== condición para que sea eliminado el registro de la tabla.

; <==== Fin de la instrucción o mejor llamada "Query"

Aquí ya estamos trabajando con sentencias del lenguaje SQL (Structured Query Language) no entraré en detalles en este manual, posteriormente realizaré uno de SQL con lo poco que sé por qué la verdad aún no le pego "chido" a las consultas, pero lo básico sí :)

con esta sintaxis hemos eliminado las dos cuentas por defecto que no tenían nombre de usuario ni contraseña, ahora en cierto modo podemos decir que tenemos un servidor de base de datos un poquito más seguro, para efectuar los cambios inmediatamente ejecutamos la siguiente "query" para eliminar la caché del servidor y aplicar cambios

FLUSH PRIVILEGES;



Después de hacer esto vamos a probar la nueva contraseña que asignamos al usuario "root" para esto primero nos desconectamos del servidor, solo hay que tipear "exit" sin las comillas y presionar enter, entonces estaremos desconectados del servidor, ahora vamos hacer la prueba, vamos a intentar iniciar sesión normalmente, ejecutamos la sintaxis en la consola:

mysql -u root

Y presionamos "enter", podemos ver en la imágen que la consola devuelve un error y es por que ya le agregamos una contraseña al usuario "root" que por default no tenía.



Esto se soluciona de manera muy sencilla, en la sintaxis tenemos que agregar el recursivo -p quedando de la siguiente forma:

mysql -u root -p

Donde:

mysql -u (usuario) -p (password) <====== estamos indicando que nos vamos a loguar en el servidor con una contraseña.

presionamos "enter" y en la parte de abajó debemos de tipear nuestra contraseña como aparece en la pantalla.



Al terminar de ingresar la contraseña presionamos "enter" y validamos que ya nos encontramos de nuevo conectados en el servidor.



Por último vamos a instalar la interfaz gráfica MySQL Workbench y esto ¿para qué me sirve?

La interfaz gráfica Workbench nos permite conectarnos al servidor de base de datos de manera gráfica y en cierto modo "más fácil". Ingresamos de nuevo a la página http://dev.mysql.com/ y seleccionamos "MySQL Workbench GUI Tool".



Seleccionamos el paquete (en esta ocasión solo existe para sistemas operativos de 32Bits) y lo descargamos.



Una vez que se descargó en nuestro equipo lo buscamos y procedemos a descomprimir. Posteriormente lo Movemos a "C:/Program Files" y renombramos la carpeta a "MySQL Workbench"



Ingresamos a la carpeta, buscamos el ejecutable de nombre "MySQLWorkbench" y ya sea crear un acceso directo al escritorio o en mi caso como odio tener iconos en el escritorio solamente la papelera de reciclaje, arrastramos el programa al menú de inicio.



Ejecutamos el programa y la interfaz será igual a la de la imagen.



Ahora para conectarnos al servidor damos doble click en la opción "Local Instance MySQL" o en la barra de herramientas ir a la opción "Database" y posteriormente seleccionar "Query Database" abrirá una ventana en donde la primera opción que debemos seleccionar es "Local Instance MySQL" a final de cuentas da lo mismo, una vez que seleccionemos esa opción nos abrirá una pequeña ventana donde ingresamos el usuario que se conectará a la base de datos y abajo la contraseña, al terminar presionar "enter".



Ya que nos conectó la interfaz al servidor podemos ver que nos abre una pantalla como la siguiente, en la parte de arriba es donde empezaremos a ejecutar las query's para ejemplo ejecuté la consulta:

show databases; <=== me muestra las bases de datos

En la imagen se ve como en la parte de abajo me muestra los nombres de las bases de datos



Este programa es lo mismo que si utilizamos la consola, solo que en este se ve "más bonito" y es más fácil ejecutar consultas, etc que en la terminal, ahora en la terminal me conecto de igual forma a la base de datos y ejecuto la misma consulta, se puede apreciar que me devuelve los mismos resultados solo que en una es en modo texto y la otra gráfica.



Otra prueba, se puede observar otra vez que devuelve los mismos resultados que si ejecutamos las consultas en la consola.



Bueno pues espero les sirva de algo este manual para aprender a configurar lo básico de manera manual de un servidor de base de datos en windows, en este caso MySQL , posteriormente se hará un manual de SQL (Structured Query Language) con lo poco que aprendí en Soporte Elektra xD !!!. Reitero que no es "copy and paste" las imágenes son de mi equipo de hecho se puede ver la fecha y la hora en las imágenes, el hecho de hacer un manual no es tan fácil, en este me llevé aproximadamente 5 horas, pero como dije anteriormente, espero y les sea de ayuda si desean aprender un poco más.

Una última recomendación para las personas que van aprendiendo, recomiendo utilizar la consola y hacer las cosas de manera manual para aprender, una vez que sepas como se hace, adelante, no hay problema si haces todo automatizado, pero esta es la mejor opción para absorver conocimientos y aprender, un ejemplo un poco "chusco" imaginen que hay un problema en el servidor de la compañía donde laboran y tienen que entrar, pero ohh sorpresa, no puedes entrar por tu amiguita "las ventanitas" (interfáz gráfica), solo puedes entrar por consola, ¿como le harías tú como ingeniero o futuro ingeniero en sistemas para solucionar el problema? Hay que analizar un poco esto y reflexionar. Bueno ya basta de choros xD.

Gracias por visitar el blog.

:)

3 comments:

  1. Me gusta usar con MySQL en win herramienta gratuita de Valentina Studio, hace todo lo que necesito, y lo hace muy bien http://www.valentina-db.com/en/valentina-studio-overview

    ReplyDelete
  2. Friend estubo buenisimo el tutorial me sirivio muchisimo. Muchas Gracias Bye

    ReplyDelete
  3. Estuve leyendo un poco y me puse a intentarlo, pero uso la versión 5.6.29 y el archivo .ini ya no viene en varias "versiones"... solo uno llamado my-default.ini... El cual tampoco contiene gran cantidad de lineas en forma de opciones. Cómo se podría hacer en ese caso?

    ReplyDelete