Human Drain Reverbnation

29/7/10

mysql remoto y vhosts linux/windows


Debido a que estoy realizando un proyectico en python... requiero acceso remoto a un servidor con mysql, sin embargo eso no es posible por defecto, así que si alguno ha tenido problemas desde algún programa similar al mysql query browser o algo así (en mi caso yo estoy probando un script que hice en python), la solución es cambiar la configuración de mysql, a continuación cómo lo hice yo en linux y luego en windows (usando XAMPP):
Luego de ubicar el archivo de configuración (my.cnf) que seguramente debe estar en una ruta tipo etc/mysql,

Luego
En windows con xampp:
Por otro lado, para que otras máquinas vean el servidor local con un nombre de dominio personalizado o virtual host (whatever.com o lo que se les antoje) es necesario modificar el archivo hosts en linux: (se encuentra en etc/hosts), y el archivo default en etc/apache2/sites-available :

Pero esto no es suficiente, si se realizaron los pasos previos y se intenta acceder remotamente a mysql aparecerá un error:
Host 'X' is not allowed to connect to this mysql serverconnection closed by foreign host, para que eso no pase es necesario abrir una consola En la máquina remota a la que se desea acceder /(ES DECIR EN EL SERVIDOR,) se configuran privilegios a un usuario en el MySQL:

GRANT ALL PRIVILEGES ON *.* TO usuario@% IDENTIFIED BY 'password'

Nota: Al  % se le puede cambiar por una IP para que solo admita acceso desde un equipo, así:

GRANT ALL PRIVILEGES ON *.* TO prueba@"192.168.1.%" identified by "prueba";
(es decir que se le brindan todos los privilegios al usuario prueba con contraseña prueba y se pueda conectar desde cualquier pc de la red 192.168.1.0)

Para ilustrar lo anterior, ejemplo de Las intrucciones en linux y en windows:
Primero hay que entrar a mysql como usuario root: 
(En linux -uroot es = usuario root):
En windows (usando xampp):

(Reemplazar 1 por el usuario root de la base de datos y 2 por su contraseña)

Si todo sale bien en cualquiera de los dos sistemas (win/lin) se debe digitar:
(Reemplazar 1 por el usuario de la base de datos al que se le otorgarán los permisos y 2 por su contraseña)
 
(Es decir, GRANT ALL PRIVILEGES ON *.* TO tuusuario@"%" idetified by "tucontraseña"), Al final si todo es correcto debe mostrarnos mensaje de confirmación (que si ejecutó la instrucción con una alerta "Query OK").

Para mayor información sobre "grant" y brindar privilegios seguros: http://dev.mysql.com/doc/refman/5.0/es/secure-grant.html

En windows hay que modificar C:\WINDOWS\system32\drivers\etc\hosts
y agregar luego de la línea 127.0.0.1   localhost
otra con los valore que queramos (como se muestra en la imágen de linux, es exactamente lo mismo)

MÁS ABAJO ENCONTRARÁN INFORMACIÓN DETALLADA...

Respecto al que tenga el servidor local instalado no por paquete xampp o similares sino que se tomó el trabajo de instalar apache, php, mysql por separado desde los instaladores oficiales, el proceso es:
  1. Abrir C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf en algún editor de texto. Ir hasta el sector del documento que dice Supplemental configuration y hacia el final encontrar las líneas;
    #Virtual hosts #Include conf/extra/httpd-vhosts.conf
  2. Remover el simbolo #  de la segunda línea:
    #Virtual hosts Include conf/extra/httpd-vhosts.conf
  3. Salvar httpd.conf y cerrarlo.
Lo que sigue lo encontré en:
http://mattfird.co.cc/notes/web-development/vhosts-in-xampp-for-windows

Y explica de manera más detallada el proceso para xampp en windows (su homólogo en linux debe funcionar de manera muy similar sólo hay que recordar que las rutas son bastante diferentes), yo hice una "traducción" del artículo al español (obviamente no es una traducción realmente es más bien mi interpretación libre del post).
"Posiblemente necesite configurar su XAMPP con vhosts por diversas razones, para mi, estoy configurandolos para desarrollo local, Esto es, desarrollar mi proyecto web en servidor local, de manera que debe tener casi la misma configuración que mi servidor público, así estaré seguro de los resultados que obtendré cuando publique en la web"Virtual Hosts Diagram
1. Configurando su sistema Windows para VHOSTS
Necesita configurar su sistema para que mepee su dirección IP local (127.0.0.1) a nombres de dominio virtuales, para lo cual abre el archivo HOSTS. El cual se encuentra en la carpeta del sistema:
/WINDOWS/system32/drivers/etc/
(Hasta acá es básicamente lo mismo que expliqué previamente por si no lo han notado XD)
El siguiente paso es Editar este archivo agregando la siguiente linea;
127.0.0.1  domain1.com # aca coloca sus nombres de dominio/virtuales
127.0.0.1  domain2.com # UN (1) dominio por linea
127.0.0.1  domain3.com # PERO puede agregar cuantas líneas quiera jejeje

2. Configurando su servidor XAMPP para que use VHOSTS
Ahora se requiere configurar el servidor local, en XAMPP el archivo de configuración vhostsque sirve para almacenar los dominios/nombres correspondientes con la carpeta raíz  se llama httpd-vhosts.conf y se encuentra en:
/xampp/apache/conf/extra/
Así que de nuevo, se trata de editar el archivo dejando algo así:
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any  block.
#
# This also to make sure you don't lose access to your default htdocs directory
#
NameVirtualHost *:80

 DocumentRoot /xampp/htdocs/    # cambiar esto por la ruta a su carpeta
 ServerName localhost
 ServerAlias localhost
# This next section is where you configure your
# virtual domains/hostnames
#

 ServerAdmin webmaster@localhost
 DocumentRoot /xampp/htdocs/domain1
 ServerName domain.com

  Options Indexes FollowSymLinks Includes ExecCGI
  AllowOverride All
  Order allow,deny
  Allow from all
 
Y si se quieren agregar más nombres de dominio/virtuales simplemente se repite la segunda sección. (Como se puede ver, es similar al proceso en linux).

Actualización a nuevas versiones de ubuntu/apache para evitar error 403 o acceso no permitido:
http://linux.101hacks.com/unix/client-denied-by-server-configuration/ 
(basicamente el truco es reemplazar los "Allow from all" por  “Require all granted”)

Y si se quiere habilitar el módulo de rewrite:
http://blog.marcelotmelo.com/everything-else/wordpress/apache2-a2enmod-rewrite-on-ubuntu-12-04-and-htaccess/
Good vibe y sayonarauuuuuu au auuuuuuuuuuu!
 ________________ 
GuTs!