Перенос пользователей в MySQL между серверами

24 марта 2019
5872
mysql

Сначала подключитесь к серверу по SSH от имени пользователя root.

После этого создайте дамп таблицы mysql.user и сохраните в файл users.sql:

mysqldump -p -u root mysql --tables user > users.sql

На этом этапе надо заметить, если вы перемещаете пользователей на другой сервер БД, то копирования таблицы mysql.user будет недостаточно. Это связано с тем, что у некоторых пользователей может быть задано ограничение на доступ к определенным базам данных. А в таблице mysql.user таких данных просто нет.

Поэтому кроме mysql.user нужно скопировать таблицы:

  • mysql.db для разрешений на уровне базы данных
  • mysql.tables_priv для разрешений на уровне таблицы
  • mysql.columns_priv для разрешений на уровне столбцов

Чтобы вручную не сохранять каждую таблицу мы советуем установить набор утилит Percona Toolkit:

apt-get install percona-toolkit

После этого запустите pt-show-grants и сохраните полученный файл в grants.sql

pt-show-grants -uroot -p > grants.sql

При помощи SFTP/FTP/SCP перенесите файлы users.sql и grants.sql со старого на новый сервер.

После этого на новом сервере выполните команды:

mysql -u root -p mysql < users.sql
mysql -u root -p < grants.sql
mysql -u root -p -e 'flush privileges;'

Готово!

Рекомендуемые статьи:

Мы используем файлы cookie для предоставления наших услуг, а также для аналитики и маркетинга. Продолжая просматривать наш веб-сайт, вы соглашаетесь на использование нами файлов cookie.
ОК