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 .
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.
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
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
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.
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