Próbuję zmusić klienta mysql do połączenia się z serwerem mysql bez konieczności podawania hasła interaktywnie. Podjęte kroki:
1) Najpierw utwórz plik mylogin.cnf
$ mysql_config_editor set --user=<user> --password --host=<host>
Enter password:
2) Plik utworzony pomyślnie:
$ ls -la .mylogin.cnf
-rw-------. 1 urmt urmt 136 Dec 19 11:01 .mylogin.cnf
$ mysql_config_editor print --all
[client]
user = <user>
password = *****
host = <host>
3) Połącz za pomocą klienta mysql
$ mysql <dbname>
ERROR 1045 (28000): Access denied for user '<user>'@'<host>' (using password: NO)
Czy jest gdzieś domyślna wartość / konfiguracja, która powoduje, że klient ignoruje hasło w mylogin.cnf? Właściwości użytkownika i hosta zostały poprawnie odczytane z pliku.
Jestem w stanie połączyć się dobrze, jeśli podam hasło w wierszu poleceń:
$ mysql -p <dbname>
Enter password:
Reading table information...
...
mysql>
Wersja klienta MySQL to 5.6.22, wersja MySQL Server to 5.6.22, zarówno na Oracle Linux 6. Klient i serwer znajdują się na różnych hostach.
Dzięki
-pyour_pass
lub--password=your_pass
w wierszu poleceń (...) Jest to wygodne, ale niepewne ”.użyj następującego polecenia, aby najpierw ustawić ścieżkę logowania
a następnie użyj polecenia poniżej, aby zalogować się do mysql
Pomoc na temat opcji ścieżki logowania mysql można zobaczyć
źródło
Miałem ten sam problem co OP, ale odpowiedzi w tym wątku mnie zdezorientowały. Link Vinaya Mandali faktycznie dla mnie zadziałał. Przesłane tutaj dla jasności.
Mój problem:
Dowodzi to, że
mysql_config_editor
nie obsługuje poprawnie znaków specjalnych w haśle.Rozwiązanie:
Gdy
mysql_config_editor
pojawi się monit o podanie hasła, upewnij się, że otaczasz je podwójnymi cudzysłowami („) . Następnie możesz się zalogować.źródło
Otrzymywałem ten błąd, z wyjątkiem tego, że powiedział (używając hasła: TAK)
Powodem, o którym wspomniał Giovanni, był „#” w haśle. Odkryłem, że obejście polega na wstawianiu cudzysłowów wokół hasła po wyświetleniu monitu. To samo ograniczenie istnieje w przypadku haseł w postaci zwykłego tekstu przy użyciu pliku .my.cnf.
źródło
Odpowiedź Nawaza jest poprawna. Mam niewiele do dodania. Sugeruję wykonanie kilku prób przy użyciu zmiennej środowiskowej MYSQL_TEST_LOGIN_FILE w celu utworzenia nowego pliku konfiguracyjnego, na wypadek gdyby plik domyślny był uszkodzony. Służy również
--no-defaults
do pomijania.cnf
plików. Jeśli hasło zawiera znak#
,mysql login-path
nie działa.źródło
mysql
polecenie tomysql
? Jeśli nie, zmień właścicielamylogin.cnf
i powinnoMam podobny problem jak oryginalny plakat. Podejrzewam, że ma to związek ze znakami w haśle, które nie są odpowiednio szyfrowane / odszyfrowywane.
Aby potwierdzić, spróbuj zmienić hasło na coś prostego i sprawdź, czy problem nie zniknie.
źródło
Miałem ten problem ze skryptem powłoki. Mój skrypt zmieniał wartość $ HOME, co spowodowało, że --login-path = *** wyglądało na ignorowane. Kiedy przestałem zmieniać wartość $ HOME, to zaczęło działać.
źródło
UWAGA, jeśli próbujesz uruchomić użytkownika
path
pod Linuksemroot
- nie możesz tego po prostu użyćsudo
. Musisz zalogować się jako root IERównież, jak wspomniano w innych postach tutaj .. Należy użyć cudzysłowów wokół Twojego
mysql
hasła, jeśli zawiera coś innego niż znaków alfanumerycznych.źródło