through solucion socket sock run mysqld error mysql homebrew

solucion - can t connect to local mysql server through socket ''/ var run mysqld mysqld sock



No se puede conectar al servidor MySQL local a través de socket homebrew (12)

1) Si puede ver "mysql detenido" cuando ejecuta el siguiente comando;

brew services list

2) y si puede iniciar mysql con el siguiente comando;

mysql server start

luego, agregar mysql a los servicios solucionará tu problema. Con este método, mysql comenzará como servicio cuando se inicie su sistema operativo. Para ello puedes ejecutar el siguiente comando;

brew services start mysql

Después de eso, puedes reiniciar tu sistema operativo e intentar conectarte a mysql. Hice lo mismo y dejé de recibir por debajo del error;

ERROR 2002 (HY000): no se puede conectar al servidor MySQL local a través del socket ''/tmp/mysql.sock'' (2)

Espero que esto ayude.

Recientemente intenté instalar MySQL con homebrew ( brew install mysql ) y cuando intento ejecutarlo obtengo el siguiente error:

ERROR 2002 (HY000): no se puede conectar al servidor MySQL local a través del socket ''/tmp/mysql.sock'' (2)

No hay /tmp/mysql.sock ni un /var/lib/mysql.sock .

He buscado y no he encontrado ningún archivo mysql.sock .

¿Cómo puedo arreglar esto?


Cuando tienes el servidor funcionando a través de

mysql.server start

Debería ver el socket en /tmp/mysql.sock . Sin embargo, el sistema parece esperarlo en /var/mysql/mysql.sock . Para solucionar esto, debe crear un enlace simbólico en / var / mysql :

sudo mkdir /var/mysql

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

Esto lo resolvió para mí. Ahora mi phpMyAdmin trabaja felizmente con localhost y 127.0.0.1 .

El crédito es para Henry


Después de instalar macos mojave, tuve que limpiar la carpeta mysql en /usr/local/var/mysql y luego volver a instalarla a través de brew install mysql contrario, las cosas relacionadas con los permisos aparecerían por todas partes.


El archivo /tmp/mysql.sock es probablemente un Named-Pipe, ya que está en una carpeta temporal. Una tubería con nombre es un archivo especial que nunca se almacena permanentemente.

Si hacemos dos programas, y queremos que un programa envíe un mensaje a otro programa, podríamos crear un archivo de texto. Tenemos un programa que escribe algo en el archivo de texto y el otro programa lee lo que escribió nuestro otro programa. Eso es lo que es una tubería, excepto que no escribe el archivo en el disco duro de nuestra computadora, IE no almacena permanentemente el archivo (como lo hacemos cuando creamos un archivo y lo guardamos).

Un zócalo es exactamente el mismo que un tubo. La diferencia es que los sockets se usan generalmente en una red, entre computadoras. Un zócalo envía información a otra computadora o recibe información de otra computadora. Tanto Pipes como Sockets utilizan un archivo temporal para compartir, de modo que puedan "comunicarse".

Es difícil discernir cuál MySQL está usando en este caso. Aunque no importa.

El comando mysql.server start debe hacer que el ''servidor'' (programa) ejecute su bucle infinito que creará ese archivo especial y esperará los cambios ( listen escrituras).

Después de eso, un problema común puede ser que el programa MySql no tenga permiso para crear un archivo en su máquina, por lo que es posible que tenga que otorgarle privilegios de raíz

sudo mysql.server start


Intente conectarse utilizando "127.0.0.1" en lugar de "localhost".


Me enfrenté al mismo problema en mi Mac y lo resolví, siguiendo los siguientes tutoriales

https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew

Pero no olvide matar o desinstalar la versión anterior antes de continuar.

Comandos:

brew uninstall mariadb xcode-select --install ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - See more at: https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew#sthash.XQoxRoJp.dpuf brew doctor brew update brew info mariadb brew install mariadb mysql_install_db mysql.server start


Parece que su servidor mysql no se ha iniciado. Generalmente ejecuto el comando de parada y luego lo inicio de nuevo:

