В ряде случаев бывает необходимо скопировать пользователей и их права (привилегии) на другой сервер БД. Типичная ситуация, когда это требуется — подготовка чистого сервера БД в качестве реплики, при этом пользователи берутся с мастера. Гугл предлагает готовым решением Percona Toolkit
, однако, это дополнительно устанавливаемый софт, попробуем обойтись без него. Для этого скрипт, который вытягивает пользователей из базы-источника и формирует sql
-файл для импорта.
#!/bin/sh mysql -e"SELECT DISTINCT CONCAT('SHOW GRANTS FOR ', '\'', user, '\'@\'', host, '\';') AS QUERY FROM mysql.user" | sed '1d' | while read query; do mysql -e"$query" | sed '1d' | awk '{print $0";"}' done echo -e "FLUSH PRIVILEGES;\n";
На выходе получится sql
-код для исполнения на слейве. Естественно, по файлу стоит пройтись вручную и удалить пользователей, которых добавлять не надо.