Zainstalowałem MySQL Community Edition 5.5 na moim komputerze lokalnym i chcę zezwalać na połączenia zdalne, aby móc łączyć się ze źródła zewnętrznego.
Jak mogę to zrobić?
sudo mysql_secure_installation
. Do Twojej wiadomości
Zainstalowałem MySQL Community Edition 5.5 na moim komputerze lokalnym i chcę zezwalać na połączenia zdalne, aby móc łączyć się ze źródła zewnętrznego.
Jak mogę to zrobić?
sudo mysql_secure_installation
. Do Twojej wiadomości
Odpowiedzi:
Jest to domyślnie dozwolone w MySQL.
Domyślnie wyłączony jest root
dostęp zdalny . Jeśli chcesz to włączyć, uruchom lokalnie to polecenie SQL:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Następnie znajdź następujący wiersz i skomentuj go w swoim my.cnf
pliku, który zwykle występuje /etc/mysql/my.cnf
w systemach Unix / OSX. W niektórych przypadkach lokalizacja pliku to /etc/mysql/mysql.conf.d/mysqld.cnf).
Jeśli jest to system Windows, możesz go znaleźć w katalogu instalacyjnym MySQL, zwykle coś takiego, C:\Program Files\MySQL\MySQL Server 5.5\
a nazwa pliku będzie my.ini
.
Zmień linię
bind-address = 127.0.0.1
do
#bind-address = 127.0.0.1
I zrestartuj serwer MySQL ( Unix / OSX i Windows ), aby zmiany odniosły skutek.
my.cnf
pliku i nie znajdują bind-address
w nim dyrektywy, zauważ, że w moim przypadku (MySQL wersja 14.14 na Ubuntu 16.04.2) lokalizacja pliku to/etc/mysql/mysql.conf.d/mysqld.cnf
Po wykonaniu powyższych czynności nadal nie mogłem zalogować się root
zdalnie, ale Telnetting do portu 3306
potwierdził, że MySQL
akceptuje połączenia.
Zacząłem patrzeć na użytkowników w MySQL i zauważyłem, że było wielu użytkowników root z różnymi hasłami.
select user, host, password from mysql.user;
Więc MySQL
mogę ustawić wszystkie hasła do korzenia ponownie i mogłem wreszcie zalogować się zdalnie jako root
.
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
Z mojego doświadczenia wynika, że pod tą ścieżką można znaleźć plik konfiguracyjny /etc/mysql/mysql.conf.d/mysqld.cnf
.
(Przez jakiś czas walczyłem o znalezienie tej ścieżki)
sudo find /etc -iname 'mysql*.cnf'
W moim przypadku próbowałem połączyć się ze zdalnym serwerem mysql na cent OS. Po przejściu wielu rozwiązań (przyznanie wszystkich uprawnień, usunięcie powiązań ip, umożliwienie pracy w sieci) problem nadal nie został 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 3306 mysql nie przyjmuje połączeń.
Oto krótka uwaga na temat sprawdzania i rozwiązywania tego problemu.
telnet (adres IP serwera MySQL) [portNo]
iptables -A WEJŚCIE -i eth0 -p tcp -m tcp --port 3306 -j AKCEPTUJ
Serwis iptables zatrzymuje się
Mam nadzieję że to pomoże.
Wykonaj poniższe kroki, aby ustawić zdalny dostęp do symboli wieloznacznych dla użytkownika MySQL.
(1) Otwórz cmd.
(2) przejdź do ścieżki C: \ Program Files \ MySQL \ MySQL Server 5.X \ bin i uruchom tę komendę.
mysql -u root -p
(3) Wprowadź hasło roota.
(4) Wykonaj następujące polecenie, aby uzyskać pozwolenie.
UDZIELAJ WSZYSTKICH UPRAWNIEŃ NA *. * NA „NAZWA UŻYTKOWNIKA” @ „IP” IDENTYFIKOWANA PRZEZ „HASŁO”;
NAZWA UŻYTKOWNIKA: nazwa użytkownika, z którą chcesz się połączyć z serwerem MySQL.
IP: publiczny adres IP, z którego chcesz zezwolić na dostęp do serwera MySQL.
HASŁO: Hasło użytej nazwy użytkownika.
Adres IP można zastąpić%, aby umożliwić użytkownikowi połączenie z dowolnego adresu IP.
(5) Opróżnij poprzednie poziomy, wykonując polecenie i wyjdź.
PRZYWILEJE PŁUCZĄCE;
wyjście; lub \ q
Jeśli proces serwera MySQL nasłuchuje tylko w wersji 127.0.0.1 lub :: 1, wówczas nie będzie można połączyć się zdalnie. Jeśli masz bind-address
ustawienie w/etc/my.cnf
może to być przyczyną problemu.
Będziesz także musiał dodać uprawnienia dla osób niebędących localhost
użytkownikami.
127.0.0.1
?
Jeśli zainstalowałeś z brew
niego MySQL, 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 *
.
Potem biegnij brew services restart mysql
.
Cały proces zdalnego logowania. Zdalne logowanie jest domyślnie wyłączone. Musisz otworzyć je ręcznie dla wszystkich adresów IP .. aby uzyskać dostęp do wszystkich adresów IP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Specyficzne Ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
następnie
flush privileges;
Możesz sprawdzić swój Host użytkownika i hasło
SELECT host,user,authentication_string FROM mysql.user;
Teraz twoim obowiązkiem jest to zmienić
bind-address = 127.0.0.1
Możesz to znaleźć na
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
jeśli go tam nie znajdziesz, spróbuj tego
sudo nano /etc/mysql/my.cnf
skomentuj w tym
#bind-address = 127.0.0.1
Następnie uruchom ponownie MySQL
sudo service mysql restart
Teraz korzystaj ze zdalnego logowania
Tylko do twojej wiadomości Wyciągnąłem włosy z tym problemem przez wiele godzin .. w końcu dzwonię do mojego dostawcy hostingu i stwierdziłem, że w moim przypadku za pomocą serwera w chmurze, że w panelu sterowania dla 1 i 1 mają dodatkową zaporę ogniową, którą musisz sklonować i dodać port 3306. Po dodaniu dostałem się prosto ..
Ten blog Jak skonfigurować serwer MySQL w sieci lokalnej będzie przydatny w konfiguracji MySQL
od zera
A dla OS X ludzie są świadomi, że parametr bind-address jest zwykle ustawiony w uruchomionej liście, a nie w pliku my.ini. Więc w moim przypadku usunąłem <string>--bind-address=127.0.0.1</string>
z /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
.
~/Library/LaunchAgents
Jeśli mysqld
ma adres wiążą zestaw do pętli zwrotnej / adresu lokalnego (na przykład 127.0.0.1
), serwer nie jest osiągalny z zdalnych komputerów, ponieważ interfejs ten nie może być osiągnięte z każdego zdalnego komputera.
Ustaw tę opcję na 0.0.0.0
( ::
dla IPv4 + 6), aby akceptować połączenia z dowolnego hosta, lub na inny dostępny z zewnątrz adres, jeśli chcesz zezwolić na połączenia tylko na jednym interfejsie.
czasami trzeba użyć nazwy komputera w systemie Windows
pierwszy krok) w pliku konfiguracyjnym mysql:
mysqld.cnf USTAW adres powiązania = 0.0.0.0
(aby umożliwić odbieranie połączeń przez TCP / IP)
drugi krok) uczyń użytkownika w mysql, użytkownikami tabeli, z nazwą komputera w Windowsie, NIE ip
Włączenie zdalnego dostępu do katalogu głównego może być niebezpieczne. Lepiej byłoby skonfigurować konta użytkowników z bardziej restrykcyjnymi uprawnieniami. Poniższe trzy kroki powinny to zrobić.
Upewnij się, że linia zaczynająca się od bind-address ...
jest przynajmniej skomentowana w pliku my.ini lub my.cnf. Jeśli nie istnieje, przejdź dalej. Ten plik można znaleźć w C:\ProgramData\MySQL\MySQL Server 8.0
systemie Windows.
Następnie sprawdź, czy konto użytkownika, z którym nawiązujesz połączenie, nie ma localhost
w polu Limit do dopasowania hostów. Chociaż nie jest to zalecane, możesz zamiast tego wpisać %
to pole do celów testowych. Możesz to zrobić, otwierając lokalne połączenie z serwerem za pomocą MySQL Workbench, a następnie wybierając opcję Serwer> Użytkownicy i uprawnienia z paska menu i znajdując konto użytkownika, z którym chcesz się połączyć.
Pole „Ogranicz do dopasowania hostów” uniemożliwia połączenie nielokalne. To znaczy ogranicza akceptowane połączenia do wzorca adresów IP. Idealnie byłoby, gdybyś miał dostęp do serwera MySQL ze statycznego adresu IP lub podsieci, abyś mógł być jak najbardziej restrykcyjny.