Ponieważ używasz Ubuntu, wystarczy tylko dodać plik do katalogu domowego, a to wyłączy monit o podanie hasła mysqldump. Odbywa się to poprzez utworzenie pliku ~/.my.cnf
(uprawnienia muszą wynosić 600).
Dodaj to do pliku .my.cnf
[mysqldump]
user=mysqluser
password=secret
Pozwala to połączyć się jako użytkownik MySQL, który wymaga hasła bez konieczności jego wprowadzania. Nie potrzebujesz nawet -p lub --password.
Bardzo przydatny do pisania skryptów poleceń mysql i mysqldump.
Kroki prowadzące do osiągnięcia tego celu można znaleźć w tym linku .
Alternatywnie możesz użyć następującego polecenia:
mysqldump -u [user name] -p[password] [database name] > [dump file]
ale należy pamiętać, że jest on z natury niepewny, ponieważ całe polecenie (w tym hasło) może być przeglądane przez każdego innego użytkownika w systemie podczas działania zrzutu, za pomocą prostego ps ax
polecenia.
--defaults-file
. Jak `mysqldump --defaults-file = my_other.cnf --print-defaults`~/.my.cnf
. Zobacz stackoverflow.com/a/14653239/470749 . MySql spodziewał się, że mój będziec:\wamp\bin\mysql\mysql5.5.24\my.cnf
. Więc stworzyłem tam plik. Ponowne uruchomienie MySQL nie było konieczne; zadziałało natychmiast dla mojego następnego mysqldump.GRANT LOCK TABLES, SELECT ON *.* TO 'BACKUPUSER'@'%' IDENTIFIED BY 'PASSWORD';
Dodanie do odpowiedzi @ Frankline:
-p
Opcja musi być wykluczony z poleceniem, aby używać hasła w pliku konfiguracyjnym.Poprawny:
mysqldump –u my_username my_db > my_db.sql
Źle:
mysqldump –u my_username -p my_db > my_db.sql
.my.cnf
może pominąć nazwę użytkownika.Jeśli
.my.cnf
plik nie znajduje się w domyślnej lokalizacji imysqldump
go nie widzi, określ go za pomocą--defaults-file
.mysqldump --defaults-file=/path-to-file/.my.cnf –u my_username my_db > my_db.sql
źródło
Kilka odpowiedzi wspomina o umieszczeniu hasła w pliku konfiguracyjnym.
Alternatywnie możesz to zrobić ze skryptu
export MYSQL_PWD=yourverysecretpassword
.Zaletą tej metody w porównaniu z użyciem pliku konfiguracyjnego jest to, że nie potrzebujesz osobnego pliku konfiguracyjnego do synchronizacji ze skryptem. Masz tylko skrypt do utrzymania.
Nie ma wady tej metody.
Hasło nie jest widoczne dla innych użytkowników w systemie (byłoby widoczne, gdyby znajdowało się w wierszu poleceń). Zmienne środowiskowe są widoczne tylko dla użytkownika uruchamiającego komendę mysql i root.
Hasło będzie również widoczne dla każdego, kto może odczytać sam skrypt, więc upewnij się, że sam skrypt jest chroniony. Nie różni się to niczym od ochrony pliku konfiguracyjnego. Możesz nadal podać hasło z oddzielnego pliku, jeśli chcesz, aby skrypt był publicznie czytelny (
export MYSQL_PWD=$(cat /root/mysql_password)
na przykład). Nadal łatwiej jest wyeksportować zmienną niż zbudować plik konfiguracyjny.Na przykład,
źródło
export MYSQL_PWD=...
Czy nie pojawi się na liście procesów. Nawet przez ułamek sekundy. Wynika to z tego, żeexport
polecenie jest (i musi być) wbudowane w powłokę. Zatem powłoka nie rozwidla / nie wykonuje procesu z argumentem polecenia, jeśli wykonasz go w swojej powłoce.Aby użyć pliku znajdującego się w dowolnym miejscu systemu operacyjnego, użyj
--defaults-extra-file
np .:Uwaga:
.sqlpwd
to tylko przykładowa nazwa pliku. Możesz użyć, co chcesz.Uwaga: MySQL automatycznie sprawdzi,
~/.my.cnf
którego można użyć zamiast--defaults-extra-file
Jeśli używasz CRON jak ja, spróbuj tego!
Wymagane pozwolenie i zalecana własność
.sqlpwd
zawartość:Inne przykłady do przekazania
.cnf
lub.sqlpwd
Jeśli chcesz automatycznie zalogować się do bazy danych, potrzebujesz
[mysql]
na przykład wpisu.Możesz teraz utworzyć alias, który automatycznie łączy cię z bazą danych
Możesz także wpisać hasło
.sqlpwd
i przekazać nazwę użytkownika za pomocą skryptu / cli. Nie jestem pewien, czy poprawi to bezpieczeństwo, czy nie, to zupełnie inne pytanie.Dla kompletności stwierdzę, że możesz wykonać następujące czynności, ale jest to bardzo niepewne i nigdy nie powinno być używane w środowisku produkcyjnym:
Uwaga: NIE ma spacji między -p a hasłem.
Np.
-pPassWord
Jest poprawny, podczas gdy-p Password
jest niepoprawny.źródło
Tak to jest bardzo proste .... tylko w jednym wierszu poleceń magicznym nie więcej
i zrobione :)
źródło
Dla mnie, używając MariaDB, musiałem to zrobić: dodaj plik
~/.my.cnf
i zmień uprawnienia, wykonującchmod 600 ~/.my.cnf
. Następnie dodaj swoje dane do pliku. Magicznym elementem, którego mi brakowało, było to, że hasło musi znajdować się pod blokiem klienta (ref: docs ), tak:Jeśli zdarzy ci się tu przyjechać i szukać sposobu na wykonanie mysqldump z MariaDB. Umieść hasło pod blokiem [klienta], a następnie użytkownika pod blokiem [mysqldump].
źródło
[mysqldump]
sekcji i zadziałało bez żadnych problemów. Ubuntu 18.04 LTSOto rozwiązanie dla Dockera w skrypcie / bin / sh:
Zamień
[MYSQL_CONTAINER_NAME]
i upewnij się, że zmienna środowiskowaMYSQL_ROOT_PASSWORD
jest ustawiona w twoim kontenerze.Mam nadzieję, że to ci pomoże, bo może mi pomóc!
źródło
Mam następujące.
/ etc / mysqlpwd
Z następującym aliasem.
Aby wykonać przywracanie, używam po prostu:
źródło
co z --password = "" działało dla mnie w wersji 5.1.51
źródło
--password=xxx
w wierszu poleceń spowoduje, że hasło widoczne dla każdego z umiejętnością czytania proc (czy pełną ps) - co jest dość domyślna.Zdecydowanie myślę, że lepiej i bezpieczniej byłoby umieścić pełną linię cmd w głównym pliku crontab, z listami uwierzytelniającymi. Przynajmniej edycja crontab jest ograniczona (czytelna) dla kogoś, kto już zna hasło ... więc nie martw się, aby pokazać je zwykłym tekstem ...
Jeśli potrzebujesz czegoś więcej niż zwykłego mysqldump ... po prostu umieść skrypt bash, który akceptuje credentails jako parametry i wykonuje wszystkie udogodnienia wewnątrz ...
Plik bas w prosty sposób
W Crontab:
źródło
Możesz określić hasło w wierszu poleceń w następujący sposób:
Opcje mysqldump uwzględniają wielkość liter!
źródło
mysqldump -u root -pmypassword