Jeśli zrobię to SHOW GRANTS
w mojej bazie danych mysql, otrzymam
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
IDENTIFIED BY PASSWORD 'some_characters'
WITH GRANT OPTION
Jeśli się nie mylę, root@localhost
oznacza to, że użytkownik root
ma dostęp do serwera tylko z localhost
. Jak powiedzieć MySQL, aby udzielił root
pozwolenia na dostęp do tego serwera mysql z każdej innej maszyny (w tej samej sieci)?
mysql
connection
grant
Aufwind
źródło
źródło
localhost
na%
przyzna uprawnienia roota do sieci publicznej. Nie zapomnijflush privileges;
Odpowiedzi:
Zapewnia to dostęp roota z tym samym hasłem z dowolnej maszyny w
*.example.com
:Jeśli rozpoznawanie nazw nie będzie działać, możesz również przyznać dostęp przez adres IP lub podsieć:
Dokumentacja
GRANT
składni MySQL .źródło
...TO 'root'@'%' IDENTIFIED...
że zezwoliłbym na dostęp z dowolnego miejsca?SHOW GRANTS
nadal pokazuje to samo (jak w moim pytaniu). Nawet to zrobiłemFLUSH PRIVILGES
. Czy jest coś, za czym tęsknię?FLUSH PRIVILEGES
. Wyloguj się i zaloguj ponownie, uruchom ponownie usługę mysqld, jeśli masz dostęp. Upewnij się również, żeskip networking
linia nie jest włączona w twoimmy.cnf
myśleniu, co nie wyjaśniałoby, żeSHOW GRANTS
nadal nie jesteś taki sam.IDENTIFIED BY PASSWORD
towarzyszy mu zaszyfrowana 41-cyfrowa liczba szesnastkowa. Użyj,IDENTIFIED BY 'password'
jeśli chcesz bezpośrednio dołączyć hasło.Próbować:
źródło
Pa55w0rd
wydaje się głupie, nie mów mi, że to hasło, które chcesz stworzyć. Dla każdego, kto próbuje zalogować się do Twojego mysql?FLUSH PRIVILEGES;
Musisz podjąć pewne kroki, aby upewnić się, że najpierw mysql, a następnie użytkownik root jest dostępny z zewnątrz:
Wyłącza
skip-networking
sięmy.cnf
(tj/etc/mysql/my.cnf
)Sprawdź wartość
bind-address
inmy.cnf
, jeśli jest ustawiona na127.0.0.1
, możesz ją zmienić,0.0.0.0
aby zezwolić na dostęp ze wszystkich adresów IP lub dowolnego adresu IP, z którego chcesz się połączyć.Przyznaj zdalny dostęp użytkownikowi root z dowolnego adresu IP (lub podaj swój adres IP zamiast
%
)Zrestartuj usługę mysql:
źródło
*.* = DB.TABLE
możesz ograniczyć użytkownika do określonej bazy danych i określonej tabeli.'root'@'%'
możesz zmienić roota dla dowolnego utworzonego użytkownika, a% ma zezwolić na wszystkie IP. Możesz to ograniczyć, zmieniając również% .168.1.1 itd.Jeśli to nie rozwiąże problemu, zmodyfikuj również my.cnf lub my.ini i skomentuj te wiersze
bind-address = 127.0.0.1
do#bind-address = 127.0.0.1
i
skip-networking
do#skip-networking
Raspberry Pi, znalazłem konfigurację adresu powiązania pod
\etc\mysql\mariadb.conf.d\50-server.cnf
źródło
*.*
i'user'@'address'
część. Dzięki! :)Te uprawnienia SQL współdzielone przez innych działają. Jeśli nadal nie możesz uzyskać dostępu do bazy danych, możliwe, że masz tylko ograniczenie zapory sieciowej dla portu. To zależy od typu serwera (i routerów pomiędzy nimi), jak nawiązać połączenie. Otwórz przychodzący port TCP 3306 i nadaj mu podobną regułę dostępu dla maszyn zewnętrznych (wszystkie / podsieć / pojedynczy adres IP / itd.).
źródło
Otwórz
/etc/mysql/mysql.conf.d/mysqld.cnf
plik i skomentuj następujący wiersz:źródło
W moim przypadku próbowałem połączyć się ze zdalnym serwerem mysql na cent OS. Po przejściu przez wiele rozwiązań (przyznanie wszystkich uprawnień, usunięcie powiązań IP, włączenie sieci) problem nadal nie był rozwiązany.
Jak się okazało, patrząc na różne rozwiązania natknąłem się na iptables, co uświadomiło mi, że port mysql 3306 nie akceptuje połączeń.
Oto mała uwaga na temat tego, jak sprawdziłem i rozwiązałem ten problem.
-Dodanie reguły tablicy IP, aby zezwolić na połączenia na porcie:
-Nie zalecamy tego dla środowiska produkcyjnego, ale jeśli twoje iptables nie są poprawnie skonfigurowane, dodanie reguł może nadal nie rozwiązać problemu. W takim przypadku należy wykonać następujące czynności:
Mam nadzieję że to pomoże.
źródło
Dwa kroki:
skonfiguruj użytkownika za pomocą symbolu wieloznacznego:
create user 'root'@'%' identified by 'some_characters'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION
vim /etc/my.cnf
dodaj następujące informacje:
bind-address=0.0.0.0
zrestartuj serwer, nie powinieneś mieć problemu z połączeniem się z nim.
źródło
W mysql 8 i nowszych wersjach nie możesz dodać użytkownika poprzez nadanie mu uprawnień. to znaczy z tym zapytaniem:
mysql zwróci ten błąd:
oznacza to, że nie masz użytkownika root dla domeny%. więc musisz najpierw wstawić użytkownika, a następnie nadać takie uprawnienia:
Nie zapomnij zastąpić haseł określonymi hasłami.
źródło
To zadziałało dla mnie. Ale był dziwny problem, na który nawet ja wypróbowałem najpierw te, na które nie miał wpływu. Zaktualizowałem stronę phpmyadmin i jakoś to działa.
Jeśli potrzebujesz dostępu do local-xampp-mysql. Możesz przejść do xampp-shell -> otwierając wiersz polecenia.
Następnie mysql -uroot -p --port = 3306 lub mysql -uroot -p (jeśli jest ustawione hasło). Następnie możesz przyznać te dostęp ze strony powłoki mysql (może również działać z localhost / phpmyadmin).
Po prostu dodaj je, jeśli ktoś znajdzie ten temat i ma początkowe problemy.
źródło
Ubuntu 18.04
Zainstaluj i upewnij się, że mysqld us działa.
Wejdź do bazy danych i skonfiguruj użytkownika root:
Edytuj uprawnienia mysqld i uruchom ponownie:
Z innego komputera, przetestuj .. Port Obvs (3306) na maszynie mysqld musi zezwalać na połączenie z maszyny testowej.
Wszystkie dodatkowe „zabezpieczenia” MySql w ogóle nie pomagają w zabezpieczeniach, tylko komplikują i zaciemniają, teraz jest łatwiej zepsuć to niż w dawnych czasach, kiedy używałeś naprawdę długiego hasła.
źródło