viernes, 15 de julio de 2011

INSERT INTO SELECT, Copiar datos de una tabla a otra

En ocasiones nos topamos con la tarea de tener que copiar datos desde una tabla a otra tabla dentro de nuestra base de datos, incluso suele suceder que los nombres de los campos varíen, pero eso no es un problema mientras el tipo de datos sea el mismo.

Eh aquí la solución rápida a esa labor (que se torna en problema si no sabemos los pasos indicados)

INSERT INTO tabla1(campo1, campo2, campo3)
(SELECT t2.campo1,  t2.campo2, t3.campo3
FROM tabla2 t2)


Como ven el insert se realiza de forma normal hasta el punto en donde tenemos que nombrar los campos, luego puede verse que no eh usado la instrucción VALUES, si no que directamente eh agregado entre parentesis una consulta SELECT.

En el SELECT eh especificado el nombre de los campos que tendran el valor, que en el mismo orden en que declare los campos de la tabla1 se iran llenando, cabe destacar que no importa si los campos tienen el mismo nombre, lo que debemos respetar es el orden, tal como si lo hicieramos agregando el VALUE.

jueves, 7 de julio de 2011

Permitir acceso remoto MySQL Servidor Ubuntu

Dado las multiples peticiones de un provedor de soluciones a uno de nuestros clientes por la implementación de un ivr, hubo la necesidad de ofrecer la posibilidad de conexión remota al servidor mysql, para lograr ello eh aquí los pasos:

­Acceder con un editor al archivo my.cnf:

sudo nano /etc/mysql/my.cnf

Comentar la linea donde dice, poniendo un # al inicio:
#bind­address = 127.0.0.1

Configurar mySQL para avisarle que se pueden conectar usuarios desde otras maquinas
ejecutar desde consola:

mysql ­u root ­p

Desde dentro de mySQL ejecutar:

GRANT ALL ON *.* TO root@numero_ip_remoto IDENTIFIED BY 'password_del_usuario';

Salir de mysql:quit

Reiniciar el server mySQL:

sudo /etc/init.d/mysql restart

Probando si es efectivo desde una consola remota:

mysql ­u root ­p ­h numero_ip_remoto

Y si entra a la consola mySQL todo OK!!!

Ver que puertos están abiertos en nuestro servidor Ubuntu

En ocasiones nos es importante conocer que puertos se encuentran abiertos en nuestro server, bien sea para verificar si nuestro script de conexión está funcionando correctamente o para poder brindar conexión a terceros, en fin, estos comandos nos son muy utiles:

Desde nuestro server o ingresando mediante ssh desde la consola ejecutamos:

$ sudo netstat -plut

Esto nos mostrará una lista con los puertos abiertos: PID yprograma asociado, direccion local, el tipo de protocolo utilizado (UDP o TCP), y los sockets que estan escuchando.

$ sudo netstat -putan

Este comando es el que en si utilizo, nos muestra una información más detallada, con ip y puertos abiertos, ademas del servicio a cargo u ofrecido.

$ sudo lsof -i

Este lo vi en un blog, pero no me convencio la información ofrecida, talvez por el hecho de estar buscando otro tipo de reporte o por mi falta de tiempo para analizarlo.

En si, debo aclarar que esto en realidad son más como memorias que espero utilzar en algún momento, sin embargo compartirlo no estaba de más.

Un saludo.