martes, 22 de marzo de 2011

CONEXIÓN REMOTA A UNA BASE DE DATOS CON MYSQL

Hola nuevamente, esta ocasión les traigo un tutorial o mejor dicho un minitutorial acerca de cómo conectarse a una base de datos de forma remota utilizando MySQL. ¿Qué significa esto? Pues esto significa que ustedes aprenderán a conectarse a una base de datos que se encuentre en una maquina diferente al que están utilizando por medio de alguna red; para posteriormente poder manipular dicha base de datos, haciendo consultas, creando tablas, insertando datos, etc. En el diagrama 1 se muestra una representación de nuestro objetivo.



Diagrama 1

Los requisitos para realizar esta práctica son:


  •         2 o más computadoras. (En este ejemplo solo utilicé 2 computadoras, pero si quieren pueden usar más de una ya que serán los mismos pasos para todas ellas).
  •            Establecer una conexión a través de una red con las computadoras disponibles.
  •           Instalar MySQL (En mi caso instale el MySQL Server 6.0, pero pueden utilizar cualquier versión superior al 5.0 o incluso pueden utilizar los servidores de XAMP o WAMP. La instalación se tiene que hacer en las dos maquinas).



PASO 1

El primer paso es asegurarse de que todas las computadoras conectadas, se encuentran conectadas correctamente. Para esto abrimos el símbolo de sistema y utilizaremos el comando “ping”, el cual nos servirá para verificar si las maquinas están respondiendo de forma correcta a las peticiones de la red; para ello habrá que teclean lo siguiente >>ping 192.168.1.1, tal y como se muestra en la figura 1.



Figura 1

La IP que utiliza en este ejemplo tendrá que ser reemplazada por la ip de la maquina a la que se quiere conectar. Una vez hecho lo anterior tendrá que mostrarles el siguiente resultado:



Figura 2

Si este es el caso entonces la maquina remota está respondiendo correctamente y podrá seguir con el siguiente paso. Pero si apareció un resultado parecido al de la figura 3 entonces tendrán que configurar su equipo de modo que consigan conectarse de forma correcta(Si utilizan el sistema operativo Windows 7, les informo que para la conexión de redes es un poco más laborioso y probablemente no consigan una conexión a la primera; además en ocasiones no se puede conseguir una conexión con el equipo utilizando este SO, pero si es posible conectarse a MYSQL, así que si ven que el problema persiste aun después de varios intentos entonces sáltense al paso 2 ; si llegando al paso 4 sigue sin funcionar la conexión entonces definitivamente el error se deberá a la configuración de la red o incluso a los medios físicos que se estén utilizando).



Figura 3



PASO 2
El paso 2 es configurar MySQL para que el usuario root se pueda conectar remotamente. Para ello se tienen que realizar los siguientes pasos:


  •         Abrir el configurador de MySQL “MySQL Server Instance Config Wizard”


Figura 4


  • Posteriormente tendrán que seguir la siguiente secuencia de imágenes, tomando en cuenta los componentes encerrados con color rojo.


Figura 5


Figura 6


Figura 7



Figura 8


Figura 9


Figura 10


Figura 11

En la figura 12 se tiene que asegurar que en el cuadro de texto de “Port Number” se encuentre el puerto 3306 ya que este es el puerto por default que usa MySQL y también que la casilla de activación de “add firewall exception for this port ” se encuentre activa.



Figura 12


Figura 13

En la figura 14 se tiene que asegurar que la casilla “include bin directory in Windows path” se encuentre activa ya que este incluirá la consola de MySQL a las variables de entorno de Windows.



Figura 14

Con respecto a la figura 15, si esta es la primera vez que se hace esta configuración entonces solo se tienen que llenar los campos de “new root password(nueva contraseña de root)” y “confirm(confirmar contraseña)”, pero si ya se había hecho una configuración anterior entonces también se tendrá que llenar el campo de “current root password(contraseña actual)”; y posteriormente se tiene que activar la casilla “enable root Access from remote machines”, esto nos permitirá acceder con la cuenta root a las maquinas remotas.



Figura 15


Figura 16

Si todas las configuraciones fueron correctas entonces obtendremos algo similar a la siguiente figura:



Figura 17

Nota: esta configuración se tiene que realizar en las dos maquinas y de la misma manera.



PASO 3

El paso 3 consiste en crear una base de datos en la maquina remota (la maquina a la que queremos acceder). Para esto para esto, en la maquina 2 abrimos la consola de MySQL.



Figura 18

Una vez abierto la consola va a pedirles la una contraseña, tal y como se muestra en la siguiente figura:


Figura 19

Para ello teclean la contraseña que pusieron en la configuración anterior y teclean la tecla entrar para poder acceder a ella.



Figura 20

Después de haber accedido a MySQL se crea la base de datos con la siguiente instrucción:
create database basex;” tal y como se muestra en la siguiente figura:



