Zdalne Połączenia Mysql Ubuntu

Z jakiegoś powodu nie byłem w stanie połączyć się zdalnie z moim serwerem MySQL. Próbowałem wszystkiego i wciąż dostaję błędy.

root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl
Enter password:
ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using           password: YES)

Teraz, próbowałem uruchomić

 `GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX'; 
 GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';` 
I nadal nic! Co robię źle?

Edytuj: ojej.cnf skomentował bind ip .

Author: JackLock, 2013-03-27

4 answers

Aby wystawić MySQL na cokolwiek innego niż localhost musisz mieć następującą linię

Dla mysql w wersji 5.6 i poniżej

Nieakcentowany w /etc/mysql/my.cnf i przypisany do twojego komputera adres IP, a nie loopback

Dla mysql w wersji 5.7 i nowszej

Nieakcentowany w /etc/mysql/mysql.conf.d/mysqld.cnf i przypisany do twojego komputera adres IP, a nie loopback

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

Lub dodać bind-address = 0.0.0.0 jeśli nie chcesz podać IP

Następnie zatrzymaj i uruchom ponownie MySQL z nowym my.wpis cnf. Po uruchomieniu przejdź do terminala i wprowadź następujące polecenie.

lsof -i -P | grep :3306

To powinno wrócić coś takiego z Twoim rzeczywistym IP w xxx

mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)

Jeśli powyższe polecenie zwróci się poprawnie, będziesz mógł zaakceptować zdalnych użytkowników. Jednak aby zdalny użytkownik mógł połączyć się z poprawnymi priveleges, musisz utworzyć tego użytkownika zarówno w localhost, jak i"%".

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

Wtedy,

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

I na koniec

FLUSH PRIVILEGES; 
EXIT;

Jeśli nie masz tego samego Użytkownika, co powyżej, po zalogowaniu się lokalnie możesz odziedziczyć uprawnienia base localhost i mieć problemy z dostępem. Jeśli chcesz ograniczyć dostęp myuser ma następnie trzeba będzie przeczytać na składni GRANT statement tutaj jeśli przejść przez to wszystko i nadal mają problemy post jakieś dodatkowe wyjście błędu i my.odpowiednie linie cnf.

UWAGA: Jeśli lsof nie zwróci lub nie zostanie znaleziony, możesz go zainstalować tutaj w oparciu o Twoją dystrybucję Linuksa. Nie potrzebujesz lsof, aby wszystko działało, ale jest to niezwykle przydatne, gdy rzeczy nie działają zgodnie z oczekiwaniami.

 298
Author: apesa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-08 14:20:55

Dodaj kilka punktów na szczycie doskonałego postu apesa:

1) możesz użyć poniższego polecenia, aby sprawdzić, czy serwer mysql nasłuchuje

netstat -nlt | grep 3306

sample result:

tcp 0  0  xxx.xxx.xxx.xxx:3306  0.0.0.0:*   LISTEN

2) Użyj FLUSH PRIVILEGES, aby wymusić załadowanie tabel dotacji, jeśli z jakiegoś powodu zmiany nie wejdą w życie natychmiast

GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
FLUSH PRIVILEGES; 
EXIT;

3) jeśli zapora sieciowa netfilter jest włączona (sudo ufw enable) na serwerze mysql, wykonaj następujące czynności, aby otworzyć port 3306 dla zdalnego dostępu:

sudo ufw allow 3306

Sprawdź status za pomocą

sudo ufw status
[[7]}4) Po zdalnym połączeniu jest ustalana, może być weryfikowana zarówno w komputerze klienckim, jak i serwerowym za pomocą poleceń
netstat -an | grep 3306
netstat -an | grep -i established
 25
Author: Jonathan L,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-05 07:08:53

MySQL słucha tylko localhost, jeśli chcemy włączyć do niego zdalny dostęp, to musimy wprowadzić pewne zmiany w moim.plik cnf:

sudo nano /etc/mysql/my.cnf

Musimy skomentować linie bind-address I skip-external-locking:

#bind-address = 127.0.0.1
# skip-external-locking

Po dokonaniu tych zmian, musimy ponownie uruchomić usługę mysql:

sudo service mysql restart
 3
Author: VinhLe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-20 09:13:42

Jeśli testujesz na Windows, nie zapomnij otworzyć portu 3306.

 1
Author: marw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-30 11:58:43