MySQL Перенос пользователей со всеми правами
Перенос пользователей MySQL со всеми назначенными правами к базам.
Шаг 1. Получаем список пользователей
mysql -u root -B -p -e "SELECT user, host FROM mysql.user" |
-u
- пользователь; -B
- batch
, выводит результаты запроса по одному на строке, используя табуляцию, как разделитель; -p
- запрос пароля из stdin
; -e
- команда;
Можно также использовать -N
, чтобы не выводить названия столбцов.
Вывод запроса будет приблизительно следующим:
user host
root 127.0.0.1
root ::1
database1 localhost
database2 localhost
database3 localhost
database4 localhost
|
Шаг 2. Получаем список прав
mysql -u root -p -B -N -e "SHOW GRANTS FOR 'userName'@hostName" |
username
- имя пользователя; hostname
- хост, полученный на предыдущем шаге;
Вывод будет приблизительно следующим:
[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 |
Вводим данные команды на новом сервере и на этом процедура переноса завершена.
Если требуется перенести большое количество пользователей, то можно сделать скрипт, что значительно ускорит процесс.