Как скопировать полномочия пользователя с MySQL?

Если Вы технически склонны, Вы могли бы создать BART (Windows PE) CD, который они могли просто вставить и загрузиться прочь. Затем создайте пакетный файл, который загрузил обновленные определения вируса/шпионского ПО Карте памяти. Таким образом, идея состояла в том, что они выполнят пакетный файл для обновления ключа, затем перезагрузка с CD в диске.

BART является хорошей опцией, потому что он может на самом деле удалить руткиты, шпионское ПО, вирусы, и т.д. поскольку установка Windows компьютера не работает. Потрясающий CD Начальной загрузки для Windows (UBCD) также имеет много инструментов включая дефрагментатор, который работает вполне хорошо.

12
задан 8 August 2013 в 07:17
3 ответа

Сценарий как это будет использовать mysql cli клиент для распечатывания серии операторов предоставления, которые необходимо было бы использовать для воссоздания учетных записей пользователей. Эта команда будет работать лучше всего, если Вам сохранят Ваши учетные данные базы данных в Вас .my.cnf

#!/bin/bash
# adapted from (http://www.pyrosoft.co.uk/blog/2006/10/18/show-grants-for-all-users-on-mysql/)
(
 mysql --batch --skip-column-names -e "SELECT user, host FROM user" mysql 
) | while read user host
do
  echo "# $user @ $host"
  mysql --batch --skip-column-names -e"SHOW GRANTS FOR '$user'@'$host'"
done

Если Вы спрыгиваете с одной версии mysql другому, можно хотеть использовать это вместо просто дамп mysql базы данных. Схема mysql базы данных действительно иногда становится обновленной.

Это также позволит Вам привередливо выбирать учетные записи, которые Вы хотите воссоздать, если бы существует некоторый хлам, который требуется устранить.


Я недавно использовал это на пользователе, который включал пробелы в имена, которые перепутали read, так как IFS по умолчанию включает пробел как разделитель. Моя новая и улучшенная команда, которая, казалось, была работой лучше над системами странные имена пользователей.

IFS=$'\t'; while read user host; do
  echo "user:$user host:$host"
  mysql --batch --skip-column-names -e"SHOW GRANTS FOR '$user'@'$host'"
  echo ""
done < <(mysql --batch --skip-column-names -e "SELECT user, host FROM mysql.user")
16
ответ дан 2 December 2019 в 21:33

Я полагаю, что необходимо смочь переместить эти данные путем резервного копирования и восстановления mysql база данных.

2
ответ дан 2 December 2019 в 21:33
  • 1
    В особенности mysql.user таблица –  Coops 23 January 2010 в 11:00
  • 2
    Необходимо удостовериться, что оба экземпляра MySQL выполняют ту же основную версию, иначе you' ll должен запустить скрипты обновления, связанные целевым сервером MySQL. –  Maxwell 23 January 2010 в 12:44

This will create a SHOW GRANTS; file for every user.

Then, echo each user's SHOW GRANTS; and append a semicolon to every line.

MYSQL_CONN="-uroot -prootpassword"
SQLSTMT="SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';')"
SQLSTMT="${SQLSTMT} FROM mysql.user WHERE user<>''"
mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" > /tmp/ShowGrants.sql
mysql ${MYSQL_CONN} -ANe < /tmp/ShowGrants.sql | sed 's/$/;/g' > MySQLUserGrants.sql
rm -f /tmp/ShowGrants.sql

You can also download and use these tools to do the same thing:

Give it a Try !!!

3
ответ дан 2 December 2019 в 21:33

Теги

Похожие вопросы