usuarios - No se puede acceder a MySQL después de que genera automáticamente una contraseña temporal
usuario root mysql (15)
He borrado e instalado
OSX 10.11 El Capitan
y he seguido
este tutorial
para poner
MySQL
en funcionamiento en el nuevo OS X. El primer paso fue descargar
MySQL para Mac OS X 10.9 (x86, 64 bits), DMG Archivo
(funciona en 10.11, recomendaron en el tutorial).
Mientras terminaba de instalar MySQL, recibí el mensaje que decía que:
2015-10-25T02:10:54.549219Z 1 [Note] A temporary password is generated for root@localhost: R>gFySuiu23U
If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.
Eso fue extraño, nunca he visto ese tipo de mensaje.
Después de eso, inicié MySQL a través del Panel de preferencias y luego
/usr/local/mysql/bin/mysql -v
en el terminal para otro paso.
Recibí un mensaje de error que dice que:
ERROR 1045 (28000): Access denied for user ''cheetah''@''localhost'' (using password: NO)
También intenté acceder a la base de datos a través de
Sequel Pro
usando root como nombre de usuario y contraseña en blanco, recibí un mensaje de acceso denegado que decía:
Unable to connect to host 127.0.0.1 because access was denied.
Double-check your username and password and ensure that access from your current location is permitted.
MySQL said: Access denied for user ''root''@''localhost'' (using password: NO)
De acuerdo, también intenté esto nuevamente usando root como nombre de usuario pero ''R> gFySuiu23U'' como contraseña (que se generó desde MySQL). Recibí un mensaje de error de conexión que decía que:
Unable to connect to host 127.0.0.1, or the request timed out.
Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).
MySQL said: Your password has expired. To log in you must change it using a client that supports expired passwords.
¿Cómo podría resolver este problema? Recuerdo que MySQL nunca ha generado automáticamente una contraseña temporal como esta, ¿no?
La contraseña de MySQL expiró
Restablecer la contraseña resolverá el problema temporalmente, sin embargo, de MySQL 5.7.4 a 5.7.10 (creo que para fomentar una mejor seguridad) el valor predeterminado para la variable
default_password_lifetime
es 360 (aproximadamente un año).
Para esas versiones, si no realiza
cambios en esta variable
(o en las cuentas de usuarios individuales), todas las contraseñas de los usuarios caducan después de 360 días.
Por lo general, de una secuencia de comandos puede recibir el mensaje: "Su contraseña ha caducado. Para iniciar sesión debe cambiarla utilizando un cliente que admita contraseñas caducadas".
Por lo tanto, para evitar el vencimiento automático de la contraseña, inicie sesión como root (
mysql -u root -p
), luego, para los
clientes que se conectan automáticamente al servidor
(por ejemplo, scripts), cambie la configuración de vencimiento de la contraseña para esos clientes:
ALTER USER ''script''@''localhost'' PASSWORD EXPIRE NEVER;
o puede deshabilitar la caducidad automática de la contraseña para todos los usuarios :
SET GLOBAL default_password_lifetime = 0;
Enlaces:
MySQL: Caducidad de contraseña y modo Sandbox
MySQL: Política de caducidad de contraseña
Política de caducidad de contraseña en MySQL Server 5.7
Ahora que la contraseña que MySQL había generado ha caducado, el problema se reduce a hacer que esta contraseña vuelva a funcionar (1) o generar una nueva (2). Esto se puede lograr ejecutando MySQL con la opción skip-grant-tables que haría que ignorara los derechos de acceso:
-
Detenga su servidor MySQL.
-
Agregue el siguiente al final de la sección [mysqld] del archivo my.cnf y guárdelo.
skip-grant-tables
-
Inicie el servidor MySQL.
-
En terminal, escriba
mysql -u root -p
para entrar en el símbolo del sistema MySQL.
-
En el símbolo del sistema, escriba
USE mysql;
para entrar en la base de datos mysql donde mantiene a los usuarios de la base de datos.
-
Tipo
UPDATE user SET password_expired = ''N'' WHERE User = ''root'';
para que MySQL sepa que la contraseña no ha caducado (1) o
UPDATE user SET authentication_string = PASSWORD(''YourNewPassword''), password_expired = ''N'' WHERE User = ''root'';
asignar una nueva contraseña YourNewPassword a root (2).
Este en particular hizo el truco para mí:
Como se especifica en este enlace: https://www.variphy.com/kb/mac-os-x-reset-mysql-root-password
Haz todos los pasos excepto ejecutar
UPDATE mysql.user SET Password=PASSWORD(''NewPassword'') WHERE User=''root'';
Ejecutar
UPDATE mysql.user
SET authentication_string = PASSWORD(''MyNewPass''), password_expired = ''N''
WHERE User = ''root'' AND Host = ''localhost'';
Y luego ejecute FLILH PRIVILEGES;
Esto es lo que funcionó para mí en OS X Yosemite con MySql v5.7 (instalado desde el .dmg).
cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password
(Ingrese la contraseña temporal generada por el instalador).
Esto te lleva al
modo sandbox
y al
mysql>
prompt.
Luego configure la contraseña de root deseada con
SET PASSWORD
:
SET PASSWORD FOR ''root''@''localhost'' = PASSWORD(''mySuperSecretPassword'');
Esto puede suceder cuando haya instalado mysql anteriormente. Pruebe la contraseña que estableció para la última versión de mysql. Esto funcionó para mí.
Estoy ejecutando macOS Sierra (10.12.3) e instalé mysql-5.7.17-macos10.12-x86_64.dmg.
La respuesta de @lesley funcionó para mí, con la excepción de que necesitaba agregar
./
para asegurarme de que estaba llamando al binario mysql en mi directorio de trabajo actual.
Que es donde se instaló el paquete antes mencionado.
Si
cd
a
/usr/local/mysql/bin
y ejecuta
mysql -u root -p --connect-expired-password
, podría recibir el siguiente error.
mysql: unknown option ''--connect-expired-password''
Yo hice.
Porque simplemente ejecutando
mysql
sin proporcionar una ruta, llamada una versión previamente instalada del cliente MariaDB.
Entonces, para asegurarse de que está ejecutando el binario correcto, puede
proporcionar el camino absoluto
/usr/local/mysql/bin/mysql -u root -p --connect-expired-password
o la ruta relativa después de cambiar los directorios
cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password
Ambas formas deberían funcionar. Una vez que esté conectado con el cliente, las instrucciones son las mismas que las de @lesley.
Ingrese su contraseña temporal generada por el instalador y configure su nueva contraseña.
SET PASSWORD FOR ''root''@''localhost'' = PASSWORD(''yourNewPassword'');
Hacer estos pasos en OSX 10.11 El Capitan y MySQL 5.7.X, debería ser el truco.
Teniendo en cuenta que ya tienes instalado MySQL ...
Abra una ventana de terminal y escriba:
- sudo /usr/local/mysql/support-files/mysql.server stop
- sudo mysqld_safe --skip-grant-tables
Dado que el comando disparado en el paso 2 estará en estado de ejecución, debe abrir otra ventana de terminal y luego escribir:
- mysql -u root -p
- ACTUALIZAR mysql.user SET contraseña_expired = ''N'', autenticación_cadena = CONTRASEÑA ('''') DONDE Usuario = ''raíz'';
- dejar;
- sudo /usr/local/mysql/support-files/mysql.server restart
Importante : en el paso 2 debe reemplazar su contraseña.
Espero que te sirva.
Instalé view brew, y tuve el mismo mensaje de error hasta que noté esta advertencia:
Hemos instalado su base de datos MySQL sin una contraseña de root. Para asegurarlo, ejecute: mysql_secure_installation
Para conectar ejecute: mysql -uroot
Para iniciar, inicie mysql ahora y reinicie al iniciar sesión: brew services inicie mysql
O, si no desea / necesita un servicio en segundo plano, puede ejecutar: mysql.server start
Instalar MySQL manualmente descargando paquetes por primera vez genera una contraseña predeterminada para root. Copia y guarda eso. Si no se hace de alguna manera en las reinstalaciones sucesivas, no muestra esa contraseña.
Por lo tanto, no puede iniciar sesión en la raíz. Haz lo siguiente :
-
Encuentre entradas relacionadas con mysql en system
sudo find / -name mysql
-
Elimine todas las entradas relacionadas con mysql haciendo
rm -rf <mysql_entries_above>
- Descargue el último servidor mysql e instálelo.
- Se le solicitará una contraseña predeterminada que debe copiar.
-
Ejecute
mysql_secure_installation
y pegue esa contraseña cuando se lemysql_secure_installation
root. - Posteriormente siga los pasos y cambie la contraseña de administrador cuando se le solicite.
La otra forma de resolver este problema es utilizar una versión anterior de MySQL.
Desinstalé
MySQL version 5.7.9
para Mac OS X 10.9 (x86, 64 bits), DMG Archive y luego
MySQL version 5.6.7
,
MySQL version 5.6.7
para Mac OS X 10.9 (x86, 64 bits), DMG Archive .
Este problema está resuelto.
La contraseña autogenerada dada antes de finalizar la instalación de esta versión anterior se ha ido y finalmente puedo acceder a la base de datos usando root como nombre de usuario y una contraseña en blanco.
¡Todo funciona como un encanto!
La respuesta 7 funcionó para mí:
El capitan
,
MySQL
instalado desde dmg y contraseña autogenerada, pero se aseguró de
cd
a
/usr/local/bin/mysql
antes de ingresar
./mysql -root -p
Obvio, pero no lo hice la primera vez .
Ahora para encontrar dónde están todas mis bases de datos y tablas y cómo vincularlas.
Me enfrenté al mismo problema. Seguí la guía del proceso de instalación de https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_HowTo.html y descargué el archivo DMG e instalé MySQL en mi MAC OS X 10.12.2.
Finalmente ejecuté los siguientes comandos en la nueva Terminal.
cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password
Funcionó.
Para Mysql 5.7 yo uso
shell $> sudo grep ''contraseña temporal'' /var/log/mysqld.log
Prueba esto:
mysql -u root -h 127.0.0.1 -p
Enter password: (enter the random password here)
Ref: https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html
Después de esto, puede restablecer su contraseña utilizando
ALTER USER ''root''@''localhost'' IDENTIFIED BY ''new-password'';
''mysql -u root -p --connect-expired-password''
este problema ejecutando
''mysql -u root -p --connect-expired-password''
Luego ingrese la contraseña de auto-gen vencida de mysql.
Finalmente entré. Seleccioné mysql db con
''use mysql''
y luego actualicé al usuario ''root'' pw con
''ALTER USER ''root''@''localhost'' IDENTIFIED BY ''your new password''