mysqld stop mysql.server start

Mismo error, y esto funciona para mí.


Recibí el mismo error y esto es lo que me ayudó:

$ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents $launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist $mysql -uroot mysql>


Sólo para completar este hilo. por lo tanto, MAMP (PRO) se usa bastante a menudo

el camino aquí es

/Applications/MAMP/tmp/mysql/mysql.sock


Solo para agregar a estas respuestas, en mi caso no tenía un servidor MySQL local, se estaba ejecutando dentro de un contenedor docker. Por lo tanto, el archivo de socket no existe y no será accesible para el cliente "mysql".

El archivo sock es creado por mysqld y mysql lo usa para comunicarse con él. Sin embargo, si su servidor mySql no se está ejecutando localmente, no requiere el archivo sock.

Al especificar un nombre de host / ip, el archivo de calcetín no es necesario, por ejemplo

mysql --host=127.0.0.1 --port=3306 --user=xyz --password=xyz


Tendrá que ejecutar mysql_install_db ; la forma más sencilla es si está en el directorio de instalación:

$ cd /usr/local/Cellar/mysql/<version>/ $ mysql_install_db

Alternativamente, puede alimentar a mysql_install_db un parámetro basedir como el siguiente:

$ mysql_install_db --basedir="$(brew --prefix mysql)"


Ya que pasé bastante tiempo tratando de resolver esto y siempre volví a esta página cuando buscaba este error, dejaré mi solución aquí con la esperanza de que alguien ahorre el tiempo que he perdido. Aunque en mi caso estoy usando mariadb en lugar de MySql, es posible que aún pueda adaptar esta solución a sus necesidades.

Mi problema

es el mismo, pero mi configuración es un poco diferente (mariadb en lugar de mysql):

Mariadb instalado con homebrew

$ brew install mariadb

Comenzó el demonio

$ brew services start mariadb

Intenté conectarme y obtuve el error mencionado anteriormente.

$ mysql -uroot ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/tmp/mysql.sock'' (2)

Mi solución

averigüe qué archivos my.cnf utiliza mysql (como se sugiere en este comment ):

$ mysql --verbose --help | grep my.cnf /usr/local/etc/my.cnf ~/.my.cnf order of preference, my.cnf, $MYSQL_TCP_PORT,

verifique dónde se está ejecutando el archivo socket de Unix (casi como se describe here ):

$ netstat -ln | grep mariadb .... /usr/local/mariadb/data/mariadb.sock

(es posible que desee grep mysql lugar de mariadb)

Agregue el archivo de socket que encontró a ~/.my.cnf (cree el archivo si es necesario) (asumiendo que ~/.my.cnf aparece en la lista cuando se ejecuta mysql --verbose ... -command desde arriba):

[client] socket = /usr/local/mariadb/data/mariadb.sock

Reinicie su mariadb:

$ brew services restart mariadb

Después de esto pude ejecutar mysql y obtuve:

$ mysql -uroot ERROR 1698 (28000): Access denied for user ''root''@''localhost''

Entonces ejecuté el comando con privilegios de superusuario y, luego de ingresar mi contraseña, obtuve:

$ sudo mysql -uroot MariaDB [(none)]>

Notas:

  1. No estoy muy seguro de los grupos en los que tiene que agregar el socket, primero lo tenía [cliente-servidor] pero luego pensé que [cliente] debería ser suficiente. Así que lo cambié y todavía funciona.

  2. Cuando se ejecuta mariadb_config | grep socket mariadb_config | grep socket : --socket [/tmp/mysql.sock] que es un poco confuso ya que parece que /usr/local/mariadb/data/mariadb.sock es el lugar real (al menos en mi máquina)

  3. Me pregunto dónde puedo configurar /usr/local/mariadb/data/mariadb.sock para que sea realmente /tmp/mysql.sock así que puedo usar la configuración predeterminada en lugar de tener que editar mi .my.cnf (pero estoy demasiado cansado ahora para darse cuenta de eso ...)

  4. En algún momento también hice las cosas mencionadas en otras respuestas antes de llegar a esto.