MySQL: jak zezwolić na zdalne połączenie z mysql

Zainstalowałem MySQL Community Edition 5.5 na moim komputerze lokalnym i chcę zezwolić na połączenia zdalne, aby móc łączyć się z zewnętrznego źródła.

Jak mogę to zrobić?

Author: Promise Preston, 2013-02-08

16 answers

To jest domyślnie dozwolone w MySQL.

Domyślnie wyłączony jest dostęp zdalny root. Jeśli chcesz to włączyć, uruchom to polecenie SQL lokalnie:

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
 FLUSH PRIVILEGES;

A następnie znajdź następujący wiersz i skomentuj go w swoim pliku my.cnf, który zwykle mieszka na /etc/mysql/my.cnf w systemach Unix/OSX. W niektórych przypadkach lokalizacją pliku jest /etc/mysql / mysql.conf.d / mysqld.cnf).

Jeśli jest to System Windows, można go znaleźć w katalogu instalacyjnym MySQL, Zwykle coś w stylu C:\Program Files\MySQL\MySQL Server 5.5\ i nazwa pliku będzie my.ini.

Zmień linię

 bind-address = 127.0.0.1

Do

 #bind-address = 127.0.0.1

I uruchom ponownie serwer MySQL (Unix / OSX i Windows ), aby zmiany weszły w życie.

 813
Author: mjuarez,
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
2018-02-22 09:36:16

Po wykonaniu wszystkich powyższych czynności nadal nie mogłem zalogować się jako root zdalnie, ale Telnetting do portu 3306 potwierdził, że MySQL akceptuje połączenia.

Zacząłem przyglądać się użytkownikom w MySQL i zauważyłem, że jest wielu użytkowników root z różnymi hasłami.

select user, host, password from mysql.user;

Więc w MySQLi ustawić wszystkie hasła dla root ponownie i mogłem w końcu zalogować się zdalnie jako root.

use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
 51
Author: Matthew Lock,
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
2019-11-05 10:16:50

Notka z mojego doświadczenia, plik konfiguracyjny znajdziesz pod tą ścieżką /etc/mysql/mysql.conf.d/mysqld.cnf.

(przez jakiś czas starałem się znaleźć tę ścieżkę)

 41
Author: Mayur Patel,
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
2018-06-14 17:41:53

W moim przypadku próbowałem połączyć się ze zdalnym serwerem mysql na Cent OS. Po przejściu przez wiele rozwiązań (Nadanie wszystkich uprawnień, usunięcie wiązań ip,włączenie sieci) problem nadal nie został rozwiązany.

Jak się okazało, przyglądając się różnym rozwiązaniom, 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 jest akceptacja połączeń:
telnet (mysql server ip) [portNo]
  • dodanie reguły tabeli ip pozwalającej na połączenia na porcie:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
  • nie zalecałbym tego dla środowiska produkcyjnego, ale jeśli Twoje iptables nie są poprawnie skonfigurowane, dodanie reguł może nie rozwiązać problemu. W takim przypadku należy wykonać następujące czynności:
service iptables stop
Mam nadzieję, że to pomoże.
 28
Author: Kushal,
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-09-22 11:07:37

Wykonaj poniższe czynności inorder, aby ustawić zdalny dostęp wieloznaczny dla użytkownika MySQL.

(1) Otwórz cmd.

(2) Przejdź do ścieżki C:\Program Files\MySQL \ MySQL Server 5.X \ bin i uruchom to polecenie.

Mysql-u root-p

(3) Wprowadź hasło roota.

(4) wykonaj następujące polecenie, aby dostarczyć uprawnienia.

PRZYZNAJ WSZYSTKIE PRZYWILEJE NA *.* DO 'USERNAME' @ ' IP ' IDENTYFIKOWANE PRZEZ "Hasło';

USERNAME: nazwa użytkownika, którą chcesz połączyć z serwerem MySQL.

IP: publiczny adres IP, z którego chcesz zezwolić na dostęp do MySQL serwer.

PASSWORD: hasło użytej nazwy użytkownika.

IP można zastąpić%, aby umożliwić użytkownikowi połączenie z dowolnego IP adres.

(5) przepłukać previleges wykonując polecenie i zakończyć.

FLUSH PRIVILEGES;

Exit; lub \q

Tutaj wpisz opis obrazka

 17
