Zapisz hasło klienta MySQL lub skonfiguruj hasło bez uwierzytelniania

11

Korzystam z klienta wiersza polecenia mysql i nie chcę podawać hasła przy każdym uruchomieniu klienta. Jakie są moje opcje?

Wyjazd
źródło
Proszę zaakceptować odpowiedzi na niektóre z poprzednich pytań, ponieważ wydaje się, że kilka z tych odpowiedzi było poprawnych rozwiązań - kliknij kontur zaznaczony po lewej stronie odpowiedzi.
Shane Madden,

Odpowiedzi:

15

Utwórz plik o nazwie .my.cnfw katalogu domowym, który wygląda następująco. Upewnij się, że uprawnienia systemu plików są ustawione tak, aby tylko użytkownik będący właścicielem mógł je odczytać (0600).

[client]
host     = localhost
user     = username.
password = thepassword
socket   = /var/run/mysqld/mysqld.sock
#database = mysql

Ponieważ otagowałeś również swoje pytanie mysqldump, powinieneś spojrzeć na to pytanie.

Używanie mysqldump w zadaniu cron bez hasła roota

Aktualizacja (2016-06-29) Jeśli korzystasz z mysql 5.6.6 lub nowszego, powinieneś spojrzeć na narzędzie mysql_config_editor , które umożliwia przechowywanie poświadczeń w zaszyfrowanym pliku. Dzięki Giovanni za to, że mi o tym wspomniał.

Zoredache
źródło
To świetnie, że zadziałało. Thanku
Trip
Jeśli odpowiedź rozwiązała problem, kliknij znacznik wyboru, aby go zaakceptować.
Zoredache
1
Spowoduje to zapisanie hasła jako zwykłego tekstu, co odradzam z punktu widzenia bezpieczeństwa.
Giovanni
@ Giovanni na pewno, chociaż mysql_config_editor, o którym wspomniałeś w swojej odpowiedzi, chociaż użyteczny nie jest dostępny, dopóki nie uruchomisz 5.6.6. Nadal istnieją dziś dystrybucje, które mają starsze wersje.
Zoredache
Ale jak to się robi w systemie Windows?
Wolfpack'08,
9

Możesz użyć tego mysql_config_editornarzędzia do przechowywania danych uwierzytelniających w zaszyfrowanym pliku ścieżki logowania o nazwie .mylogin.cnf.

Aby utworzyć nowy zestaw poświadczeń, uruchom:

mysql_config_editor set --host=db.host.org --user=dbuser --password

i wprowadź hasło po wyświetleniu monitu.

Spowoduje to zapisanie poświadczeń uwierzytelnienia w domyślnej clientścieżce logowania.

Możesz przechowywać wiele danych uwierzytelniających, określając inną --login-pathopcję:

mysql_config_editor set --login-path=db2 --host=db2.host.org --user=dbuser --password

Domyślnie mysqlklient odczytuje [client]i [mysql]grupuje z innych plików opcji, więc odczytuje je również z pliku ścieżki logowania. Z --login-pathopcją programy klienckie dodatkowo odczytują nazwaną ścieżkę logowania z pliku ścieżki logowania. Grupy opcji odczytane z innych plików opcji pozostają takie same. Rozważ to polecenie:

mysql --login-path=db2

mysqlKlient czyta [client]i [mysql]innych plików opcję, a [client], [mysql]oraz [mypath]z pliku ścieżki logowania.

Aby wydrukować wszystkie informacje zapisane w pliku konfiguracyjnym, uruchom:

mysql_config_editor print --all=true

Więcej informacji o narzędziu można znaleźć na stronie „mysql_config_editor - Narzędzie konfiguracji MySQL” .

Giovanni
źródło
2

Nie wolno nam udawać, że plik .mylogin.cnf jest w ogóle bezpieczny, ponieważ mogę użyć my_print_defaults -s [use your login-path]go, aby hasło pojawiło się jako zwykły tekst. Dlatego MariaDB nie obsługuje tego podejścia polegającego na „zabezpieczeniu przez zaciemnienie”.

Mark Butler
źródło
Jaka jest zatem odpowiedź na to pytanie?
Pierre.Vriens
0

Istnieje inny sposób, ortogonalny w stosunku do wyżej wymienionych metod, ale może to stanowić zagrożenie bezpieczeństwa, jeśli ktoś ogląda monitor, LUB jeśli zapisujesz swoją historię .

Niemniej jednak jest to opcja, która zapobiegnie wyświetlaniu monitów, i taka, której używam w obrazach dokerów wyrzucanych i takie ...

mysql -u YOUR_USER --password=YOUR_PASSWORD_HERE your_database -e "your query" etc.

Nie pojawi się monit, możesz ustawić tymczasowy alias w powłoce, jeśli chcesz.

Używaj ostrożnie.

mysql Ver 14.14 Distrib 5.5.61-38.13, dla debian-linux-gnu (x86_64) przy użyciu readline 5.1

tjb
źródło