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

11

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 sentindo falta de algo?

    
por Shivu RH 22.06.2016 / 09:57

5 respostas

19

No MySQL 5.7, o campo password no campo mysql.user table foi removido, agora o nome do campo é authentication_string .

Primeiro, escolha o banco de dados:

mysql> use mysql;

Em seguida, mostre as tabelas:

mysql> show tables;

Você encontrará a tabela user e verá seus campos:

mysql> describe user;

Você perceberá que não há nenhum campo denominado password , o campo de senha é denominado authentication_string . Então, faça isso:

update user set authentication_string=password('XXXX') where user='root';

Como sugerido por @Rui F Ribeiro, alternativamente, você pode executar:

mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');
    
por 22.06.2016 / 10:14
1

mysqladmin -u user-name password -p "oldpassword" "newpass"

Se você conseguir fazer login, tente este "" não vai funcionar tente '' citação única

update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';

    
por 22.06.2016 / 10:09
1

A maneira de alterar a senha do MySQL é SET PASSWORD

SET PASSWORD FOR 'root' = PASSWORD('new_password');

veja Manual de Referência do MySQL 5.7 / ... / Sintaxe SET PASSWORD

The SET PASSWORD statement assigns a password to a MySQL user account, specified as either a cleartext (unencrypted) or encrypted value:

'auth_string' represents a cleartext password.

'hash_string' represents an encrypted password.

A resposta aceita da Rahul mostra como atualizar a senha com a declaração DML .

update user set authentication_string=password('XXXX') where user='root';

Atenção: essa não é a maneira oficial e suportada. Isso pode causar problemas, se você não sabe o que está fazendo. Não se esqueça de FLUSH PRIVILEGES .

For most operations, like creating a user, changing its privileges, or changing its password, you will want to use the high-level statements. Not only they are easier to use and they are compatible with a larger number of MySQL versions, but they will also prevent you from making mistakes (of course, remember to setup the “NO_AUTO_CREATE_USER“ sql mode). They even usually work nicely in a MyISAM-hostile environment like a Galera cluster.

Pare de usar PRIVILÉGIOS DE FLUSH

Use GRANT , REVOKE , SET PASSWORD ou RENAME USER e não direcione as declarações DML.

    
por 25.06.2016 / 09:19
0

No meu caso

mysql.server start
$ mysql -uroot
mysql> update user set authentication_string=password('123456') where User='root';
mysql> exit;
mysql.server restart (if you not restart , connection will not work.)

Então, eu acho que o seu comando de atualização está certo, mas você precisa reiniciar o seu servidor mysql.

    
por 07.06.2018 / 13:01
-1

Para este problema, usei um método simples e rude, renomeie o nome do campo para senha, a razão para isso é que eu uso o software mac navicat premium no erro de operação visual: coluna desconhecida 'senha' no 'campo Lista ', o próprio software usa senha para que eu não possa operar facilmente. Portanto, eu enraizar na linha de comando do banco de dados, execute

Use mysql;

Em seguida, modifique o nome do campo:

ALTER TABLE user CHANGE authentication_string password text;

Afinal, normal.

    
por 18.04.2017 / 04:23

Tags