Defina uma senha para um valor pré-hash no mysql

3

Como posso definir a senha de um usuário mysql usando uma senha pré-hash?

=====

Eu tenho uma versão do banco de dados mysql 5.1.73.

De acordo com a documentação do mysql, nas versões mais recentes do mysql, criando um usuário usando uma senha pré-hash

CREATE USER 'ans'@'localhost'
    IDENTIFIED BY PASSWORD 'hash_string'

is deprecated and will be removed in a future MySQL release.

No entanto, não consigo descobrir o que (se alguma coisa) é a nova maneira de conseguir isso.

Nós usamos o cobbler para configurar nossos bancos de dados, e eu gostaria de preencher previamente meus bancos de dados com as contas que eles precisarão, junto com as senhas que eles usarão, sem ter as senhas em texto puro nos meus scripts. Eu teria pensado

update mysql.user
    set password = '*E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB'
    where user = 'ans';

faria o truque, mas a partir do meu teste, isso realmente não altera a senha de login do mysql.

mysql> create user 'ans'@'localhost' identified by 'foo';
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| ans  | localhost | *F3A2A51A9B0F2BE2468926B4132313728C250DBF |
+------+-----------+-------------------------------------------+
mysql> update mysql.user set password = password('bar') where user = 'ans';
Query OK, 1 row affected (0.00 sec)
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| ans  | localhost | *E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB |
+------+-----------+-------------------------------------------+
mysql> quit
$ mysql -uans -pbar
ERROR 1045 (28000): Access denied for user 'ans'@'localhost' (using password: YES)
$ mysql -uans -pfoo
Welcome to the MySQL monitor.  Commands end with ; or \g.
    
por hymie 15.04.2016 / 18:06

1 resposta

0

Quando você hackear a senha em mysql.user , você deve executar

mysql> FLUSH PRIVILEGES;

De acordo com a Documentação do MySQL sobre FLUSH

PRIVILEGES

Reloads the privileges from the grant tables in the mysql database.

The server caches information in memory as a result of GRANT, CREATE USER, CREATE SERVER, and INSTALL PLUGIN statements. This memory is not released by the corresponding REVOKE, DROP USER, DROP SERVER, and UNINSTALL PLUGIN statements, so for a server that executes many instances of the statements that cause caching, there will be an increase in memory use. This cached memory can be freed with FLUSH PRIVILEGES.

Agora, você precisa reiniciar o MySQL para que a senha tenha efeito.

    
por 22.04.2016 / 05:49