Entorno actual:
mysql> show variables like "%version%";
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| innodb_version | 5.7.13 |
| protocol_version | 10 |
| slave_type_conversions | |
| tls_version | TLSv1,TLSv1.1 |
| version | 5.7.13 |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+------------------------------+
8 rows in set (0.01 sec)
Usuario del comando de cambio de contraseña:
mysql> update user set password=PASSWORD("XXXX") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
¿Me estoy perdiendo de algo?
Respuesta1
En MySQL 5.7, el password
campo en mysql.user
el campo de la tabla se eliminó, ahora el nombre del campo es authentication_string
.
Primero elija la base de datos:
mysql> use mysql;
Y luego muestra las tablas:
mysql> show tables;
Encontrará la user
tabla y verá sus campos:
mysql> describe user;
Te darás cuenta de que no hay ningún campo con nombre password
, sino el campo de contraseña authentication_string
. Entonces, solo haz esto:
update user set authentication_string=password('XXXX') where user='root';
Como lo sugiere @Rui F Ribeiro, alternativamente puedes ejecutar:
mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');
Respuesta2
La forma MySQL de cambiar la contraseña esSET PASSWORD
SET PASSWORD FOR 'root' = PASSWORD('new_password');
verMySQL 5.7 Manual de referencia / ... / SET PASSWORD Sintaxis
La instrucción SET PASSWORD asigna una contraseña a una cuenta de usuario de MySQL, especificada como texto sin cifrar (sin cifrar) o como valor cifrado:
'auth_string' represents a cleartext password. 'hash_string' represents an encrypted password.
La respuesta aceptada de Rahul muestra cómo actualizar la contraseña con DML
una declaración.
update user set authentication_string=password('XXXX') where user='root';
Advertencia: esa no es la forma oficial y compatible. Puede causar problemas si no sabes lo que estás haciendo. No lo olvides FLUSH PRIVILEGES
.
Para la mayoría de las operaciones, como crear un usuario, cambiar sus privilegios o cambiar su contraseña, querrá utilizar declaraciones de alto nivel. No sólo son más fáciles de usar y compatibles con un mayor número de versiones de MySQL, sino que también evitarán que cometas errores (por supuesto, recuerda configurar el modo SQL “NO_AUTO_CREATE_USER“). Incluso suelen funcionar bien en un entorno hostil a MyISAM como un clúster de Galera.
Dejar de usar FLUSH PRIVILEGES
Utilice GRANT
, REVOKE
, SET PASSWORD
o RENAME USER
y no declaraciones DML directas.
Actualización: SET PASSWORD ... = PASSWORD('auth_string') la sintaxis esobsoleto a partir de MySQL 5.7.6y se eliminará en una versión futura de MySQL.
Respuesta3
mysqladmin -u user-name password -p "oldpassword" "newpass"
Si puedes iniciar sesión, prueba con esto, ""
no funcionará, prueba con ''
comillas simples.
update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';
Respuesta4
Para este problema, utilicé un método simple y grosero, cambiar el nombre del campo a contraseña, la razón de esto es que uso el software mac navicat premium en el error de operación visual: columna desconocida 'contraseña' en 'lista de campos', la El software en sí utiliza una contraseña, por lo que no puedo operarlo fácilmente. Por lo tanto, accedo a la línea de comando de la base de datos, ejecuto
Use mysql;
Y luego modifique el nombre del campo:
ALTER TABLE user CHANGE authentication_string password text;
Después de todo normal.