Pergunta: MySQL db Migração do servidor (A) para o servidor (B), quais tabelas?

3

Ao migrar um banco de dados MySQL do Servidor (A) para o Servidor (B), quais tabelas devem ser descartadas e migradas para o Servidor (B), incluindo concessões de usuários? Não quero ter que reinserir manualmente as contas de usuário e senhas. Eu gostaria de fazer isso usando um aplicativo de terceiros como Navicat , sem usar o mysqldump. O meu entendimento é que as seguintes tabelas contêm dados da conta de usuário (grant):

mysql > db
mysql > usuário

No entanto, eu li que a tabela mysql não precisa ser migrada do Servidor (A) para o Servidor (B), assim como a tabela information_scheme . Mas, se a tabela mysql não precisar ser migrada, a menos que o comentário esteja incorreto, como faço para migrar minhas informações de concessão de usuário com hosts, nomes de usuário, senhas, etc.

    
por Steve 02.06.2011 / 14:14

3 respostas

1

#!/bin/bash
# adapted from (http://www.pyrosoft.co.uk/blog/2006/10/18/show-grants-for-all-users-on-mysql/)
 ( mysql -pPASSWORD --batch --skip-column-names -e "SELECT user, host FROM user" mysql 
 ) | while read user host
    do
        echo "# $user @ $host"
        mysql -pPASSWORD --batch --skip-column-names -e"SHOW GRANTS FOR '$user'@'$host'"
    done

Esse script "despejará" todas as permissões de usuários e suas senhas com hash. Eu tive resultados mistos da importação de despejos dos bancos de dados mysql e information_schema.

    
por 02.06.2011 / 16:10
0

Gostaria apenas de fazer um mysqldump do (s) banco (s) de dados e, em seguida, espelhar manualmente as permissões para os usuários do banco de dados. Será mais direto e mais fácil de fazer do que tentar descobrir uma maneira de exportar (supondo que seja viável e confiável) o acesso e as senhas do usuário.

    
por 02.06.2011 / 16:24
0

Você precisa migrar bancos de dados, não apenas tabelas. A informação que você recebeu é um pouco incorreta, pois o banco de dados mysql é o que você precisa migrar. Essa é a única que contém todas as suas informações de segurança e elimina a necessidade de reconstruir manualmente esses dados. No entanto, o information_schema é um banco de dados virtual, que é criado toda vez que o MySQL é iniciado, por isso é inútil incomodar com isso.

Sugiro que você use o mysqldump ao invés do Navicat, que não é confiável e pode produzir alguns resultados realmente estranhos e incompletos, enquanto o mysqldump é projetado especificamente para o trabalho.

    
por 03.06.2011 / 15:00