¡Tengo una solución!
Al restablecer la contraseña raíz en el paso 2), cambie también el complemento de autenticación a mysql_native_password
:
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
¡Esto me permitió iniciar sesión correctamente!
Solución de código completo
1. Primero, ejecute estos comandos bash
sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql
2. Luego ejecute los comandos mysql => copie y pegue esto en CLI manualmente
use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user
flush privileges;
quit;
3. Ejecuta más comandos bash
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p
4. Problema de socket (de sus comentarios)
Cuando vea un socket error, una comunidad vino con 2 posibles soluciones:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(gracias a @Cerin)
O
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(gracias a @Peter Dvukhrechensky)
Caminos ciegos y posibles errores de borde
Utilice 127.0.0.1 en lugar de host local
mysql -uroot # "-hlocalhost" is default
Puede provocar un "archivo faltante" o un error slt.
mysql -uroot -h127.0.0.1
Funciona mejor.
Omita el problema del enchufe
He encontrado muchas formas de crear mysqld.sock
archivo, cambiar los derechos de acceso o vincularlo. Después de todo, ese no era el problema.
Sáltate el my.cnf
archivo
El tema tampoco estaba ahí. Si no estás seguro, esto podría ayudarte.
Para Ubuntu 18.04 y mysql 5.7
-
paso 1:
sudo mkdir /var/run/mysqld;
paso 2:
sudo chown mysql /var/run/mysqld
paso 3:
sudo mysqld_safe --skip-grant-tables
&salir (use salir si está atascado)
iniciar sesión en mysql sin contraseña
-
paso 4:
sudo mysql --user=root mysql
paso 5:
SELECT user,authentication_string,plugin,host FROM mysql.user;
paso 6:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
ahora inicia sesión con
mysql -u root -p <root>
Puedes probar de la siguiente manera, funciona para mí.
Iniciar servidor:
sudo service mysql start
Ahora, ve a la carpeta de calcetines:
cd /var/run
Copia de seguridad del calcetín:
sudo cp -rp ./mysqld ./mysqld.bak
Detener servidor:
sudo service mysql stop
Restaurar el calcetín:
sudo mv ./mysqld.bak ./mysqld
Inicie mysqld_safe:
sudo mysqld_safe --skip-grant-tables --skip-networking &
Inicie shell mysql:
mysql -u root
Cambiar contraseña:
Por lo tanto, primero elija la base de datos
mysql> use mysql;
Ahora ingrese debajo de dos consultas:
mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root';
Ahora, todo estará bien.
mysql> flush privileges;
mysql> quit;
Para verificar:
mysql -u root -p
¡hecho!
N.B, After login please change the password again from phpmyadmin
Ahora marca hostname/phpmyadmin
Username: root
Password: 123456
Para obtener más detalles, consulte Cómo restablecer la contraseña olvidada phpmyadmin en Ubuntu
El mysql
El comando por defecto usa sockets UNIX para conectarse a MySQL.
Si está utilizando MariaDB, debe cargar el complemento de autenticación de socket de Unix en el lado del servidor.
Puedes hacerlo editando el [mysqld]
configuración como esta:
[mysqld]
plugin-load-add = auth_socket.so
Dependiendo de la distribución, el archivo de configuración generalmente se encuentra en /etc/mysql/
o /usr/local/etc/mysql/
Si unix_socket=OFF
está configurado en la misma sección, habilítelo cambiándolo a unix_socket=ON
o esta solución no se aplica.