Por favor, tenha em mente que o mysql.user é diferente entre versões principais.
select count(1) from information_schema.columns
where table_schema='mysql' and table_name='user';
Esta consulta traz de volta
- 37 para o MySQL 5.0
- 39 para o MySQL 5.1
- 42 para o MySQL 5.5.
- Você não pode executar essa consulta no MySQL 4.x, mas execute
desc mysql.user
e você verá 31 colunas.
Na verdade, existem duas maneiras de transportar usuários com segurança de um banco de dados para outro, independentemente da versão do MySQL.
OPÇÃO 1 : use mk-show-grants strong> (Em breve será chamado pt-show-grants do Percona Toolkit)
Isso despeja todos os MySQL Grants como instruções SQL, que são completamente portáveis para qualquer instância do MySQL 5.x.
OPÇÃO 2 : Execute estes comandos (minha emulação pessoal do que mk-show-grants faz)
mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql
O MySQLUserGrants.sql resultante de qualquer opção pode simplesmente ser executado e as tabelas de permissões são preenchidas corretamente.