Figura 21

Posteriormente usan esa base de datos con la siguiente instrucción:
“Use basex”



Figura 22

Una vez seleccionada la base de datos se proseguirá a crear las tablas, para ello se creará la tabla “tablax” con los atributos “id y nombre” utilizando la siguiente instrucción:

"Create table tablax(id int(2),nombre varchar(30));"



Figura 23

Después de crear la tabla, el siguiente paso es llenar la tabla. Para ello se utilizaran los siguientes datos:

Insert into tablax values(1,’Hilario’);
Insert into tablax values(1,’Pedro’);
Insert into tablax values(1,’Maria’);
Insert into tablax values(1,’Juan’);



Figura 24

Si se quieren asegurar de la inserción entonces tendrán que seleccionar los datos de la tabla con lo siguiente:

"Select * from tablax;"



Figura 25


Si ha llegado correctamente hasta este punto entonces podrá proseguir con el último paso que es el paso 4.




PASO 4
En este paso se accederá a la base de datos de la maquina 2 a través de MySQL desde la Maquina 1. Y para conseguir esto se tendrá que realizar lo siguiente:


  •          Abrir el símbolo de sistema en la maquina 1.


Figura 26

·         La siguiente instrucción nos servirá para conectarnos a la base de datos de la maquina 2:
Mysql –h 192.168.1.1 –u root –p” (donde la IP 192.168.1.1 tendrá que ser reemplazado por la ip de la maquina 2 y el usuario root se queda como tal)  después de escribir esto en el símbolo de sistema tecleamos la tecla entrar, posteriormente nos pedirá la contraseña y escribimos la contraseña que pusieron en la configuración.


Figura 27

Si todo salió bien entonces les tiene que dar el mismo resultado que la figura anterior. Una vez que se encuentren aquí ustedes podrán manipular las bases de datos que se encuentren en la maquina 2. Para ello seleccionamos la base que creamos anteriormente:
“Use basex”
Y
Hacemos una consulta de los datos de la tabla tablax:
Select * from tablax”



Figura 28

Para salir de la conexión simplemente teclean:
\q



Figura 29

Bueno espero que les haya gustado este minitutorial, trate de hacerlo lo más entendible posible, ojala y no se hayan confundido ok saludosss.

