sysarmy / disneyland

En este repo consolidamos ideas y propuestas que llegan y surgen en la comunidad. Cualquier persona puede comentar en los issues, proponer y también asignarse los issues para hacerlos. Pueden agregar un comment y tomar ownership.
Creative Commons Zero v1.0 Universal
107 stars 23 forks source link

Mejorar esta respuesta: 4033 problemas al tratar de conectarme a mysql #22

Closed edux closed 3 years ago

edux commented 4 years ago

Esta respuesta esta bien posicionada en google, mejorarl el contenido para que tenga mas -vvvv https://help.sysarmy.com/discussion/4033/problemas-al-tratar-de-conectarme-a-mysql

peorth80 commented 4 years ago

Es un ticket del 2018... vos decis que tiene sentido mantenerlo "actualizado" al 2020? porque la verdad que no poder conectarse a un mysql puede ser por mil motivos (contraseña, puertos cerrados, etc, etc).

ajolo2ky commented 4 years ago

Sí, agregaría respuestas de posibles opciones de troubleshooting

On Mon, Jun 1, 2020, 11:38 AM Andrea notifications@github.com wrote:

Es un ticket del 2018... vos decis que tiene sentido mantenerlo "actualizado" al 2020? porque la verdad que no poder conectarse a un mysql puede ser por mil motivos (contraseña, puertos cerrados, etc, etc).

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/sysarmy/disneyland/issues/22#issuecomment-636897117, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSKGHECQCKQ7NAFLR7VNBDRUO4OBANCNFSM4NKIYYMQ .

GeekBeardLinks commented 3 years ago

Estoy lejos de mis días de (W|L)AMP, pero tratando de refrescar mi memoria buceando un rato en internet en busca de tips y esas cosas, para mí más o menos el troubleshooting va por estas líneas:

  1. Mirar si el proceso está corriendo
  2. Chequear en que puerto está corriendo
  3. Mirar si se tiene privilegios para conectarse desde donde se hace conexión, sea localhost u otro lugar
  4. Mirar los logs en busca de errores

¿Faltará algo que chequear?

1 y 2 varían bastante dependiendo si se está usando WampServer, XAMPP, MySQL instalado en el SO (Windows|Linux), containers, etc.

Para 4 me parece que conviene mostrar donde mirar para ver donde está el log.

¿Les parece ir haciéndolo de manera iterativa incremental en el post?

Dejo algunas referencias:

Saludos!

edux commented 3 years ago

Agregalo en /help!

El sáb., 7 nov. 2020 a las 14:26, modri (notifications@github.com) escribió:

Estoy lejos de mis días de (W|L)AMP, pero tratando de refrescar mi memoria buceando un rato en internet en busca de tips y esas cosas, para mí más o menos el troubleshooting va por estas líneas:

  1. Mirar si el proceso está corriendo
  2. Chequear en que puerto está corriendo
  3. Mirar si se tiene privilegios para conectarse desde donde se hace conexión, sea localhost u otro lugar
  4. Mirar los logs en busca de errores

¿Faltará algo que chequear?

1 y 2 varían bastante dependiendo si se está usando WampServer, XAMPP, MySQL instalado en el SO (Windows|Linux), containers, etc.

Para 4 me parece que conviene mostrar donde mirar para ver donde está el log.

¿Les parece ir haciéndolo de manera iterativa incremental en el post?

Dejo algunas referencias:

Saludos!

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/sysarmy/disneyland/issues/22#issuecomment-723471819, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGRIY3MAKVHSZ4TOKID2NDSOV7KRANCNFSM4NKIYYMQ .

GeekBeardLinks commented 3 years ago

Perfectirijillo.

Calculo que lo hago tranquilo el finde que no estoy a las corridas.

Prometo no colgar.

GeekBeardLinks commented 3 years ago

Agregalo en /help

@edux presumí que te referías a agregarlo en el hilo, pero ahora me doy cuenta ahora que el mismo está cerrado. :facepalm:

¿Decías de abrir un nuevo hilo y que deje la respuesta ahí? ¿Hacer eso no mata un poco la idea de usar ese hilo porque está bien posicionado en Google?

Mientras me aclaran que prefieren hacer, dejo* acá la respuesta formateada, así si me abducen aliens :alien:, me cae un problema productivo :fire::fire::fire: o me agarro alto empacho de churros de El Topo, etc., pueden hacer tranquilamente C&P.

