Re: MariaDB migreren van Debian 9 naar 11
Op 04-05-2022 om 16:28 schreef Geert Stappers:
On Wed, May 04, 2022 at 01:39:08PM +0200, Paul van der Vlis wrote:
Op 04-05-2022 om 13:04 schreef Geert Stappers:
On Wed, May 04, 2022 at 12:40:48PM +0200, Paul van der Vlis wrote:
Op 04-05-2022 om 11:46 schreef Geert Stappers:
On Wed, May 04, 2022 at 11:15:39AM +0200, Paul van der Vlis wrote:
root@niewe-machine:~# ssh root@oude-machine mysqldump --all-databases | mysql
Nu moet het bij mij net andersom, dus vanaf de oude machine.
Waarom?
De oude machine is nogal goed beveiligt, ik kan niet inloggen via SSH van de
nieuwe machine op de oude. Wel andersom.
Oh, vandaar ...
Wellicht is dat wel te realiseren, maar andersom is dus handiger.
Tenminste als het kan.
Misschien tijd om te vertellen wat de eerdere pogingen waren?
Ik heb vooral testjes gedaan om de output van een commando via ssh over te
sturen naar een commando aan de andere kant. Bijvoorbeeld:
cat /etc/hosts | ssh 1.2.3.4 /usr/bin/less
Maar dan krijg ik geen reactie.
Verder heb ik geprobeerd om mysql client te start op de andere machine:
ssh 1.2.3.4 /usr/bin/mysql
Maar ook daar geen reactie.
Hmm, ik merk dat ik wel een reactie krijg op dat laatste commando als ik
"-p" meegeef. Alleen heeft de mysql user root daar geen paswoord en dat vind
ik wel praktisch voor backups etc.
Pardon? (maar beschouw dat als een retorische vraag)
Tegenwoordig wordt in Debian de mariadb root-user gekoppeld aan de unix
socket. Daarom mag de systeem-user root inloggen zonder paswoord en is
dat toch relatief veilig. Zeg het graag als ik me vergis.
Voordeel lijkt mij dat je geen database paswoorden hoeft te hebben
rondslingeren voor bijvoorbeeld backups of scripts die je als root
draait. Een database beschermen tegen root lijkt me ook wat zinloos.
Eerder vandaag, may the fourth, schreef ik dat met
root@oude-machine:~# mysqldump --all-databases | ssh dbusr@nieuwe-machine mysql
zou beginnen. Dat was echter iets te kort door de bocht.
Vooraf aan dat migratie commando heb ik
* een operating system user met naam 'dbusr' of iets dergelijks
* gezien dat `dbusr` een MySQL connectie kan maken ( `mysql`
uitvoeren vanaf shell, zonder password geneuzel )
* getest dat `dbusr` "create database" mag/kan doen
en gecontroleert dat een SSH-oversteek mogelijk is. In deze twee stappen
root@oude-machine:~# cat /etc/hosts | ssh dbusr@nieuwe-machine dd of=/tmp/hosts_file_oude_machine
> dbusr@nieuwe-machine $ cat /tmp/hosts_file_oude_machine ; ls -l
/tmp/hosts_file_oude_machine
Ik vind dd een nogal eng programma om wat mee te spelen, maar wellicht
dat dit inderdaad werkt...
Dat in andere worden:
* kleine stappen
* expliciete usernames gebruiken, 'root' vermijden.
* wegblijven bij interactieve toestand ( wegblijven bij `less`,
die vraagt om toets aanslag,
Aha, zoiets zal dat zijn inderdaad... het mag niet interactief.
weg bij MySQL wachtwoord )
Ik vind je oplossing met een extra user nogal complex voor eenmalig
gebruik om wat data over te zetten.
Uiteindelijk heb ik toch maar een SSH toegang gemaakt vanaf de nieuwe
machine naar de oude. Overzetten databases werkt nu met zoiets, vanaf de
nieuwe server:
ssh root@2.3.4.5 mysqldump --databases data1 data2 | mysql
Het overzetten van de database met de naam "mysql" gaf problemen. Wat
echter bleek te werken is dit (op de nieuwe server in mysql):
DROP TABLE IF EXISTS `mysql`.`global_priv`;
DROP VIEW IF EXISTS `mysql`.`user`;
Raar maar waar... daarna kon ik die mysql database gewoon overzetten.
Zie ook hier:
https://dba.stackexchange.com/questions/266480/mariadb-mysql-all-db-import-table-user-already-exists
Groet,
Paul
--
Paul van der Vlis Linux systeembeheer Groningen
https://vandervlis.nl/
Reply to: