вторник, 24 марта 2015 г.

Перенос пользователей Mysql

на сервере с которого нужно перенести пользователей создаем хранимую процедуру:
CREATE DEFINER=`alexk`@`%` PROCEDURE `showGrants`()
  LANGUAGE SQL
  NOT DETERMINISTIC
  CONTAINS SQL
  SQL SECURITY DEFINER
  COMMENT ''
BEGIN
  DECLARE v VARCHAR(64) CHARACTER SET utf8;
  DECLARE c CURSOR FOR
  SELECT DISTINCT CONCAT(
  'SHOW GRANTS FOR ''', user, '''@''', host, ''';'
  ) AS query FROM mysql.user;
  DECLARE EXIT HANDLER FOR NOT FOUND BEGIN END;
  OPEN c;
  WHILE TRUE DO
  FETCH c INTO v;
  SET @v = v;
  PREPARE stmt FROM @v;
  EXECUTE stmt;
  END WHILE;
  CLOSE c;
END

после чего выполняем её в консоли и записываем в файл:
mysql -h <host> -u <user> -b <db> -p -e "call showGrants" > grants

И подготавливаем файл для выполнения в mysql:
cat grants | awk '{if ($1 != "Grants") print $0,";"}' > grants

Заливаем в базу:
cat grants | mysql -h <host> -u <user> -p

Комментариев нет:

Отправить комментарий