Я настраиваю новый сервер MySQL и хочу предоставить ему тот же набор имен пользователей, разрешенных хостов и паролей, что и существующий сервер (который уходит).
Сработает ли просто сделать дамп таблицы пользователей, а затем загрузить ее на новый сервер?
Есть ли способ лучше?
oldserver$ mysqldump mysql > mysql.sql
newserver$ mysql mysql < mysql.sql
newserver$ mysql 'flush privileges;'
Должен сделать это, не забудьте добавить -u $USER
и -p$PASSWORD
как требуется
Я бы посмотрел на Набор инструментов Percona. Описание pt-show-grants
инструмент говорит сам за себя ...
pt-show-grants
извлекает, заказывает и затем распечатывает гранты для учетных записей пользователей MySQL.Зачем тебе это нужно? Причин несколько.
Первый - это простая репликация пользователей с одного сервера на другой; вы можете просто извлечь гранты с первого сервера и направить вывод напрямую на другой сервер.
Второе использование - поместить ваши гранты в систему контроля версий ....
Пока свалка mysql
база данных, вероятно, будет работать, по моему опыту, правильно документируя весь доступ и настраивая его снова с помощью GRANT
заявления намного лучше. Такой способ дает два преимущества:
Принятый ответ (использование mysqldump для резервного копирования таблицы mysql.user) - очень опасный подход, если вы переходите на новую версию сервера.
Я делал это раньше (переносил пользователей с Mysql 4 на Mysql 5.1), а позже у меня возникли проблемы с попыткой предоставить или изменить привилегии пользователям моей базы данных.
Это происходит потому, что структура таблицы mysql.users различается между версиями сервера mysql, как объясняется здесь:
https://dba.stackexchange.com/a/16441/18472
Итак, будьте осторожны, если вы обновляете версию своего сервера. Еще несколько подсказок:
Это уже решено здесь Как я могу экспортировать привилегии из MySQL, а затем импортировать их на новый сервер?
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 root@oldserver:/var/lib/mysql/mysql .
# /etc/init.d/mysql start
так просто запускать команды предоставления. Это похоже на
ПРЕДОСТАВИТЬ ВСЕ в таблице database.table пользователю "@" host ", идентифицированному" password "
так
ПРЕДОСТАВИТЬ ВСЕ в базе данных. * "Jack" @ "localhost", идентифицированному "somepass"