Como alterar a senha 'root' do MySQL usando MySQL v5.7?

Como alterar a senha 'root' do MySQL usando MySQL v5.7?

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 passwordcampo na mysql.usertabela 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 usertabela 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 DMLinstruçã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.

Pare de usar FLUSH PRIVILEGES

Use GRANT, REVOKE, SET PASSWORDou RENAME USERe 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.

informação relacionada