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.