*Claramente desde que escribí esto y traté de armar la respuesta pasó más tiempo del que esperaba y me quedé a medio camino. Estoy acostumbrado a la receta APB por el laburo... :shrug:

Probablemente haya horrores de redacción, así que cualquier comentario por ese lado es más que bienvenido.

Los links que aparacen son las imágenes que no subí (mi idea original era redactarlo local y hacer C&P acá, pero bueno, pasaron cosas y prefiero que vean que es que no colgué).

Seguiré editando y agregando acá hasta terminar y después hago lo que sugieran que haga sobre /help.


En general para analizar el problema de conexión a la base de datos MySQL lo que uno podría hacer es lo siguiente:

  1. Verificar si el proceso de la base de datos (BDD) está ejecutándose
  2. Verificar la conexión a la BDD
    1. Verificar los parámetros de conexión del programa con el que se quiere conectar a la DB
    2. Verificar que el puerto está corriendo el proceso de la DB coincide con el puerto de la conexión
    3. Verificar si el usuario tiene privilegios para conectarse
  3. Ver los logs de la DB en busca de errores

NOTA

Si la conexión a la BDD se hace de manera remota (es decir el programa y la BDD están en distintos equipos), también habría que verificar que se pueda llegar desde donde se ejecuta el programa hasta donde está ejecutando el proceso de la DB y que el puerto es visible.

Por tratarse de WampServer estoy asumiendo que programa y BDD están en el mismo equipo.

Veamos los pasos descriptos arriba en detalle para el caso puntual WampServer:

1. Verificar si el proceso de la base de datos (BDD) está ejecutándose

Desde WampServer

  1. Hacer click izquierdo sobre el ícono de WampServer
  2. Ir a MySQL
  3. Ver el estado del proceso
    1. El proceso está ejecutándose si se vé un tilde verde a la izquierda de Service administration 'wampmysqld64' en WampServer de 64 bits o Service administration 'wampmysqld' para la versión de 32 bits.

Proceso BDD ejecutándose visto desde WampServer

  1. Si en Service administration 'wampmysqld64' (o Service administration 'wampmysqld') no aparece el tilde verde posicionarse arriba de Service administration 'wampmysqld64' (o Service administration 'wampmysqld'), se abrirá un nuevo menú, sobre este nuevo menú hacer click en Start/Resume Service.

Desde servicios de Windows

  1. En la cuadro de búsqueda de Windows, buscar la aplicación Run o Ejecutar (dependiendo si el idioma de Windows es inglés o español) y ejecutarla. Comando RUN de Windows

  2. En el cuandro de diálogo de Run (o Ejecutar) ingresar service.msc y presionar OK.

Ejecutar services.msc

  1. En la ventana de Services (o Servicios) buscar el servicio con nombre wampmysqld64 para WampServer de 64 bits (o wampmysqld para la versión 32 bits).
    1. El servicio está corriendo si el Status (o Estado) es Running (o En ejecución).
    2. Si no aparece valor en la columna Status (o Estado) hacer click sobre la línea del servicio, luego hacer click derecho y en el menú que aparece hacer click sobre Start (o Iniciar). Servicio wampmysqld

2. Verificar la conexión a la BDD

2.1. Verificar los parámetros de conexión del programa con el que se quiere conectar a la DB.

Mirar en el programa se quiere conectar a la BDD los valores de conexión:

2.2. Verificar que el puerto está corriendo el proceso de la DB coincide con el puerto de la conexión

Si el valor del puerto obtenido con esta verificación coincide con el puerto que utiliza el programa continuar con los chequeos.

En caso contrario cambiar el valor del puerto utilizado por el programa al que utiliza MySQL y volver a ejecutar el programa para ver si se solucionó el problema.

Verificación del puerto utilizado desde WampServer

  1. Hacer click derecho sobre el ícono de WampServer
  2. Ir a Tools

    1. En el menú aparecerá el ítem Test port 3306 y si se cambió el puerto desde WampServer también aparecerá el ítem Test MySQL port used: PUERTO donde PUERTO es el valor del puerto utilizado por MySQL.

      1. Hacer click en Test port 3306 si sólo aparece dicho ítem. Esta acción abrirá una ventana que mostrará el resultado del chequeo Test Port Tool

      2. Hacer click Test MySQL port used: PUERTO si sólo aparece dicho ítem. Esta acción abrirá una ventana que mostrará el resultado del chequeo

      3. Si el chequeo en ambos casos falla y el proceso está ejecutándose hacer lo indicando en esta sección en Desde línea de comando

