oldserver$ mysqldump mysql > mysql.sql
newserver$ mysql mysql < mysql.sql
newserver$ mysql 'flush privileges;'
Se necessário, lembre-se de adicionar -u $USER
e -p$PASSWORD
conforme necessário
Estou montando um novo servidor MySQL e gostaria de dar a ele o mesmo conjunto de nomes de usuário, hosts permitidos e senhas como um servidor existente (que está desaparecendo).
Funcionaria apenas para fazer um despejo da tabela de usuários e, em seguida, carregá-lo no novo servidor?
Existe uma maneira melhor do que isso?
Eu daria uma olhada no Percona Toolkit . A descrição da ferramenta pt-show-grants
diz tudo ...
pt-show-grants
extracts, orders, and then prints grants for MySQL user accounts.Why would you want this? There are several reasons.
The first is to easily replicate users from one server to another; you can simply extract the grants from the first server and pipe the output directly into another server.
The second use is to place your grants into version control....
Embora um dump do banco de dados mysql
provavelmente funcione, na minha experiência, documentar corretamente todo o acesso e configurá-lo novamente com GRANT
é muito melhor. Há dois benefícios em fazer isso da seguinte maneira:
Isso já foi resolvido aqui Como posso exportar os privilégios do MySQL e depois importar para um novo servidor?
A resposta aceita (usando o mysqldump para fazer backup da tabela mysql.user) é uma abordagem muito perigosa se você estiver migrando para uma nova versão do servidor.
Eu fiz isso no passado (migrando usuários do Mysql 4 para o Mysql 5.1), e mais tarde tive problemas ao tentar conceder ou modificar privilégios aos usuários do meu banco de dados.
Isso acontece porque a estrutura da tabela mysql.users difere entre as versões do servidor mysql, conforme explicado aqui:
Portanto, tome cuidado se você estiver atualizando a versão do seu servidor. Mais algumas dicas aqui:
O mysqldump funcionará, mas como o banco de dados mysql usa o ISAM, você pode simplesmente copiar o diretório para o novo servidor. Você encontrará isso em lugares diferentes, mas o local mais comum para o banco de dados mysql será / var / lib / mysql / mysql. Certifique-se de parar o mysql no novo servidor, mova o diretório antigo para fora do caminho, copie o diretório e reinicie. Um exemplo usando locais padrão como 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
é tão simples executar comandos de concessão. É como
GRANT ALL no database.table para "user" @ "host" identificado por "password"
então
GRANT ALL no banco de dados. * para "jack" @ "localhost" identificado por "somepass"