[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: