Esta nota es OBSOLETA, porque las nuevas versiones de la aplicación ya no necesitan una conexión directa con el servidor de base de datos MySQL (como las versiones anteriores).
Hola a todos. Voy a tratar de explicar los problemas más comunes para conectarse al servidor de base de datos MySQL y cómo resolverlos.
Si usted es el administrador de MySQL, considere que la mayoría de las verificaciones pueden ser hechas desde la interfaz web de phpMySadmin (que podría estar habilitada en su servidor).
¿Cuáles son los parámetros del servidor de base de datos?
Si instaló/configuró su propio servidor de osCommerce Usted ya tiene esta información.
Si no la recuerda o no está seguro, revise el archivo de osCommerce catalog/includes/configure.php. Cerca del final del archivo están las siguientes constantes: DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD y DB_DATABASE, las que corresponder con las siguientes opciones de OSCPMWin (en la ventada de Configuración, sección Base de Datos): Servidor, Nombre de Usuario, Contraseña y Base de Datos. El puerto predeterminado de MySQL es el 3306.
¿Qué hago si el nombre del servidor es "localhost"?
El nombre del servidor que debe poner en la configuración de OSCPMWin es el nombre del servidor tal como lo ven otras computadoras. Averigüe cuál es el nombre del servidor (¿quizás
www.dominiodesutienda.com?) Si tiene duda, pregunto a su proveedor de servicio o al administrador del servidor.
También revise que el usuario está configurado para ser utilizado tanto desde localhost como desde otras computadoras. Si tiene duda, pregunte al administrador del servidor, o si Usted es el administrador, revise la tabla de permisos de MySQL (revise el campo Host del usuario).
¿Qué usar en el número del puerto?
El número del puerto que se puede configurar en la aplicación OSCPMWin generalmente es el 3306. Si el nombre del servidor (tal como está configurado en el osCommerce) contiene un número ":xxxx" ese el el número del puerto. Si no usa ninguno, use el predeterminado (3306).
Si el nombre del servidor incluye un camino (como :/tmp/mysql.sock o algo así) entonces la tienda osCommerce se está conectando a través de un socket local, el cual no puede ser utilizado por la aplicación OSCPMWin. Averigüe si el servidor de BD puede recibir conexiones a través de TCP.
¿Cómo reviso la conectividad TCP del servidor MySQL?
Use la aplicación telnet (como la que incluye Windows). En el símbolo del sistema invoque el comando "telnet nombreservidor 3306", donde nombreservidor es el nombre del servidor de MySQL.
a) Si recibe un mensaje similar a "No se puede abrir una conexión al host en puerto 3306: Error en la conexión" significa que no puede establecer un enlace con el servidor de BD. Quizás hay un firewall o simplemente el servidor de MySQL está configurado para no aceptar conexiones TCP. Si MySQL está utilizando un puerto diferente también le aparecerá este error. También, esto puede pasar si se conecta al servidor equivocado. En la aplicación, este problema generalmente se visualiza como un error 10060.
b) Si recibe un mensaje como "P*Host 'sucomputadora' is not allowed to connect to this MySQL server" donde "sucomputadora" es el nombre de su estación de trabajo con Windows, entonces MySQL está configurado para negar las conexiones remotas (o al menos las conexiones desde su estación de trabajo).
c) Si recibe un mensaje como "4.0.15*******" entonces su servidor de MySQL sí puede recibir conexiones TCP desde su computadora.
En el caso a) Usted debe revisar con el administrador de la red (quizás ese es Usted mismo) si hay algo que bloquee la conexión. Revise si hay firewalls (incluyendo firewalls locales en su computadora). revise la conexión desde el mismo servidor (si tiene acceso). Revise si el servidor tiene varios nombres, pruebe con la dirección IP.
En el caso b) necesita reconfigurar a MySQL (o pedirle al administrador del servidor) para permitir conexiones remotas desde su computadora. Si no puede hacer eso, revise si tiene una cuenta SSH en el servidor e intente con el túnel SSH activado en el OSCPMWin. (Con el túnel SSH el servidor ve la conexión como local).
En el caso c) Usted debe poder conectarse desde la aplicación OSCPMWin.
¿Cómo reviso si tengo una cuenta SSH?
Si está utilizando un servicio de hospedaje web compartido quizás su proveedor le da acceso SSH, revise las características de su servicio de hospedaje o pregúntele a su proveedor.
Si está utilizando un servicio de coubicación (colocation) entonces seguramente Usted sí tiene varias cuentas SSH.
Si Usted está utilizando sus propios servidores (o los de su compañía) entonces seguramente tiene una o varias cuentas SSH. Si no está seguro (porque Usted no sea el administrador) pídale al administrador del servidor que le proporcione una cuenta SSH.
Si al administrador del servidor le preocupa el hecho de darle a Usted acceso por SSH al servidor, explíquele que solamente la utilizará para hacer un túnel para la conexión de MySQL, que el intérprete de comandos (shell) de su inicio de sesión puede cambiarse a un intérprete falso (dummy shell) de modo que nadie pueda ejecutar comandos remotos desde esa cuenta (menciónele esta página:
http://www.mariovaldez.net/software/sleepshell/).
Tome en cuenta que OSCPMWin depende de PLINK (el cual está incluido con OSCPMWin), una aplicación SSH de código abierto de puTTY para crear el túnel SSH al servidor.
Me aparece un mensaje como "Access denied" o algo como eso.
Su usuario no tiene permisos para conectarse desde su estación de trabajo. La mayoría de los servidores de MySQL están configurados de manera predeterminada para permitir conexiones solamente desde la misma computadora donde está corriendo. Las conexiones remotas deben habilitarse para cada usuario.
Las soluciones son 2:
1) Pida al administrador del servidor que le habilite a su usuario como remoto, o si Usted es el administrador del servidor, cambie el campo Host del registro de permisos del usuario a "%" o al nombre de la estación de trabajo.
2) Use el túnel SSH. Como se explicó anteriormente, el servidor verá su conexión como si viniera desde el mismo servidor, permitiéndole conectarse.
¿Qué pasa si no puede hacer conexiones directas a la BD?
No hay solución para estoy (actualmente). Estoy consciente que este es un problema para muchos usuarios que utilizan servicios de hospedaje compartido. Estoy trabajando en una solución.
Estoy diseñando una interfaz HTTP para hacer las transacciones de la base de datos como una alternativa al protocolo MySQL directo. Pero aún no está lista.
AVISO: Ya hay una versión en pruebas, que no utiliza conexiones directas. Visite el siguiente URL para más información:
http://www.mariovaldez.net/webapps/forums/viewtopic.php?t=294
¡¿Dónde está la documentación?!
No hay actualmente. Comprendo sus sentimientos (yo también soy usuario de software). Escribiré la documentación y espero publicarla en Diciembre. No puedo remarcar más que esta es una versión preliminar; piense en ella como una versión alfa o beta. Por favor, acepte estoy por ahora.
Trataré de ayudarles tanto como pueda en estoy foros.
Si tienen alguna pregunta, comentarios o sugerencias, por favor publíquenlos en los foros.
Saludos,
Mario A. Valdez-Ramírez.