¿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.
-
grep ''temporary password'' /var/log/mysqld.log
-
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
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!