Włącz dostęp do MySQL bez hasła


15

Jak mogę usunąć moje hasło do MySQL? Nie chcę mieć hasła do połączenia z bazą danych. Na moim serwerze działa Ubuntu.


W interesie, dlaczego nie chcesz hasła?
John Gardeniers,

Na przykład podczas uruchamiania programu „dpkg-reconfigure phpmyadmin” występują błędy. Zatrzymuje się na błędzie 1045 z odmową dostępu root @ localhost „hasło: nie” kończące się.
Lacek

Odpowiedzi:


29

Osobiście uważam, że zamiast tego lepiej jest ustawić hasło i zapisać je w katalogu /root/.my.cnf:

Pierwszy:

mysqladmin -u root password 'asdfghjkl'

Następnie edytuj plik root .my.cnf:

[client]
password = asdfghjkl

Upewnij się, że chmod 0600 .my.cnf.

Teraz masz hasło, ale nie jest ono już wyświetlane. Moja domyślna instalacja serwera MySQL to całkowicie losowe, unikalne hasło dla każdego serwera MySQL, zapisane w pliku .my.cnf w ten sposób.


1
Zdecydowanie zgadzam się z ustawieniem twojego środowiska do automatycznego uwierzytelnienia zamiast usuwania hasła.
Zoredache,

2
Możesz potrzebować cytatów wokół tego hasła w .my.cnf. Bez mnie to nie działało.
user67641,

1
@ user67641: Może zależeć od wersji i tego, co znajduje się w haśle ... Moje wszystkie są długimi ciągami znaków alfanumerycznych (bez znaków specjalnych) i nie wymagały cudzysłowów.
freiheit 12.03.11

2
Jeśli chcesz utworzyć plik /root/.my.cnf, warto jawnie ustawić na nim uprawnienia 0600, aby mieć pewność, że żaden inny użytkownik nie będzie mógł węszyć. Przez większość czasu normalni użytkownicy nie mogą zejść do katalogu / root, ale dodatkowa paranoja jest prawie zawsze uzasadniona.
Dale Anderson

Brak mv ./+%Y%m%d. $ Db.sql $ OUTPUT` między mysqldump i gzip
Siddharth

9

Jeśli masz ustawione hasło do MySQL, postępuj zgodnie z instrukcjami w Odzyskaj hasło root MySQL , a następnie ustaw hasło na null:

Dla wersji 5.7.6 i nowszych

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'

Dla wersji 5.7.5 i wcześniejszych

update user set password=PASSWORD("") where User='root';

* wymaga to ponownego uruchomienia DB (patrz instrukcje pod linkiem), aby to zadziałało.

sudo service mysql restart

w takim przypadku nie zapomnij o „przywróceniu uprawnień”;
Marco Ramos

@meyosef - proszę zaznaczyć odpowiedź jako udzieloną, jeśli to rozwiązało problem (kliknij zielony znacznik wyboru pod liczbą głosów).
jneves

Myślałem, że mogę użyć pustego hasła tylko dla gniazda Unix, a nie pętli zwrotnej, ale nie jest to możliwe. unix_socketPlugin ma nieco inną rzecz.
dorzecze

9

Tak, mniej haseł może być dobrą rzeczą. Ale nie otwieraj bazy danych dla wszystkich.

przez unix_socket:

grant usage on *.* to 'root'@'localhost' identified via unix_socket;

Daje to dostęp do mysql bez hasła dla lokalnie zalogowanego użytkownika root. Btw. jest to ustawienie domyślne w najnowszych wydaniach Ubuntu / Debian.

some_user@box: mysql -u root  # denied
root@box: mysql               # good
some_user@box: sudo mysql     # good, if "some_user" has sudo rights.

Slajdy wyjaśniające: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips .


2
Witamy w SF! Urocza pierwsza odpowiedź: jasne, dobre streszczenie, link do dalszych badań i dodaje coś do istniejącego zbioru odpowiedzi. Cieszę się, że mogę być pierwszym głosem pozytywnym i mam nadzieję, że zostaniesz i napiszesz więcej takich odpowiedzi.
MadHatter

Slajdy są w porządku, ale to jest faktyczna dokumentacja: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

5

Możesz także:

grant all privileges on *.* to 'root'@'localhost' identified by '';

1

Jestem pewien, że domyślnie nie ma hasła, jeśli jesteś administratorem i uzyskujesz do niego dostęp lokalnie. Czy znajdujesz coś innego?

czy to działa?

#> mysqladmin -u root password ''
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.