Author: Hiren Parghi,
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
2019-03-01 06:37:10

Wszystkie procesy zdalnego logowania. Zdalne logowanie jest domyślnie wyłączone.Musisz otworzyć go ręcznie dla wszystkich ip..to give access all ip

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

Specyficzne Ip

GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';

Then

flush privileges;

Możesz sprawdzić swój Host i hasło użytkownika

SELECT host,user,authentication_string FROM mysql.user;
Teraz twoim obowiązkiem jest to zmienić.]}
bind-address = 127.0.0.1

Znajdziesz to na

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Jeśli nie znajdziesz tam tego, spróbuj tego

sudo nano /etc/mysql/my.cnf

Skomentuj to

#bind-address = 127.0.0.1

Następnie uruchom ponownie Mysql

sudo service mysql restart

Teraz ciesz się zdalnym logowaniem

 13
Author: umar_sharif,
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
2020-04-03 12:39:03

Jeśli proces serwera MySQL nasłuchuje na 127.0.0.1 lub ::1 tylko wtedy nie będziesz w stanie połączyć się zdalnie. Jeśli masz bind-address ustawienie w /etc/my.cnf to może być źródłem problemu.

Będziesz również musiał dodać uprawnienia dla NIE-localhost Użytkownika.

 7
Author: tadman,
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
2013-02-08 18:42:20

Jeśli zainstalowałeś MySQL z brew to tak naprawdę domyślnie nasłuchuje tylko na lokalnym interfejsie. Aby to naprawić, musisz edytować /usr/local/etc/my.cnf I zmienić bind-address z 127.0.0.1 na *.

Następnie uruchom brew services restart mysql.

 7
Author: Timmmm,
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-07-04 14:48:29

Just F. Y. I Ciągnąłem włosy z tym problemem godzinami.. wreszcie dzwonię do mojego dostawcy hostingu i okazało się, że w moim przypadku za pomocą serwera w chmurze, który w Panelu sterowania dla 1and1 mają zapasową zaporę ogniową, którą trzeba sklonować i dodać port 3306. Po dodaniu od razu wszedłem..

 4
Author: Dan,
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-12-13 21:13:55

Dla kogo jest to potrzebne, sprawdź port firewall 3306 jest również otwarty, jeśli usługa firewall jest uruchomiona.

 3
Author: Zelkovar,
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-12-02 12:21:26

Ten blog Jak skonfigurować serwer MySQL w sieci lokalnej będzie przydatny w konfiguracji MySQL od podstaw

 3
Author: Kasun Siyambalapitiya,
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-11-25 08:39:23

A Dla OS X należy pamiętać, że parametr bind-address jest zazwyczaj ustawiany w pliście launchd, a nie w my.plik ini. Więc w moim przypadku usunąłem <string>--bind-address=127.0.0.1</string> z /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist.

 2
Author: tdmartin102,
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-05-19 12:07:46

Jeśli mysqld mA adres bind ustawiony na adres loopback/lokalny (np. 127.0.0.1), serwer nie będzie dostępny ze zdalnych hostów, ponieważ interfejs loopback nie może być osiągnięty z żadnego zdalnego hosta.

Ustaw tę opcję na 0.0.0.0 (:: dla IPv4+6), aby akceptować połączenia z dowolnego hosta, lub do innego zewnętrznego adresu, jeśli chcesz zezwalać tylko na połączenia na jednym interfejsie.

Źródło

 2
Author: Wesley Smith,
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
2018-05-24 20:00:21

Włączenie zdalnego dostępu do roota może być niebezpieczne. Byłoby lepiej, gdybyś skonfigurował konta użytkowników z bardziej restrykcyjnymi uprawnieniami. Poniższe trzy kroki powinny to zrobić.

  1. Upewnij się, że linia zaczynająca się od bind-address ... jest przynajmniej skomentowana w Twoim my.ini albo mój.plik cnf. Jeśli nie istnieje, idź dalej. Plik ten można znaleźć w C:\ProgramData\MySQL\MySQL Server 8.0 w systemie Windows.

  2. Następnie sprawdź, czy konto użytkownika, z którym nawiązujesz połączenie, nie ma localhost w polu Limit to Hosts Matching. Chociaż nie jest to zalecane, możesz zamiast tego umieścić % w tym polu w celach testowych. Możesz to zrobić, otwierając lokalne połączenie z serwerem za pomocą MySQL Workbench, a następnie przechodząc do Serwer>Użytkownicy i uprawnienia z paska menu i znajdując konto użytkownika, z którym chcesz się połączyć.

