Восстановление прав доступа к БД можно столкнуться при обычной реализации своих прямых обязанностей, не обязательно это должен быть взлом. Повторю, как можно сбросить пароль пользователя root и назначить права доступа.

1. Останавливаем сервер БД
Linux:

./etc/init.d/mysql stop

FreeBSD

/usr/local/etc/rc.d/mysql-server stop

2. Запускаем БД с игнорированием таблицы прав доступа

mysqld_safe --skip-grant-tables &

3. Авторизуемся из под пользователя root к БД

mysql -u root mysql

4. Вносим изменения на прав доступа.
В MySQL конфигурация прав доступа хранится в базе данных mysql (на предыдущем шаге можно заметить что при авторизации мы подключаемся сразу к ней), в таблице user.
Назначить права доступа можно двумя способами.

  • Первый: с помощью команд
  • GRANT SELECT ON db_base.* TO db_user@'localhost' IDENTIFIED BY 'db_passwd' WITH GRANT OPTION;

    (дать пользователю db_user при авторизации по паролю db_passwd с локальной машины на все таблицы базы данных db_base права только на выборку данный)

    GRANT SELECT, INSERT, DELETE ON db_base.* TO db_user@'localhost' IDENTIFIED BY 'db_passwd' WITH GRANT OPTION;

    (пользователю db_user при авторизации на локальной машине по паролю db_passwd иметь доступ ко всем таблицам базы данных db_base с правами делать выборку, вставку, удаление)

    GRANT ALL PRIVILEGES ON db_base.* TO db_user @'%' IDENTIFIED BY 'db_passwd' WITH GRANT OPTION;

    (назначить все права доступа для пользователя db_user со всех хостов по паролю db_passwd на все таблицы базы данных db_base)

  • Второй: сделать запись в таблицу user базы данных mysql
  • Выполняем команду, которая описывает таблицу user

    describe user;

    и в соответствии с полями вносим свои правки запросами Insert, Select, Delete иди Update.
    Приведу только пример как вносить изменение в поле Password, там нам нужна будет функция PASSWORD :)

    UPDATE user SET Password=PASSWORD('any_key') WHERE User = Employe;

    (установить пароль any_key для пользователя Employe)
    Не забываем после внесения изменений выполнить команду применения привилегий

    flush privileges;
    Tagged with:  

    2 Responses to Сброс пароля и назначение прав в MySQL

    1. «flush privileges» после GRANT делать не нужно, оно требуется только после ручной правки таблиц mysql.user, mysql.db (что Oracle делать, между прочим, не рекомендует).

    2. admin:

      Согласен!

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

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>