mysql linux passwords password-recovery mysql-5.7

¿Cuál es la contraseña raíz predeterminada para MySQL 5.7?



linux passwords (12)

Acabo de instalar Linux Mint 19 (basado en Ubuntu 18.04) en mi máquina. Instalé MySQL 5.7 desde el repositorio ( sudo apt install mysql-server ) y, sorprendentemente, durante la instalación, la configuración no solicitó ingresar la contraseña de root . Como resultado, no pude iniciar sesión en MySQL. Busqué en Google aquí y allá y probé varias respuestas que encontré en la red, incluida la respuesta aceptada anteriormente. Desinstalé (purgué todos los dpkgs con mysql en su nombre) y reinstalé nuevamente desde los repositorios predeterminados de Linux Mint. NINGUNO funciona.

Después de horas de trabajos improductivos, decidí reinstalar MySQL desde la página oficial. Abrí la página de descarga de MySQL ( https://dev.mysql.com/downloads/repo/apt ) para apt repo e hice clic en el botón Descargar en la parte inferior derecha.

A continuación, ejecútelo con dpkg:

create user ''user''@''localhost'' identified by ''user1234''; grant all on your_database.* to ''user''@''localhost''; select host, user from mysql.user;

En la configuración de la instalación, elija la versión de MySQL que desea instalar. La opción predeterminada es 8.0 pero la cambié a 5.7. Haga clic en Aceptar para salir. Después de esto, tiene un nuevo repositorio MySQL en sus Fuentes de software.

Actualiza tu repositorio:

mysql -u user -p

Finalmente, instale MySQL:

sudo -i mkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld /etc/init.d/mysql stop mysqld_safe --skip-grant-tables & mysql -uroot use mysql; update user set authentication_string=password(''YOURPASSWORD'') where user=''root''; update user set plugin="mysql_native_password" where User=''root''; flush privileges; quit; sudo /etc/init.d/mysql stop sudo /etc/init.d/mysql start

¡Y ahora se me pidió que proporcionara la contraseña de root ! Espero que ayude a otros con esta misma experiencia.

No se puede iniciar sesión en la base de datos MySQL después de una nueva instalación con ID de raíz y contraseña vacía / sin contraseña como lo hacen otras versiones anteriores de MySQL


Después de instalar MySQL-community-server 5.7 desde fresh en linux, necesitará encontrar la contraseña temporal en /var/log/mysqld.log para iniciar sesión como root.

  1. grep ''temporary password'' /var/log/mysqld.log
  2. Ejecute mysql_secure_installation para cambiar la nueva contraseña

ref: http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html


Después de mucho intentarlo, puedo restablecer la contraseña predeterminada con los siguientes comandos (Ubuntu y derivados):

sudo -i mkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld /etc/init.d/mysql stop mysqld_safe --skip-grant-tables & mysql -uroot use mysql; update user set authentication_string=password(''YOURPASSWORD'') where user=''root''; update user set plugin="mysql_native_password" where User=''root''; flush privileges; quit; sudo /etc/init.d/mysql stop sudo /etc/init.d/mysql start

A veces, incluso después de escribir en la terminal

mkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld /etc/init.d/mysql stop mysqld_safe --skip-grant-tables &

Recibí el error de que mysqld no existe. Por lo tanto, salga y vuelva a escribir los mismos comandos.

Y el comando final

sudo /etc/init.d/mysql start

A veces no funciona. Solo después de reiniciar la computadora.


En caso de que desee instalar mysql o percona sin supervisión (como en mi caso ansible), puede usar el siguiente script:

# first part opens mysql log # second part greps lines with temporary password # third part picks last line (most recent one) # last part removes all the line except the password # the result goes into password variable password=$(cat /var/log/mysqld.log | grep "A temporary password is generated for" | tail -1 | sed -n ''s/.*root@localhost: //p'') # setting new password, you can use $1 and run this script as a file and pass the argument through the script newPassword="wh@teverYouLikE" # resetting temporary password mysql -uroot -p$password -Bse "ALTER USER ''root''@''localhost'' IDENTIFIED BY ''$newPassword'';"


En mi caso, el directorio de datos se inicializó automáticamente con la opción --initialize-insecure . Entonces /var/log/mysql/error.log no contiene una contraseña temporal pero:

[Advertencia] root @ localhost se crea con una contraseña vacía. Considere desactivar la opción --initialize-insecure.

Lo que funcionó fue:

shell> mysql -u root --skip-password mysql> ALTER USER ''root''@''localhost'' IDENTIFIED BY ''new_password'';

Detalles: Manual de referencia de MySQL 5.7> 2.10.4 Protección de la cuenta inicial de MySQL


Estaba experimentando el mismo problema y lo único que pude hacer para que funcionara fue seguir esta ruta:

drop user admin@localhost; flush privileges; create user admin@localhost identified by ''admins_password''

Esto me permitió recrear mi nombre de usuario e ingresar una contraseña para el nombre de usuario


Hay tantas respuestas por ahí que dicen reinstalar mysql o usar algún combo de

mysqld_safe --skip-grant-tables

y / o

UPDATE mysql.user SET Password=PASSWORD(''password'')

y / o algo más ...

... Nada de eso funcionaba para mí

Esto es lo que funcionó para mí, en Ubuntu 18.04, desde arriba

Con especial reconocimiento a esta respuesta por sacarme de la frustración por esto ...

$ sudo apt install mysql-server $ sudo cat /etc/mysql/debian.cnf

Tenga en cuenta las líneas que leen:

user = debian-sys-maint password = blahblahblah

Entonces:

$ mysql -u debian-sys-maint -p Enter password: // type ''blahblahblah'', ie. password from debian.cnf mysql> USE mysql mysql> SELECT User, Host, plugin FROM mysql.user; +------------------+-----------+-----------------------+ | User | Host | plugin | +------------------+-----------+-----------------------+ | root | localhost | auth_socket | | mysql.session | localhost | mysql_native_password | | mysql.sys | localhost | mysql_native_password | | debian-sys-maint | localhost | mysql_native_password | +------------------+-----------+-----------------------+ 4 rows in set (0.00 sec) mysql> UPDATE user SET plugin=''mysql_native_password'' WHERE User=''root''; mysql> COMMIT; // When you don''t have auto-commit switched on

Ya sea:

mysql> ALTER USER ''root''@''localhost'' IDENTIFIED BY ''new_password'';

O:

// For MySQL 5.7+ UPDATE mysql.user SET authentication_string=PASSWORD(''new_password'') where user=''root'';

Entonces:

mysql> FLUSH PRIVILEGES; mysql> COMMIT; // When you don''t have auto-commit switched on mysql> EXIT $ sudo service mysql restart $ mysql -u root -p Enter password: // Yay! ''new_password'' now works!


MySQL 5.7 cambió el modelo seguro: ahora el inicio de sesión root de MySQL requiere un sudo

La solución más simple (y más segura) será crear un nuevo usuario y otorgar los privilegios necesarios.

1. Conéctese a mysql

sudo mysql --user=root mysql

2. Cree un usuario para phpMyAdmin

CREATE USER ''phpmyadmin''@''localhost'' IDENTIFIED BY ''some_pass''; GRANT ALL PRIVILEGES ON *.* TO ''phpmyadmin''@''localhost'' WITH GRANT OPTION; FLUSH PRIVILEGES;

Referencia: https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7


MySQL server 5.7 ya estaba instalado por defecto en mi nuevo Linux Mint 19.

Pero, ¿cuál es la contraseña de root MySQL? Resulta que:

¡La instalación predeterminada usa auth_socket para la autenticación, en lugar de contraseñas!

Permite un inicio de sesión sin contraseña, siempre que uno haya iniciado sesión en el sistema Linux con el mismo nombre de usuario. Para iniciar sesión como user root de MySQL, uno puede usar sudo:

sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb

Pero, ¿cómo cambiar la contraseña de root? Para ilustrar lo que está sucediendo, creé un nuevo usuario "yo", con todos los privilegios, con:

sudo apt update

Comparando "yo" con "raíz":

sudo apt install mysql-server

Debido a que está utilizando auth_socket, la contraseña de root no se puede cambiar: el comando SET PASSWORD falla y mysql_secure_installation logra nada ...

==> Para eliminar este modo de autenticación alternativo y hacer que el usuario root MySQL use contraseñas:

sudo mysql -u root

Una buena explicación

Más detalles del manual de MySQL .


Mysql genera una contraseña temporal predeterminada a medida que se instala, por lo que para usar mysql en primer lugar se le solicitará que obtenga esa contraseña del archivo de registro que está presente en /var/log/mysqld.log. Así que sigue el siguiente proceso:

grep ''contraseña temporal'' /var/log/mysqld.log

mysql_secure_installation: esto es necesario para cambiar la contraseña de mysql y también para realizar otros cambios, como eliminar bases de datos temporales, permitir o impedir el acceso remoto al usuario root, eliminar usuarios anónimos, etc.


Ninguna de estas respuestas me funcionó en Ubuntu Server 18.04.1 y MySQL 5.7.23. Pasé un montón de tiempo intentando y no configurando la contraseña y el complemento de autenticación manualmente, encontrando la contraseña en los registros (no está allí), etc.

La solución es realmente súper fácil:

mkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld /etc/init.d/mysql stop mysqld_safe --skip-grant-tables &

Es realmente importante hacer esto con sudo . Si intenta sin elevación, se le pedirá la contraseña de root, que obviamente no tiene.


Parece que las cosas fueron diseñadas para evitar que los desarrolladores puedan ver al usuario root, una mejor solución sería:

sudo /etc/init.d/mysql start

Luego cree un usuario normal, establezca una contraseña, luego use ese usuario para trabajar.

shell> mysql -u root --skip-password mysql> ALTER USER ''root''@''localhost'' IDENTIFIED BY ''new_password'';

Luego intente acceder a:

sudo mysql_secure_installation

¡Auge!