Pole "Limit hostów pasujących" uniemożliwia łączenie się poza lokalnie. Czyli ogranicza akceptowane połączenia do wzorca IP adresy. Idealnie, powinieneś mieć dostęp do serwera MySQL ze statycznego adresu IP lub podsieci, aby być jak najbardziej restrykcyjnym.

  1. oczywiście zapora sieciowa powinna umożliwiać aplikacji serwera MySQL komunikację przez żądany port. Fizyczny Sprzęt sieciowy pomiędzy TOBĄ a twoim serwerem powinien umożliwiać komunikację na porcie, z którym chcesz się połączyć. (port 3306)
 2
Author: Nikola Petrovic,
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
2020-01-30 11:56:03

Czasami trzeba użyć Nazwa komputera w systemie windows

Pierwszy Krok) Wstaw plik konfiguracyjny mysql:

Mysqld.cnf SET bind-address= 0.0.0.0

(aby umożliwić odbieranie połączeń przez TCP / ip)

Drugi krok) make user in mysql, table users, with name of pc on windows propierties, NOT ip

Tutaj wpisz opis obrazka

 0
Author: Rubén Ruíz,
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
2019-07-16 19:00:21

Musiałem sprostać temu wyzwaniu pracując nad projektem Java z MySQL serwerem jako bazą danych.

Oto Jak to zrobiłem :

Najpierw potwierdź konfigurację serwera MySQL , aby umożliwić zdalne połączenia. Użyj preferowanego edytora tekstu, aby otworzyć plik konfiguracyjny serwera MySQL:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Przewiń w dół do linii bind-address i upewnij się, że jest to skomentowane lub zastąpione 0.0.0.0 (do Zezwalaj na wszystkie połączenia zdalne) lub zastępowane przez adresy Ip , z których chcesz mieć połączenia zdalne.

Po wprowadzeniu niezbędnych zmian Zapisz i zamknij plik konfiguracyjny. W związku z tym, że usługa MySQL została uruchomiona w 2009 roku, nie jest już dostępna.]}

sudo systemctl restart mysql

Następnie zaloguj się do konsoli serwera MySQL na zainstalowanym serwerze:

mysql -u root -p

Wprowadź swoje hasło użytkownika mysql

Sprawdź hosty że żądany użytkownik ma dostęp do już. W moim przypadku użytkownikiem jest root:

SELECT host FROM mysql.user WHERE user = "root";

To dało mi to wyjście:

+-----------+
| host      |
+-----------+
| localhost |
+-----------+

Następnie uruchomiłem poniższą komendę, aby zapewnić użytkownikowi root zdalny dostęp do bazy danych o nazwie my_database:

USE my_database;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-password';

Uwaga: % zapewnia użytkownikowi zdalny dostęp ze wszystkich hostów w sieci. Możesz określić adres Ip poszczególnych hostów, do których chcesz przyznać użytkownikowi dostęp za pomocą polecenia - GRANT ALL PRIVILEGES ON *.* TO 'root'@'Ip-Address' IDENTIFIED BY 'my-password';

Po czym sprawdziłem hosty że użytkownik ma teraz dostęp do. W moim przypadku użytkownikiem jest root:

SELECT host FROM mysql.user WHERE user = "root";

To dało mi to wyjście:

+-----------+
| host      |
+-----------+
| %         |
| localhost |
+-----------+

Na koniec możesz spróbować połączyć się z serwerem MySQL z innego serwera za pomocą polecenia:

mysql -u username -h mysql-server-ip-address -p

Gdzie u reprezentuje Użytkownika, h reprezentuje mysql-server-ip-address i P reprezentuje hasło . Tak w moim przypadku było:

mysql -u root -h 34.69.261.158 -p

Wprowadź swoje hasło użytkownika mysql

Powinieneś uzyskaj to wyjście w zależności od wersji serwera MySQL:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

Zasoby: jak zezwolić na zdalne połączenia do MySQL

To wszystko.

Mam nadzieję, że to pomoże

 0
Author: Promise Preston,
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
2020-11-25 14:08:26