Перенос пользователей MySQL со всеми правами

Перенос пользователей MySQL со всеми правами

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Перенос пользователей MySQL со всеми назначенными правами к базам.

Шаг 1. Получаем список пользователей

1
mysql -u root -B -p -e "SELECT user, host FROM mysql.user"

-u - пользователь;
-B - batch, выводит результаты запроса по одному на строке, используя табуляцию, как разделитель;
-p - запрос пароля из stdin;
-e - команда;

Можно также использовать -N, чтобы не выводить названия столбцов.

Вывод запроса будет приблизительно следующим:

1
2
3
4
5
6
7
user    host
root 127.0.0.1
root ::1
database1 localhost
database2 localhost
database3 localhost
database4 localhost

Шаг 2. Получаем список прав

1
mysql -u root -p -B -N -e "SHOW GRANTS FOR 'userName'@hostName"

username - имя пользователя;
hostname - хост, полученный на предыдущем шаге;

Вывод будет приблизительно следующим:

1
2
3
4
[root@localhost ~]# mysql -u root -p -B -N -e "SHOW GRANTS FOR 'root'@localhost"
Enter password:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*5FNF5A45F36FE0C09FE6226B4DB3AEE8J0FYT4CB' WITH GRANT OPTION
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION

Вводим данные команды на новом сервере и на этом процедура переноса завершена.
Если требуется перенести большое количество пользователей, то можно сделать скрипт, что значительно ускорит процесс.