Fórumok
Ismertek valami egyszerű parancssoros linux scriptet, amivel mysql felhasználókat és jogosultságaikat lehetne exportálni?
A legtöbb helyen a mysql.user és mysql.db táblák mentését ajánlják, de én olyat keresnék, ami például szabványos mysql create és grant pranacsokként menti le az aktuális user és db táblák tartalmát, a mysqldump kimenetéhez hasonlóan. Így például egy másik, már más usereket tartalmazó rendszerbe is könnyen lehetne importálni azokat.
Hozzászólások
"mysqldump kimenetéhez hasonlóan"
Miért nem használod akkor magát a mysqldumpot? Megadhatod neki hogy csak ezt a két táblát dumpolja.
Mert ő olyat szeretne, amit rá lehet tölteni egy másik, már működő SQL szerverre anélkül, hogy ott ID és egyéb ütközésket okozna. Magyarul: nem CREATE TABLE és INSERT parancsokat szeretne, hanem CREATE USER és GRANT parancsokat.
A Google hirtelen az alábbi hasznos ötleteket dobta ki:
https://serverfault.com/questions/8860/how-can-i-export-the-privileges-…
https://www.thegeekdiary.com/mysql-how-to-backup-user-privileges-as-cre…
Amennyiben MySQL 5.7+ verziót használ (és nem pl. MariaDB-t), akkor érdekes lehet még a mysqldump --user opciója.
Úgy tűnik, kompakt megoldás nincs rá, mindenképpen egy kis scriptet kell írnom, ráadásul nem is működhet úgy, hogy csak CREATE USER és GRANT parancsok lesznek a kimenetben, mivel a jelszavak elkódolva tárolódnak. Emiatt - most úgy tűnik - a CREATE USER után majd kell egy UPDATE is, ami az elkódolt jelszót beleírja a mysql.user tábla megfelelő sorába.
Valóban mariadb-t használok, de a --user paraméterről úgy tudtam, az a hozzáférő felhasználót definiálja. Így hirtelen, nem látom, ebben a problémában mit segíthet.
Bocs, elgépeltem: --users, nem pedig --user.
talán nem profi megoldás, de phpmyadminnal tudsz egy sql fájlt exportálni, amiben a felhasználók és a jogaik vannak, azt pedig nyugodtan importálhatod egy másik DB-re (előtte kézzel szoktam kigyomlálni a már szükségtelen usereket/jogokat)
Én korábban az alábbi scriptet írtam erre, de most nézve a kimenetet lehet még nem 100%-os :)
https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html
Aktivan mysql-ezek, de en is mindig tanulok. Epp tegnap futottam bele egy adatbazis masolasba, amire meg nincs automatikus full megoldas. Alapbol dump nem rakja ki a tarolt eljarasokat. Kapcsoloval kirakja, de a definer reszt utolag torolni kell belole hogy mas adatbazis néven importalni lehessen.
Az user pont ilyen, nem az adatbazis része, inkabb a kornyezete. Van ahol az user (es a pass is!) ugyanaz mint az adatbazis (grrrr), de ott sem trivialis hogy @localhost vagy @% a vege. Szoval jellegét tekintve nincs mysql alatt olyan .sql fajl ami egy friss szerver telepites utan az alkalmazashoz szukseges _mindent_ automatkisan beallit. Sztem.
@BCsabaEngine
Fentebb írtam, hogy megoldható, most mutatok egy példát, phpmyadmin -> felhasználói fiókok -> tetszőleges felhasználó(k) kijelölése -> exportálás és íme az eredmény, amit az új (vagy másik) szerveren csak le kell futtatni SQL konzolban:
Pár éve az új szerverre is így migráltam a felhasználókat és a jogaikat.