Acabo de limpiar mi Mac e hice una nueva instalación de El Capitan. Estoy luchando por conectarme a Mysql ahora. Después de haber pasado por un proceso de configuración de servidor web, he creado un archivo de prueba PHP simple:
<?php
$conn = new mysqli("127.0.0.1", "root", "xxxxxxxx");
if ($conn->connect_error) echo "Connection failed: " . $conn->connect_error;
else echo "Connected successfully";
phpinfo();
?>
Cuando lo ejecuto, aparece este error:
Warning: mysqli::mysqli(): (HY000/1862): Your password has expired. To log in you must change it using a client that supports expired passwords. in /Users/rich/Documents/DESIGN/test/index.php on line 3
Connection failed: Your password has expired. To log in you must change it using a client that supports expired passwords.
Nunca antes había visto esa respuesta de una conexión. ¿Cómo lo soluciono si no puedo conectarme?
EDITAR
En la terminal ingresé el comando:
mysql -u root -p
Esto me pidió mi contraseña (la actual) que puse. Ahora tengo acceso a los comandos mysql, pero todo lo que intento da como resultado este error:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
¿Cómo restablezco la contraseña usando ALTER USER
?
php
mysql
macos
osx-elcapitan
CaribouCode
fuente
fuente
/usr/local/mysql/bin/mysqladmin -u root -p password
Respuestas:
Así que finalmente encontré la solución yo mismo.
Primero entré en la terminal y escribí:
mysql -u root -p
Esto me pidió mi contraseña actual que escribí y me dio acceso para proporcionar más comandos mysql. Todo lo que intenté desde aquí dio este error:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Esto es confuso porque en realidad no pude ver una forma de restablecer la contraseña usando la
ALTER USER
declaración, pero encontré otra solución simple:SET PASSWORD = PASSWORD('xxxxxxxx');
fuente
Primero, uso:
Dando mi contraseña actual para el 'root'. Próximo:
mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;
Cambie
'new_password'
a una nueva contraseña para el usuario 'root'.Resolvió mi problema.
fuente
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
mysqladmin -u [username] -p password
funcionó para mí en OS X El Capitan y MySQL 5.7.12 Community Server. Ejemplo:$ /usr/local/mysql/bin/mysqladmin -u root -p password Enter password: New password: Confirm new password: Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
Esto es similar a la respuesta de pavan sachi, pero con indicaciones de contraseña.
Mi error fue "# 1862 - Su contraseña ha caducado. Para iniciar sesión, debe cambiarla utilizando un cliente que admita contraseñas caducadas". en la pantalla de inicio de sesión de phpMyAdmin por primera vez.
fuente
mysqladmin -u [username] -p password
Caducidad de la contraseña de MySQL
Restablecer la contraseña solo resolverá el problema temporalmente. De MySQL 5.7.4 a 5.7.10 (para fomentar una mejor seguridad, consulte MySQL: Política de caducidad de contraseña ), el valor de la
default_password_lifetime
variable predeterminada es 360 ( aproximadamente 1 año). Para esas versiones, si no realiza cambios en esta variable (o en las cuentas de usuarios individuales), todas las contraseñas caducan después de 360 días.Por lo tanto, de un script puede recibir el mensaje: "Su contraseña ha caducado. Para iniciar sesión, debe cambiarla con un cliente que admita contraseñas caducadas".
Para detener 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: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;
Como señaló Mertaydin en los comentarios, para que esto sea permanente, agregue la siguiente línea a un
my.cnf
archivo que MySQL lee al inicio, en el[mysqld]
grupo de configuraciones. La ubicación demy.cnf
depende de su configuración (por ejemplo, Windows o Homebrew en OS X, o un instalador), y si lo desea por usuario en Unix o global:[mysqld]
default_password_lifetime = 0
(También puede haber otras configuraciones aquí ...)Consulte los documentos de MySQL sobre archivos de configuración .
fuente
Pasé por el mismo problema recientemente al instalar mysql en mac os x capitan. No encontré la respuesta correcta aquí, así que agregué esta respuesta.
MySql en las versiones actuales, genera una contraseña temporal cuando instala mysql. Use esta contraseña para establecer una nueva contraseña usando la utilidad mysqladmin como se muestra a continuación;
Espero que te ayude a ti y a los demás.
fuente
Simplemente descargue MySQL Workbench para iniciar sesión. Le pedirá que cambie la contraseña de forma inmediata y automática.
fuente
iniciar MYSQL en modo seguro
mysqld_safe --skip-grant-tables &
Conectarse al servidor MYSQL
ejecutar comandos SQL para restablecer la contraseña:
use mysql; SET GLOBAL default_password_lifetime = 0; SET PASSWORD = PASSWORD('new_password');
Último paso, reinicia tu servicio mysql
fuente
Me enfrenté a este problema hace unos días. Para obtener la mejor solución para la versión 5.7 de MySQL; inicie sesión en su consola mysql y modifique su contraseña con el siguiente comando:
ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;
fuente
ADVERTENCIA: esto permitirá que cualquier usuario inicie sesión
Tenía que probar otra cosa. Dado que mi contraseña de root expiró y modificar no era una opción porque
Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
añadiendo temporarly
skip-grant-tables
bajo[mysqld]
enmy.cnf
y reiniciar MySQL hizo el trucofuente
En Windows en phpmyadmin, busque en Variables: default_password_lifetime, y cámbielo a 0 (en lugar de 360), disfrute.
Es posible que mySQL vuelva a tomar 360 días, así que agregue my.ini:
[mysqld] default_password_lifetime=0
Y reinicie mysql.
fuente
Esto funcionó para mí:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword','root'@'localhost' PASSWORD EXPIRE NEVER;
fuente
reinicie el servidor MySQL con la opción --skip-grant-tables y luego configure una nueva contraseña de root
$ mysql -u root mysql> USE mysql; mysql> UPDATE user SET password=PASSWORD("NEWPASSWORD") WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> quit
Ahora, si lo necesita, puede actualizar la tabla mysql.user (campo password_expired = 'N') para que no caduque la contraseña.
fuente
mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
mysql -u root -p
luego me pidió la contraseña queYou must reset your password using ALTER USER statement before executing this statement.
Todas estas respuestas utilizan consolas Linux para acceder a MySQL.
Si está en Windows y usa WAMP, puede comenzar abriendo la consola MySQL (
click WAMP icon->MySQL->MySQL console
).Luego le pedirá que ingrese su contraseña actual, ingrésela.
Y luego escribe
SET PASSWORD = PASSWORD('some_pass');
fuente
la mejor solución fácil:
[PATH MYSQL]/bin/mysql -u root [Enter password] SET GLOBAL default_password_lifetime = 0;
y luego funciona bien.
fuente
Este trabajo para mi:
Fuente: https://www.diariodeunprogramador.net/fallo-al-conectar-mysql-your-password-expired/
Iniciar sesión como root:
y luego desactivas la caducidad automática de las contraseñas de todos los usuarios:
SET GLOBAL default_password_lifetime = 0;
fuente
La expiración de la contraseña es una característica nueva en MySQL 5.6 o 5.7.
La respuesta es clara: utilice un cliente que sea capaz de cambiar la contraseña vencida (creo que Sequel Pro puede hacerlo).
La biblioteca MySQLi obviamente no puede cambiar la contraseña caducada.
Si tiene acceso limitado a localhost y solo tiene un cliente de consola, el cliente mysql estándar puede hacerlo.
fuente
Abra la consola MySQL y escriba SET PASSWORD = 'su contraseña'; y luego presione la tecla ENTER que establecerá su contraseña definida para el usuario root.
Solo puede escribir SET PASSWORD = ''; que establecerá la contraseña en blanco para el usuario root.
fuente
Hice algo como esto.
UPDATE mysql.user SET authentication_string = PASSWORD(''), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
fuente
You must reset your password using ALTER USER statement before executing this statement.
Simplemente abra MySQL Workbench y elija [Instancia] Inicio / Apagado y haga clic en iniciar servidor. Funcionó para mi
fuente