Verificación del puerto utilizado desde línea de comando

  1. Abrir CMD como Administrator (Línea de comando como Administrador)
  2. Ejecutar netstat -a -b
  3. Buscar en la salida los puertos asociado al proceso mysqld

Ejecucion netstat

2.3. Verificar si el usuario tiene privilegios para conectarse

El usuario utilizado podría no tener permisos para conectarse a la instancia de MySQL. Por ejemplo, que tenga permisos para hacerlo desde la ubicación desde la cual se está realizando la conexión (ej: localhost).

Si el usuario tiene permisos para conectarse desde dicha ubicación continuar. Caso contrario cambiar los privilegios y volver a probar conectarse.

Los permisos para conectarse se pueden verificar mediante una consulta SQL a las tablas de administración de la instancia de MySQL. Para ello primero hay que conectarse a la instancia utilizando un usuario con privilegios de administración (ej: root).

NOTA

El usuario root en WampServer por defecto no tiene password. Por lo que es posible conectarse sin necesidad del parámetro correspondiente.

Conectarse a la instancia de MySQL desde WampServer

  1. Hacer click izquierdo sobre el ícono de WampServer
  2. Ir a MySQL
  3. Hacer click en MysQL console

troubleshooting-006a-wampserver-console

Conectarse a la instancia de MySQL desde línea de comandos

  1. Abrir CMD como Administrator (Línea de comando como Administrador)
  2. Ir a la ruta donde está el ejecutable mysql.exe. Usualmente UBICACION_INSTALACIO_WAMPSERVER\bin\mysql\mysqlNUMERO_VERSION\bin.

    Por ejemplo: C:\wamp64\bin\mysql\mysql5.7.31\bin

  3. Ejecutar mysql.exe para conectarse con el usuario de administración ingresando luego su password mediante:

    mysql -uNOMBRE_USUARIO -p

    En el caso del usuario root, si este no tuviera defina la password (ver nota arriba) basta con ejecutar mysql -uroot.

Una vez conectados a la instancia ejecutar los siguientes comandos SQL:

USE MYSQL;
SELECT
user,
host,
account_locked,
password_expired
FROM mysql.user;

troubleshooting-006b-user-connections

Ahí mostrará desde donde se pueden conectar (host) los distintos usuarios (user) , además indica si la cuenta está bloqueada (account_locked) o su password expiró (password_expired).

Para dar permisos para utilizar algún objecto de determinada base de datos dentro de la instancia de MySQL basta con ejecutar el siguiente comando:

GRANT USAGE ON NOMBRE_DB_O_WILDCARD.OBJECTO_DB_O_WILDCARD TO 'NOMBRE_USUARIO@NOMBRE_DE_HOST_O_IP_O_WILDCARD';

Donde:

NOTA

El comando no altera los permisos del usuario (ej: SELECT o INSERT) sólo permite el uso (o conexión).

Ejemplos:

-- Dar acceso a la base de datos de nombre SYSARMY_DB al usuario ramon desde cualquier host excepto localhost
GRANT USAGE ON SYSARMY_DB.* TO 'ramon@%';
-- Dar acceso a la base de datos de nombre SYSARMY_DB al usuario ramon desde localhost
GRANT USAGE ON SYSARMY_DB.* TO 'ramon@localhost';
-- Dar acceso a todas las base de datos usuario ramon desde cualquier host excepto localhost
GRANT USAGE ON *.* TO 'ramon@%';
-- Dar acceso a todas las base de datos usuario ramon desde localhost
GRANT USAGE ON *.* TO 'ramon@localhost';

3. Ver los logs de la DB en busca de errores

Si lo anterior falla, puede que el problema sea otro. Como por ejemplo problemas en los archivos de almacenamiento para el tipo motor de almacenamiento elegido (ej: InnoDB o MyISAM).

Para ello lo mejor es mirar el log en busca de errores. Para los errores utilizar el código de error para buscar soluciones en la Web o dejar la consulta en /help de SysArmy.

Abrir logs desde WampServer

  1. Hacer click izquierdo sobre el ícono de WampServer
  2. Ir a MySQL
  3. Hacer click en MysQL Log

troubleshooting-007a-wampserver-log_LI

