Idioma: todos: ninguno -->
Mi problema comenzó con que ya no podía iniciar sesión como root en mi instalación de mysql. Estaba intentando ejecutar mysql sin contraseñas activadas... pero cada vez que ejecutaba el comando
# mysqld_safe --skip-grant-tables &
Nunca me volvía a salir el prompt. Estaba intentando seguir estas instrucciones para recuperar la contraseña.
La pantalla sólo se ve así:
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
y no me aparece un aviso para empezar a escribir los comandos SQL para restablecer la contraseña.
Cuando lo mato pulsando CTRL + C, me aparece el siguiente mensaje:
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Si vuelvo a intentar el comando y lo dejo el tiempo suficiente, obtengo la siguiente serie de mensajes:
root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[1]+ Done mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#
Pero luego si intento entrar como root haciendo:
# mysql -u root
Me aparece el siguiente mensaje de error:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
He comprobado y el archivo /var/run/mysqld/mysqld.sock
no existe. La carpeta sí, pero el archivo no.
Además, no sé si esto ayuda o no, pero corrí find / -name mysqld
y me salió:
/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder
Soy nuevo en Linux y MySQL, así que no sé si esto es normal o no. Pero incluyo esta información por si sirve de ayuda.
Finalmente decidí desinstalar y reinstalar mysql.
apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin
Después de reinstalar todos los paquetes de nuevo en el mismo orden que el anterior, durante la instalación de phpmyadmin, obtuve el mismo error:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Así que intenté de nuevo desinstalar/reinstalar. Esta vez, después de desinstalar los paquetes, también he renombrado manualmente todos los archivos y directorios de mysql a mysql.bad
en sus respectivas ubicaciones.
/var/lib/mysql
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql
Luego intenté reinstalar mysql-server
y mysql-client
de nuevo. Pero me he dado cuenta de que no me pide la contraseña. ¿No se supone que debe pedir una contraseña de administrador?
Para encontrar todos los archivos de socket en su sistema ejecute:
sudo find / -type s
Mi sistema de servidor Mysql tenía el socket abierto en /var/lib/mysql/mysql.sock
.
Una vez que encuentre dónde se abre el socket, añada o edite la línea a su archivo /etc/my.cnf con la ruta al archivo del socket:
socket=/var/lib/mysql/mysql.sock
A veces el script de inicio del sistema que lanzó el ejecutable de la línea de comandos especifica una bandera --socket=path
. Esta bandera podría anular la ubicación de my.cnf, y eso resultaría en un socket que no se encuentra donde el archivo my.cnf indica que debe estar. Entonces cuando intente ejecutar el cliente de línea de comandos mysql, leerá my.cnf para encontrar el socket, pero no lo encontrará ya que se desvía de donde el servidor creó uno. Así que, a menos que te importe dónde reside el socket, simplemente cambiando el my.cnf para que coincida debería funcionar.
Entonces, detenga el proceso mysqld. La forma de hacer esto variará según el sistema.
Si usted'es el superusuario en el sistema linux, pruebe uno de los siguientes si no conoce el método específico que utiliza su configuración de Mysql:
service mysqld stop
/etc/init.d/mysqld stop
mysqladmin -u root -p shutdown
.pkill -9 mysqld
.pgrep mysql
o ps aux | grep mysql | grep -v grep
.4969
termine con kill -9 4969
Después de hacer esto puede buscar un archivo pid en /var/run/mysqld/
y borrarlo
Asegúrese de que los permisos de su socket son tales que cualquier usuario con el que mysqld se esté ejecutando pueda leer/escribir en él. Una prueba fácil es abrirlo a lectura/escritura completa y ver si todavía funciona:
chmod 777 /var/run/mysqld/mysqld.sock
Si eso soluciona el problema, puedes adaptar los permisos y la propiedad del socket según sea necesario en función de tu configuración de seguridad.
Además, el directorio en el que reside el socket tiene que ser accesible por el usuario que ejecuta el proceso mysqld.
La solución es mucho más fácil.
mysql.sock
. En mi caso estaba en /opt/lampp/var/mysql/mysql.sock
.sudo Nautilus
mysql.sock
.mysqld.sock
y luego haz clic con el botón derecho del ratón en el archivo y Córtalo./var/run
y crea una carpeta llamada mysqld
y entra en ellamysqld.sock
en /var/run/mysqld/mysqld.sock
:)Me encontré con el mismo error y descubrí que se debía a la actualización de los paquetes, así que después de reiniciar mi sistema resolví el error.
Creo que debido a las bibliotecas sql / actualización de paquetes que el error se produjo, así que trate de esto si usted está haciendo alguna actualización :)