28 comentarios:

  1. Muy Bien............ Pero lo hubieras publicado antes...........Sale..........

    ResponderEliminar
  2. Hey que tal, estoy tratando de hacer una conexion remota pero a un servidor de paga, no lo he conseguido, espero me puedas ayudar, aqui te dejo la informacion completa

    http://www.javamexico.org/foros/comunidad/servicio_hosting_dedicado

    ResponderEliminar
  3. Hola cheque tu post en java mexico, t recomiendo que primero trates de realizar la conexion por consola; si esop funciona entonces tiene que funcionar en java.

    Tambien checa si estas referenciando el driver a tu proyecto o si la cadena de conexion del driver es correcto.

    Tambien el problema podria estar privilegios del firewall y los permisos en el administrador de mysql.

    Y por ultimo checa si la ip k proporcionas es el correcto, porque el error t indica una conexion al link fallida; y eso significa que o no tienes permisos al servidor o el link es incorrecto.

    En pocas palabras promero checa tu conexion en red, despues checas tu conexion por consola y por ultimo checas la conexion en java; de esta forma podras identificar mejor en donde se encuentra el problema.

    Saludos.

    ResponderEliminar
  4. Hola gracias por el pos pero te comento que tengo todo tal cual configurado según el pos pero me sale es siguiente error:

    ERROR 1042 (HY000): Can't get hostname for your address

    ResponderEliminar
  5. mi nombre es Carlos A Dominguez D

    Hola gracias por el pos pero te comento que tengo todo tal cual configurado según el pos pero me sale es siguiente error:

    ERROR 1042 (HY000): Can't get hostname for your address

    ResponderEliminar
    Respuestas
    1. Hola Carlos!

      Al parecer el error se trata de un bug de MySQL 5.5.

      La posible solución es colocar el siguiente script:

      [Mysqld]
      skip-name-resolve

      en el archivo my.ini

      Buscas el archivo my.ini ya sea en el directorio donde esta instalado MySQL o en la carpeta de Windows. En mi caso lo tengo en este directorio: C:\Windows\my.ini lo abres con el NotePad y pegas el script.

      Eliminar
  6. neta te la sabes, yo en la uni hice un desmadre para hecer esto, oye como desarrollaria triggers aqui? ya lo he hecho pero desde el yog. saludotes amigo.

    ResponderEliminar
    Respuestas
    1. Hola.

      Al conectarte remotamente puedes hacer todo lo que harías con la BD de forma local. Por lo cual solo es cuestión de usar la sintaxis para crear un trigger de forma normal.

      La sintaxis es la siguiente:
      CREATE TRIGGER nombre_disp momento_disp evento_disp
      ON nombre_tabla FOR EACH ROW sentencia_disp

      En esta liga encontraras mas información y ejemplos sobre la creación de triggers: http://dev.mysql.com/doc/refman/5.0/es/create-trigger.html

      Eliminar
  7. hola, tengo una duda, ya conecte mis maquinas, pero ¿cómo puedo particionar o fragmentar mis tablas para que sea una base de datos distribuida? gracias por la ayuda

    ResponderEliminar
    Respuestas
    1. Hola!

      Para fragmentar tus tablas tienes tres opciones:
      Fragmentación Vertical
      Fragmentación Horizontal
      Fragmentación Mixta

      Te sugiero usar la fragmentación horizontal ya que es la mas sencilla porque actúa sobre las filas o tuplas de tus tablas y los puedes separar con un select.

      En esta liga encontraras mas información sobre los tipos de fragmentación:
      http://bdjulian.galeon.com/aficiones1783659.html

      Eliminar
    2. Espero que leas mi comentario y me ayudes...
      Tengo una práctica sobre BD Distribuidas por fragmentación horizontal, ya prticioné mi BD pero cómo las almaceno en cada uno de los nodos. hice 2 particiones.....si me pudieras ayudar te lo agradeceria mucho

      Eliminar
    3. Espero que leas mi comentario y me ayudes...
      Tengo una práctica sobre BD Distribuidas por fragmentación horizontal, ya prticioné mi BD pero cómo las almaceno en cada uno de los nodos. hice 2 particiones.....si me pudieras ayudar te lo agradeceria mucho

      Eliminar
    4. En tu programa necesitas generar dos conexiones, uno por cada nodo, y en base a la regla que aplicaste para la fragmentacion podrás decidir mediante código a cual nodo almacenar los datos.

      Eliminar
  8. Para acceder a una base de datos que ya cree en mi computadora desde otra computadora pero manipularla desde un programa en java como es que tengo que hacerle?

    ResponderEliminar
    Respuestas
    1. Siempre tengo que tener en mis dos maquinas instalado el mysql?

      Eliminar
  9. Estoy trabajando con java netbeand y tngo un pequeño programa y quiero q trabaje con una sola base de datos en mysql instalada en un servidor. tengo q instalar mysql en todas las maquina?

    ResponderEliminar
    Respuestas
    1. Hola!
      No es necesario tener instalado mysql en todas tus maquinas, solo basta con disponer del driver de mysql para hacer la conexión a tu base de datos.

      En esta liga podrás descargar el driver: https://dev.mysql.com/downloads/connector/j/3.0.html

      y en esta liga encontraras un ejemplo de conexión:
      http://todoenjava.blogspot.mx/2013/02/conexion-base-de-datos-mysql-con-jdbc.html

      Eliminar
  10. Hola ye hago una consulta: tengo un sistema programado en java, con base de datos sql server. La misma esta en un servidor dentro de una red. Es posible alquilar un servidor remoto en la nube y conectarme a esa base de datos en la nube? Lo trabajo con hibernate. gracias

    ResponderEliminar
  11. como compartr la base de datos en 2 maquinas

    ResponderEliminar
  12. oye!!! realice un sistema gestor de base de datos pero mi base de datos erstan en phpmyadmin y necesito instalas el sistema en otras computadoras pero conectadas todas a la misma base de datos.... me podrias decir como le puedo hacer?

    ResponderEliminar
    Respuestas
    1. Debes tener una parte de tu código que te sirva solo para conectarte a la base de datos; si tu aplicación esta en otro equipo diferente al que tiene la base de datos, solo tienes que apuntar a la IP del equipo que tiene la base de datos.

      Eliminar
  13. hola estoy trabajando en visual basic net 2013 desde donde trabajo me conecto bien al mysql por que lo hago desde root pero cuando cargo el progoma en la segunda maquina no conecta . que puede ser?

    ResponderEliminar
  14. hola compadre, mira yo tengo un sistema en C# Sharp y tengo que hacer una conexion a otra maquina y me dice que no tengo acceso, la configuracion que tu esta dando aqui en tu block es para hacerla en la maquina donde esta la base de datos o tengo que hacerla en las dos maquinas para poder tener acceso remoto a ellas.

    ResponderEliminar
  15. Muy buen post, me ayudó bastante con mi proyecto, un saludo, gracias por crear este aporte tan impontante.

    ResponderEliminar
  16. Hola!
    Yo ya tengo la base de Datos en POSGRESQL, mi duda es que si sigo los mismos pasos para que las dos maquinas tengan la misma base de datos.

    ResponderEliminar
  17. Gracias me a servido de mucha ayuda, funcionó como debiera si solo quiero q inserten datos y no modifiquen como debo de hacerle

    ResponderEliminar