Buscar ubicación de los logs la instancia de MySQL desde la ínea de comandos

En el caso de que no pudiera abrirse el log desde WampServer, una opción es abrirlos directamente con el programa que más les guste (ej: vim).

Para saber donde está siendo guardado basta con buscar el valor de la variable log_error de la instancia de MySQL. Para ello:

  1. Abrir CMD como Administrator (Línea de comando como Administrador)
  2. Ir a la ruta donde está el ejecutable mysql.exe. Usualmente UBICACION_INSTALACIO_WAMPSERVER\bin\mysql\mysqlNUMERO_VERSION\bin.

    Por ejemplo: C:\wamp64\bin\mysql\mysql5.7.31\bin

  3. Ejecutar:

    mysql -uroot -se "SHOW VARIABLES" | findstr /i log | findstr ////

    Si el usuario root tiene password hay que pasar el parámetro -p, es decir el comando sería:

    mysql -uroot -p -se "SHOW VARIABLES" | findstr /i log | findstr ////

    El comando findstr es similar a grep, permitiendo filtrar ciertas expresiones.

  4. Buscar la línea de la variable log_error. A su lado estará la ubicación del archivo de log.

troubleshooting-007b-search-log-path

edux commented 3 years ago

ooops se cerro en la migracion, yo despues paso esto ahi, gracias!

El dom., 15 nov. 2020 a las 23:21, modri (notifications@github.com) escribió:

Agregalo en /help

@edux https://github.com/edux presumí que te referías a agregarlo en el hilo, pero ahora me doy cuenta ahora que el mismo está cerrado. 🤦

¿Decías de abrir un nuevo hilo y que deje la respuesta ahí? ¿Hacer eso no mata un poco la idea de usar ese hilo porque está bien posicionado en Google?

Mientras me aclaran que prefieren hacer, dejo* acá la respuesta formateada, así si me abducen aliens 👽, me cae un problema productivo 🔥 🔥🔥 o me agarro alto empacho de churros de El Topo, etc., pueden hacer tranquilamente C&P.

*Claramente desde que escribí esto y traté de armar la respuesta pasó más tiempo del que esperaba y me quedé a medio camino. Estoy acostumbrado a la receta APB por el laburo... 🤷

Probablemente haya horrores de redacción, así que cualquier comentario por ese lado es más que bienvenido.

Los links que aparacen son las imágenes que no subí (mi idea original era redactarlo local y hacer C&P acá, pero bueno, pasaron cosas y prefiero que vean que es que no colgué).

Seguiré editando y agregando acá hasta terminar y después hago lo que sugieran que haga sobre /help.

En general para analizar el problema de conexión a la base de datos MySQL lo que uno podría hacer es lo siguiente:

  1. Verificar si el proceso de la base de datos (BDD) está ejecutándose
  2. Verificar la conexión a la BDD
    1. Verificar los parámetros de conexión del programa con el que se quiere conectar a la DB
    2. Verificar que el puerto está corriendo el proceso de la DB coincide con el puerto de la conexión
    3. Verificar si el usuario tiene privilegios para conectarse
  3. Ver los logs de la DB en busca de errores

NOTA

Si la conexión a la BDD se hace de manera remota (es decir el programa y la BDD están en distintos equipos), también habría que verificar que se pueda llegar desde donde se ejecuta el programa hasta donde está ejecutando el proceso de la DB y que el puerto es visible.

Por tratarse de WampServer estoy asumiendo que programa y BDD están en el mismo equipo.

Veamos los pasos descriptos arriba en detalle para el caso puntual WampServer:

  1. Verificar si el proceso de la base de datos (BDD) está ejecutándose Desde WampServer

    1. Hacer click izquierdo sobre el ícono de WampServer
    2. Ir a MySQL
    3. Ver el estado del proceso 1.

      El proceso está ejecutándose si se vé un tilde verde a la izquierda de Service administration 'wampmysqld64' en WampServer de 64 bits o Service administration 'wampmysqld' para la versión de 32 bits. [image: Proceso BDD ejecutándose visto desde WampServer] http://./WampServer/troubleshooting-000-wampserver-process.jpg 2.

      Si en Service administration 'wampmysqld64' (o Service administration 'wampmysqld') no aparece el tilde verde posicionarse arriba de Service administration 'wampmysqld64' (o Service administration 'wampmysqld'), se abrirá un nuevo menú, sobre este nuevo menú hacer click en Start/Resume Service.

