Назад | Перейти на главную страницу

Перемещение пользователей MySQL с одного сервера базы данных на другой?

Возможный дубликат:
Как я могу скопировать таблицу пользователей 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';

Этот запрос возвращает

  • 37 для MySQL 5.0
  • 39 для MySQL 5.1
  • 42 для MySQL 5.5.
  • Вы не можете выполнить этот запрос в MySQL 4.x, но запустите 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, если вы хотите сохранить разрешения).