Возможный дубликат:
Как я могу скопировать таблицу пользователей MySQL с одного сервера на другой?
У меня есть сервер MySQL с ок. 6000 пользователей MySQL внутри. Сейчас я настраиваю лучший сервер MySQL на другом физическом сервере, и мне нужно перенести эти 6000 пользователей MySQL со старого сервера на новый. Как я могу это сделать?
Важно то, что разрешения и пароли не должны меняться.
Выгрузите таблицу mysql.user (и, возможно, таблицу mysql.db), затем замените любые конкретные ссылки на имя старого хоста именем нового хоста. Импортируйте в новую базу данных хоста и сбросьте привилегии.
Это не сложно, правда?
Имейте в виду, что mysql.user различается между основными выпусками.
select count(1) from information_schema.columns
where table_schema='mysql' and table_name='user';
Этот запрос возвращает
desc mysql.user
и вы увидите 31 столбец.На самом деле существует два способа безопасного переноса пользователей из одной базы данных в другую, независимо от версии MySQL.
ОПЦИЯ 1 : Использование мк-шоу-гранты (Скоро будет называться pt-show-grants от Percona Toolkit)
Это выгружает все MySQL Grants в виде операторов SQL, которые полностью переносимы на любой экземпляр MySQL 5.x.
ВАРИАНТ 2 : Выполните эти команды (Моя личная эмуляция того, что делает mk-show-grants)
mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql
Полученный MySQLUserGrants.sql из любого варианта может быть просто выполнен, и таблицы предоставления будут правильно заполнены.
Вы можете делать то, что объясняет symcbean с помощью phpMyAdmin, если хотите. Перейдите на вкладку экспорта и выберите экспорт базы данных mysql (с user
таблица И db
table, если вы хотите сохранить разрешения).