Desde servicios de Windows

  1. En la cuadro de búsqueda de Windows, buscar la aplicación Run o Ejecutar (dependiendo si el idioma de Windows es inglés o español) y ejecutarla. [image: Ver estado del proceso BDD desde WampServer] http://./WampServer/troubleshooting-001-run.PNG
  2. En el cuandro de diálogo de Run (o Ejecutar) ingresar service.msc y presionar OK. [image: Ver estado del proceso BDD desde WampServer] http://./WampServer/troubleshooting-002-services-msc.PNG
  3. En la ventana de Services (o Servicios) buscar el servicio con nombre wampmysqld64 para WampServer de 64 bits (o wampmysqld para la versión 32 bits).
    1. El servicio está corriendo si el Status (o Estado) es Running (o En ejecución).
    2. Si no aparece valor en la columna Status (o Estado) hacer click sobre la línea del servicio, luego hacer click derecho y en el menú que aparece hacer click sobre Start (o Iniciar).
  1. Verificar la conexión a la BDD 2.1. Verificar los parámetros de conexión del programa con el que se quiere conectar a la DB.

Mirar en el programa se quiere conectar a la BDD los valores de conexión:

  • host: donde corre este caso debería figurar localhost
  • port: es el puerto que utiliza la BDD para recibir peticiones. Por defecto MySQL utiliza 3306
  • user: el usuario con el cual se quiere conectar a la DBB
  • password: contraseña del usuario (user)

2.2. Verificar que el puerto está corriendo el proceso de la DB coincide con el puerto de la conexión

Si el valor del puerto obtenido con este verificación coincide con el puerto que utiliza el programa continuar con los chequeos.

En caso contrario cambiar el valor del puerto utilizado por el programa al que utiliza MySQL y volver a ejecutar el programa para ver si se solucionó el problema. Verificación del puerto utilizado desde WampServer

  1. Hacer click derecho sobre el ícono de WampServer
  2. Ir a Tools
    1. En el menú aparecerá el ítem Test port 3306 y si se cambió el puerto desde WampServer también aparecerá el ítem Test MySQL port used: PUERTO donde PUERTO es el valor del puerto utilizado por MySQL.
      1. Hacer click en Test port 3306 si sólo aparece dicho ítem. Esta acción abrirá una ventana que mostrará el resultado del chequeo
      2. Hacer click Test MySQL port used: PUERTO si sólo aparece dicho ítem. Esta acción abrirá una ventana que mostrará el resultado del chequeo
      3. Si el chequeo en ambos casos falla y el proceso está ejecutándose hacer lo indicando en esta sección en Desde línea de comando

Desde línea de comando

  1. Abrir CMD como Administrator (Línea de comando como Administrador)
  2. Ejecutar netstat -a -b
  3. Buscar en la salida los puertos asociado al proceso mysqld

2.3. Verificar si el usuario tiene privilegios para conectarse 3. Ver los logs de la DB en busca de errores

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/sysarmy/disneyland/issues/22#issuecomment-727693837, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGRIY5N2XR4HQK4Y5NTQZ3SQCEA3ANCNFSM4NKIYYMQ .

edux commented 3 years ago

Ahi actualize el hilo https://help.sysarmy.com/discussion/4033/problemas-al-tratar-de-conectarme-a-mysql pero me parece que faltan unas images que referenciaste, esas estan en alguna de las otras paginas como para que las suba o linkee en el reply?

GeekBeardLinks commented 3 years ago

Ahi actualize el hilo https://help.sysarmy.com/discussion/4033/problemas-al-tratar-de-conectarme-a-mysql pero me parece que faltan unas images que referenciaste, esas estan en alguna de las otras paginas como para que las suba o linkee en el reply?

Faltan cosas. Edito mi respuesta arriba, así tirás el C&P con todo.

Espero terminar hoy.

Hermosa manera de pasar el feriado (va sin ironía, ni sarcasmo, bueno tal vez un poco JAJAJA! al menos no tengo que revisar PRs del Team ¯_(ツ)_/¯).

@edux ya estaría editado el comentario más arriba con todos los puntos y las imágenes. Cualquier cosa me avisan y lo revisamos. Buena semana! Gracias por los saludos el viernes.

edux commented 3 years ago

Ahi subi todo lo ultimo, gracias!