GRANT – установка привилегии, не зная пароля

Автор: | 4 февраля 2012

Если у вас есть доступ root (или близкий к нему) в MySQL и нужно установить дополнительный удаленный доступ для существующего пользователя к базе, но нет под рукой пароля, можно сделать так:

1) смотрим, какие уже есть разрешения для этого пользователя с других хостов и какой у него пароль (пароль, естественно, в зашифрованном виде):

use mysql;
select * from user where User like '%USERNAME%';
# где USERNAME - имя пользователя

2) ставим необходимые права с любым паролем:

GRANT ALL ON dbname.* to dbuser@IP.ADD.RE.SS IDENTIFIED BY 'XYXY';

после запроса, XYXY в зашифрованном виде будет выглядеть длинной строчкой, совсем не похожей на те, что были в п. 1.

3) копируем пароль этого пользователя из пункта 1 и выполняем следующий запрос:

UPDATE user set Password='*ABABABABABABABABABABABABABABABABABABABAB' WHERE Host like 'IP.ADD.RE.SS';
FLUSH PRIVILEGES;

N.B.
Пароль начинается на * (звездочку) и должен в точности соответствовать тому, что был в п.1, для верности можно повторить запрос, вывести список доступов пользователя и убедиться, что пароли совпадают.

Добавить комментарий