sviluppo-web-qa.it

Come posso copiare la tabella degli utenti MySQL da un server a un altro?

Sto configurando un nuovo server MySQL e vorrei assegnargli lo stesso set di nomi utente, host consentiti e password di un server esistente (che sta scomparendo).

Funzionerebbe semplicemente fare un dump della tabella degli utenti e poi caricarlo sul nuovo server?

C'è un modo migliore di quello?

40
Agvorth
oldserver$ mysqldump mysql > mysql.sql
newserver$ mysql mysql < mysql.sql
newserver$ mysql 'flush privileges;'

Dovresti farlo, ricordati di aggiungere -u $USER e -p$PASSWORD come richiesto

34
Dave Cheney

Vorrei dare un'occhiata a Percona Toolkit. La descrizione del pt-show-grants lo strumento dice tutto ...

pt-show-grants estrae, ordina e quindi stampa le sovvenzioni per gli account utente MySQL.

Perchè vorresti questo? Ci sono diverse ragioni.

Il primo è replicare facilmente gli utenti da un server all'altro; puoi semplicemente estrarre le sovvenzioni dal primo server e convogliare l'output direttamente in un altro server.

Il secondo uso è mettere le tue sovvenzioni nel controllo della versione ....

21
Aaron Bush

Mentre un dump del database mysql probabilmente funzionerebbe, nella mia esperienza, documentare correttamente tutto l'accesso e configurarlo di nuovo con le istruzioni GRANT è molto meglio. Ci sono due vantaggi nel farlo in questo modo:

  1. Capirai la sicurezza del tuo database e come viene implementata.
  2. Potrai rimuovere l'accesso che non è più necessario.
14
staticsan

La risposta accettata (utilizzando mysqldump per eseguire il backup della tabella mysql.user) è un approccio molto pericoloso se si esegue la migrazione a una nuova versione del server.

L'ho fatto in passato (migrazione degli utenti da Mysql 4 a Mysql 5.1), e in seguito ho avuto problemi nel tentativo di concedere o modificare i privilegi agli utenti del mio database.

Ciò accade perché la struttura della tabella mysql.users differisce tra le versioni del server mysql, come spiegato qui:

https://dba.stackexchange.com/a/16441/18472

Quindi, fai attenzione se stai aggiornando la versione del tuo server. Altri suggerimenti qui:

https://stackoverflow.com/a/13218162/710788

11
abu
11
Bruno Bronosky

mysqldump funzionerà, ma poiché il database mysql utilizza ISAM, puoi semplicemente copiare la directory sul nuovo server. Lo troverai in luoghi diversi, ma il percorso più comune per il database mysql sarà/var/lib/mysql/mysql. Assicurati di arrestare mysql sul nuovo server, spostare la vecchia directory di mezzo, copiare la directory e riavviare. Un esempio che utilizza le posizioni standard come root:

# /etc/init.d/mysqld stop
# cd /var/lib/mysql
# mv mysql ../mysql.backup
# rsync -a [email protected]:/var/lib/mysql/mysql .
# /etc/init.d/mysql start
5
Tim

è così semplice eseguire comandi grant. È come

Concedere tutto su database.table a "utente" @ "Host" identificato da "password"

così

Concedi tutto al database. * A "jack" @ "localhost" identificato da "somepass"

2
Trausti Thor