
Ambiente Atual:
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)
Usuário do comando de alteração de senha:
mysql> update user set password=PASSWORD("XXXX") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
Estou esquecendo de algo?
Responder1
No MySQL 5.7, o password
campo na mysql.user
tabela field foi removido, agora o nome do campo é authentication_string
.
Primeiro escolha o banco de dados:
mysql> use mysql;
E então mostre as tabelas:
mysql> show tables;
Você encontrará a user
tabela e verá seus campos:
mysql> describe user;
Você perceberá que não há nenhum campo nomeado password
, o campo de senha é nomeado authentication_string
. Então, basta fazer isso:
update user set authentication_string=password('XXXX') where user='root';
Conforme sugerido por @Rui F Ribeiro, em alternativa pode executar:
mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');
Responder2
A maneira do MySQL de alterar a senha éSET PASSWORD
SET PASSWORD FOR 'root' = PASSWORD('new_password');
verManual de referência do MySQL 5.7 / ... / Sintaxe SET PASSWORD
A instrução SET PASSWORD atribui uma senha a uma conta de usuário MySQL, especificada como um valor de texto não criptografado (não criptografado) ou criptografado:
'auth_string' represents a cleartext password. 'hash_string' represents an encrypted password.
A resposta aceita de Rahul mostra como atualizar a senha com DML
instrução.
update user set authentication_string=password('XXXX') where user='root';
Aviso: essa não é a forma oficial e suportada. Isso pode causar problemas se você não souber o que está fazendo. Não se esqueça FLUSH PRIVILEGES
.
Para a maioria das operações, como criar um usuário, alterar seus privilégios ou alterar sua senha, você desejará usar instruções de alto nível. Eles não apenas são mais fáceis de usar e compatíveis com um grande número de versões do MySQL, mas também evitam que você cometa erros (claro, lembre-se de configurar o modo sql “NO_AUTO_CREATE_USER“). Eles geralmente funcionam bem em um ambiente hostil ao MyISAM, como um cluster Galera.
Use GRANT
, REVOKE
, SET PASSWORD
ou RENAME USER
e não instruções DML diretas.
Atualização: a sintaxe SET PASSWORD ... = PASSWORD('auth_string') éobsoleto a partir do MySQL 5.7.6e será removido em uma versão futura do MySQL.
Responder3
mysqladmin -u user-name password -p "oldpassword" "newpass"
se você conseguir fazer o login, tente isso ""
não funcionará, tente ''
aspas simples
update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';
Responder4
Para esse problema usei um método simples e rude, renomeie o nome do campo para senha, o motivo disso é que utilizo o software mac navicat premium no erro de operação visual: Coluna desconhecida 'senha' em 'Lista de campos', o o próprio software usa senha para que eu não possa operar facilmente. Portanto, eu enraizo na linha de comando do banco de dados, executo
Use mysql;
E então modifique o nome do campo:
ALTER TABLE user CHANGE authentication_string password text;
Afinal de contas normal.