Lorsque vous migrez ou synchronisez des données vers une base de données de destination, vous devez généralement recréer manuellement tous les comptes de la base de données source. Cette opération est fastidieuse, requiert une connaissance approfondie de la base de données et expose au risque d'oublis. Data Transmission Service (DTS) automatise ce processus en migrant les comptes de la base de données source, y compris leurs mots de passe et leurs privilèges, vers la base de données de destination dans le cadre de la tâche de migration ou de synchronisation.
Prérequis
Avant de commencer, assurez-vous que :
Les comptes de base de données source et de destination utilisés dans la tâche DTS disposent des privilèges requis. Consultez Privilèges requis pour connaître les commandes GRANT exactes.
Schema Migration ou Schema Synchronization est sélectionné comme type de migration ou de synchronisation. Autrement dit, à l'étape Configure Objects and Advanced Settings de l'assistant de création de tâche, Schema Synchronization est sélectionné pour le paramètre Synchronization Types, ou Schema Migration est sélectionné pour le paramètre Migration Types.
Bases de données prises en charge
Les bases de données MySQL peuvent être des instances ApsaraDB RDS for MySQL ou des bases de données MySQL autogérées.
| Base de données source | Base de données de destination |
|---|---|
| MySQL | MySQL, PolarDB for MySQL |
| PolarDB for MySQL | MySQL, PolarDB for MySQL |
Privilèges requis
Avant d'exécuter la migration des comptes, accordez les privilèges suivants aux comptes de la tâche DTS pour les bases de données source et de destination.
Base de données source
Exécutez les commandes suivantes à l'aide d'un compte privilégié. Remplacez user par le compte que vous utilisez pour configurer la tâche DTS.
grant SELECT on mysql.user to user@'%';
grant SELECT on mysql.db to user@'%';
grant SELECT on mysql.columns_priv to user@'%';
grant SELECT on mysql.tables_priv to user@'%';
Base de données de destination
Exécutez les commandes suivantes à l'aide d'un compte privilégié. Remplacez user par le compte que vous utilisez pour configurer la tâche DTS.
grant SELECT on mysql.user to user@'%';
grant CREATE USER on *.* to user@'%';
grant GRANT OPTION on *.* to user@'%';
Activer la migration des comptes
À l'étape Advanced Settings de l'assistant de création de tâche, définissez Whether to Migrate Accounts sur Yes.
-
Sélectionnez les comptes à migrer.
Les noms de compte suivent le format
<username>@<host>, où<host>correspond à l'hôte depuis lequel le compte peut se connecter. Terminez la configuration restante de la tâche. Pour plus de détails, consultez Présentation des scénarios de synchronisation des données ou Présentation des scénarios de migration des données.
Résultats de la migration
Une fois la tâche exécutée, chaque compte présente l'un des résultats suivants :
Migrated : Le compte et tous ses privilèges ont été entièrement migrés vers la base de données de destination.
Not migrated : Le compte a été ignoré. Pour afficher les détails, accédez à l'onglet User_Privilege du module Schema Migration de votre tâche DTS. Les comptes qui existent déjà dans la base de données de destination sont répertoriés comme des comptes migrés avec l'annotation
user already exists. Pour toutes les conditions empêchant la migration, consultez Limites.
Limites
Les conditions suivantes empêchent la migration des comptes ou affectent le comportement de la migration. Vérifiez les conditions applicables à votre version de base de données et à vos types de comptes avant d'exécuter la tâche.
Version de la base de données de destination
Si la base de données de destination est une instance MySQL 5.6 ou un cluster PolarDB for MySQL, la migration des comptes n'est pas prise en charge.
Restrictions pour MySQL 8.0 en source
Si la base de données source est MySQL 8.0, les comptes dotés de privilèges dynamiques ne peuvent pas être migrés.
Restrictions liées aux privilèges
Les comptes disposant des privilèges RELOAD, CREATE TABLESPACE, FILE ou ALL PRIVILEGES ne peuvent pas être migrés vers une base de données de destination MySQL ou PolarDB for MySQL.
Restrictions liées au type de compte
Les comptes système (root, mysql.infoschema, mysql.session, mysql.sys) et les comptes intégrés ne peuvent pas être migrés. La sélection de ces comptes entraîne le renvoi par la tâche DTS du message
Access denied for user 'XXXX'.Les comptes qui existent déjà dans la base de données de destination ne peuvent pas être migrés. Si une tâche DTS est redémarrée ou si plusieurs tâches DTS sont en cours d'exécution, les comptes à migrer peuvent déjà exister dans la base de données de destination.
Les comptes non autorisés ne peuvent pas être migrés.
Comportement après la migration
Les mots de passe des comptes ne peuvent pas être réinitialisés pendant la migration.
Les comptes privilégiés deviennent des comptes standard dans la base de données de destination et perdent les permissions de gestion de la base de données.
Il est recommandé de ne pas migrer les comptes de l'instance de base de données Alibaba Cloud de destination qui sont accessibles uniquement via
localhostou127.0.0.1, car ces comptes ne prennent pas en charge la migration des données.
FAQ
Pourquoi ne puis-je pas sélectionner un compte ?
Le compte est soit un compte système, soit un compte portant le même nom existe déjà dans la base de données de destination.
Pourquoi la liste des comptes est-elle vide ?
Les comptes de la tâche DTS ne disposent pas des privilèges requis sur la base de données source ou de destination. Vérifiez les privilèges à l'aide des commandes GRANT indiquées dans Privilèges requis.