На этот вопрос уже есть ответ:
Я настраиваю новый сервер 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
операторы намного лучше. Существует два преимущества для выполнения его этот путь:
Это было уже решено здесь, Как я могу экспортировать полномочия из MySQL и затем импортировать к новому серверу?
mysqldump будет работать, но так как mysql база данных использует ISAM, можно просто скопировать каталог в новый сервер. Вы найдете это в различных местах, но наиболее распространенное местоположение для mysql базы данных будет/var/lib/mysql/mysql. Обязательно остановите mysql на новом сервере, переместите старый каталог из пути, скопируйте каталог и перезапуск. Пример с помощью стандартных местоположений в качестве корня:
# /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 "пользователю" "хост", определенный "паролем"
так
ПРЕДОСТАВЬТЕ ВСЕ на базе данных.* для "поднимания" "localhost" определенный "somepass"
Принятый ответ (использование mysqldump для резервного копирования таблицы mysql.user) - очень опасный подход, если вы переходите на новую версию сервера.
Я делал это в прошлом (миграция пользователей от Mysql 4 до Mysql 5.1), а позже у меня возникли проблемы с попыткой предоставить или изменить привилегии пользователям моей базы данных.
Это происходит потому, что структура таблицы mysql.users различается между версиями сервера mysql, как объясняется здесь:
https: //dba.stackexchange.com / a / 16441/18472
Итак, будьте осторожны, если вы обновляете версию своего сервера. Еще несколько советов: