MySQL 5.1.31 działający w systemie Windows XP.
Z lokalnego serwera MySQL (192.168.233.142) mogę połączyć się jako root w następujący sposób:
>mysql --host=192.168.233.142 --user=root --password=redacted
Ze zdalnego komputera (192.168.233.163) widzę, że port mysql jest otwarty:
# telnet 192.168.233.142 3306
Trying 192.168.233.142...
Connected to 192.168.233.142 (192.168.233.142).
Ale kiedy próbuję połączyć się z mysql ze zdalnego komputera, otrzymuję:
# mysql --host=192.168.233.142 --user=root --password=redacted
ERROR 1045 (28000): Access denied for user 'root'@'192.168.233.163' (using password: YES)
Mam tylko 2 wpisy w mysql.user:
Host User Password
--------------------------------------
localhost root *blahblahblah
% root [same as above]
Co jeszcze muszę zrobić, aby umożliwić zdalny dostęp?
EDYTOWAĆ
Jak zasugerował Paulo poniżej, próbowałem zastąpić wpis mysql.user dla% wpisem specyficznym dla adresu IP, więc moja tabela użytkowników wygląda teraz następująco:
Host User Password
------------------------------------------
localhost root *blahblahblah
192.168.233.163 root [same as above]
Następnie ponownie uruchomiłem maszynę, ale problem nadal występuje.
PASSWORD
je hasłem do konta. Wypróbowałem powyższą zmianę tylkoUSERNAME
iIP
nie zadziałało, dopóki się nie zmieniłemPASSWORD
.Otrzymywałem ten sam błąd po przyznaniu zdalnego dostępu, dopóki nie zrobiłem tego:
Z
/etc/mysql/my.cnf
W nowszych wersjach mysql lokalizacja pliku to
/etc/mysql/mysql.conf.d/mysqld.cnf
(skomentuj tę linię
bind-address = 127.0.0.1
:)Następnie biegnij
service mysql restart
.źródło
bind-address
nie działało dla mnie. Albobind-address = 0.0.0.0
czybind-address = <server_ip>
prace.Domyślnie w serwerze MySQL dostęp zdalny jest wyłączony. Proces zapewniania zdalnego dostępu użytkownikowi to.
PATH
mysql -uroot -proot
(lub jakiekolwiek inne hasło roota).mysql>
Tutaj IP to adres IP, dla którego chcesz zezwolić na zdalny dostęp, jeśli umieścimy
%
dowolny adres IP, możesz uzyskać zdalny dostęp.Przykład:
To dla innego użytkownika.
Mam nadzieję, że to pomoże
źródło
0 rows affected
to norma :) Równieżservice mysqld restart
polecam na koniec. [mysqld
czasami jest po prostumysql
]Pomoc Paulo doprowadziła mnie do rozwiązania. Było to połączenie następujących elementów:
Traktuje bash'a znak dolara jako szczególny znak dla ekspansji do zmiennej środowiskowej, więc musimy uciekać go odwrotnym ukośnikiem. Nawiasem mówiąc, nie musimy tego robić w przypadku, gdy znak dolara jest ostatnim znakiem hasła.
Na przykład, jeśli twoje hasło to „pas $ word”, z Linux bash musimy połączyć się w następujący sposób:
źródło
mysql --host=192.168.233.142 --user=root --password='pas$word'
stackoverflow.com/a/6697781/500942Czy masz firewall? upewnij się, że port 3306 jest otwarty.
W systemie Windows domyślnie tworzone jest konto główne mysql, które może mieć dostęp tylko z lokalnego hosta, chyba że wybrałeś opcję włączenia dostępu ze zdalnych maszyn podczas instalacji.
tworzenie lub aktualizowanie żądanego użytkownika z „%” jako nazwą hosta.
przykład:
źródło
Spróbuj
flush privileges
ponownie.Spróbuj ponownie uruchomić serwer, aby ponownie załadować granty.
Spróbuj utworzyć użytkownika z hostem „192.168.233.163”. „%” nie zezwala na wszystko (to dziwne)
źródło
CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' WITH GRANT OPTION;
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.
Sprawdzanie, czy port akceptuje połączenia:
telnet (adres IP serwera mysql) [nr portu]
Dodanie reguły tablicy IP, aby zezwolić na połączenia na porcie:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j AKCEPTUJ
Nie polecałbym 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:
usługa iptables zatrzymuje się
Mam nadzieję że to pomoże.
źródło
jeśli używasz dynamicznego IP, po prostu przyznaj dostęp do 192.168.2.%, więc teraz nie musisz się martwić o przyznawanie dostępu do swojego adresu IP za każdym razem.
źródło
Miałem problemy ze zdalnym logowaniem do MYSQL dla mojej instancji Amazon EC2 Linux. Okazało się, że rozwiązaniem było upewnienie się, że moja grupa bezpieczeństwa zawiera regułę ruchu przychodzącego dla portu MySQL 3306, aby uwzględnić mój adres IP (lub 0.0.0.0/0 dla dowolnego miejsca). Natychmiast mogłem połączyć się zdalnie, jak tylko dodałem tę regułę.
źródło
Nowa lokalizacja pliku konfiguracyjnego mysql to
źródło
Sterownik MySQL ODBC 3.51 polega na tym, że znaki specjalne w haśle nie są obsługiwane.
„Ostrzeżenie - możesz mieć poważny ból głowy podczas korzystania z MySQL ODBC 3.51, jeśli hasło w poleceniu GRANT zawiera znaki specjalne, takie jak! @ # $% ^?. Sterownik MySQL ODBC 3.51 ODBC nie obsługuje tych znaków specjalnych w polu hasła. Jedyny komunikat o błędzie, jaki możesz otrzymać, to „Odmowa dostępu” (hasło: TAK) ”- z http://www.plaintutorials.com/install-and-create-mysql-odbc-connector-on-windows-7/
źródło
Kombinacja użytkownika / hosta mogła zostać utworzona bez hasła.
Zakładałem, że podczas dodawania nowego hosta dla istniejącego użytkownika (przy użyciu aplikacji GUI) istniejące hasło będzie również używane dla nowej kombinacji użytkownik / host.
Mógłbym się zalogować
lokalnie, ale nie z adresu IPADDRESS z
(Właściwie mógłbym zalogować się z IPADDRESS bez użycia hasła)
Ustawianie hasła umożliwiającego dostęp:
źródło
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
który doprowadził mnie do tego artykułu: knowmysql.blogspot.com/2013/09/ ... Po wykonaniu tych czynności mogłem w końcu połączyć się z serwerem.