it-swarm-ru.tech

Как я могу скопировать таблицу пользователей MySQL с одного сервера на другой?

Я настраиваю новый сервер MySQL, и я хотел бы дать ему тот же набор имен пользователей, разрешенных хостов и паролей, что и существующему серверу (который уходит).

Будет ли работать просто сделать дамп таблицы пользователей, а затем загрузить его на новый сервер?

Есть ли лучший способ, чем это?

40
Agvorth
oldserver$ mysqldump mysql > mysql.sql
newserver$ mysql mysql < mysql.sql
newserver$ mysql 'flush privileges;'

Должен сделать это, не забудьте добавить -u $USER а также -p$PASSWORD как требуется

34
Dave Cheney

Я хотел бы взглянуть на Percona Toolkit. Описание pt-show-grants инструмент говорит сам за себя ...

pt-show-grants извлекает, заказывает, а затем печатает гранты для учетных записей пользователей MySQL.

Зачем тебе это? Есть несколько причин.

Первый - легко реплицировать пользователей с одного сервера на другой; Вы можете просто извлечь гранты с первого сервера и перенаправить вывод непосредственно на другой сервер.

Второе использование - поместить ваши гранты в систему контроля версий ....

21
Aaron Bush

Хотя дамп базы данных mysql, вероятно, сработает, по моему опыту, правильное документирование всего доступа и его повторная настройка с помощью операторов GRANT намного лучше. Есть два преимущества сделать это таким образом:

  1. Вы поймете безопасность своей базы данных и то, как она реализована.
  2. Вы получите возможность удалить доступ, который больше не требуется.
14
staticsan

Принятый ответ (использование mysqldump для резервного копирования таблицы mysql.user) является очень опасным подходом, если вы переходите на новую версию сервера.

Я делал это в прошлом (перенос пользователей с Mysql 4 на Mysql 5.1), а позже у меня возникли проблемы с попыткой предоставить или изменить привилегии для пользователей моей базы данных.

Это происходит потому, что структура таблиц mysql.users отличается в разных версиях сервера mysql, как описано здесь:

https://dba.stackexchange.com/a/16441/18472

Поэтому будьте осторожны, если вы обновляете версию своего сервера. Еще несколько подсказок здесь:

https://stackoverflow.com/a/13218162/710788

11
abu
11
Bruno Bronosky

mysqldump будет работать, но поскольку база данных mysql использует ISAM, вы можете просто скопировать каталог на новый сервер. Вы найдете это в разных местах, но наиболее распространенным местом для базы данных mysql будет/var/lib/mysql/mysql. Обязательно остановите mysql на новом сервере, удалите старый каталог, скопируйте его и перезапустите. Пример использования стандартных местоположений в качестве root:

# /etc/init.d/mysqld stop
# cd /var/lib/mysql
# mv mysql ../mysql.backup
# rsync -a [email protected]:/var/lib/mysql/mysql .
# /etc/init.d/mysql start
5
Tim

это так просто выполнить команды предоставления. Это похоже на

Предоставьте ВСЕ на database.table "user" @ "Host", идентифицированному "password"

так

GRANT ALL в базе данных. * Для "jack" @ "localhost", идентифицированного как "somepass"

2
Trausti Thor