MySQL: Hoe afstand toestaan ​​op afstand met MySQL

Ik heb MySQL Community Edition 5.5 op mijn lokale computer geïnstalleerd en ik wil externe verbindingen toestaan ​​zodat ik verbinding kan maken met externe bron.

Hoe kan ik dat doen?


1, Autoriteit 100%

Dat is standaard toegestaan ​​op MySQL.

Wat is standaard uitgeschakeld, is Remote rootToegang. Als u dat wilt inschakelen, voert u deze SQL-opdracht lokaal uit:

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

En zoek vervolgens de volgende regel en comment it out in uw my.cnfbestand, die gewoonlijk op /etc/mysql/my.cnfop Unix / OSX-systemen. In sommige gevallen is de locatie voor het bestand /etc/mysql/mysql.conf.d/mysqld.cnf).

Als het een Windows-systeem is, kunt u deze vinden in de MySQL-installatiemap, meestal zoiets als C:\Program Files\MySQL\MySQL Server 5.5\en de bestandsnaam zijn my.ini.

Wijzerplaat

bind-address = 127.0.0.1

Naar

#bind-address = 127.0.0.1

en start de MySQL-server opnieuw (Unix / OSX , en Windows ) voor de wijzigingen die van kracht worden.


2, Autoriteit 6%

Nadat ik het allemaal van bovenaf heb gedaan, kon ik nog steeds niet inloggen als rootop afstand, maar teleknetteren naar poort 3306bevestigd dat MySQLverbindingen accepteerde .

Ik begon te kijken naar de gebruikers in MySQL en zag dat er meerdere root-gebruikersmet verschillende wachtwoorden.

select user, host, password from mysql.user;

Dus in MySQLstel ik alle wachtwoorden in voor rooten ik kon eindelijk op afstand inloggen als root.

use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;

Antwoord 3, autoriteit 5%

Even een opmerking uit mijn ervaring, je kunt het configuratiebestand vinden onder dit pad /etc/mysql/mysql.conf.d/mysqld.cnf.

(Ik heb een tijdje geworsteld om dit pad te vinden)


Antwoord 4, autoriteit 4%

In mijn geval probeerde ik verbinding te maken met een externe mysql-server op cent OS. Na veel oplossingen te hebben doorlopen (alle privileges verlenen, ip-bindingen verwijderen, netwerken inschakelen) werd het probleem nog steeds niet opgelost.

Het bleek dat ik tijdens het zoeken naar verschillende oplossingen iptables tegenkwam, waardoor ik me realiseerde dat mysql-poort 3306 geen verbindingen accepteerde.

Hier is een kleine opmerking over hoe ik dit probleem heb gecontroleerd en opgelost.

  • Controleren of de poort verbindingen accepteert:
telnet (mysql server ip) [poortnr]
  • IP-tabelregel toevoegen om verbindingen op de poort toe te staan:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPTEREN
  • zou dit niet aanbevelen voor productieomgeving, maar als uw iptables niet correct zijn geconfigureerd, kan het toevoegen van de regels mogelijk niet het probleem oplost. In dat geval moet het volgende worden gedaan:
Service IPTABLES STOP 

Ik hoop dat dit helpt.


5, Autoriteit 2%

Volg de onderstaande stappen inder om de remote-toegang van de jokerteken voor MySQL-gebruiker in te stellen.

(1) Open CMD.

(2) Navigeer naar Path C: \ Program Files \ MySQL \ MySQL Server 5.x \ bin en
Voer deze opdracht uit.

MySQL -U root-p

(3) Voer het root-wachtwoord in.

(4) Voer de volgende opdracht uit om de toestemming te geven.

Grant alle privileges op *. * naar ‘gebruikersnaam’ @ ‘IP’ geïdentificeerd door
‘Wachtwoord’;

Gebruikersnaam: gebruikersnaam die u wilt verbinden met MySQL Server.

IP: Public IP-adres van waar u toegang wilt geven tot MySQL
server.

Wachtwoord: Wachtwoord van de gebruikte gebruikersnaam.

IP kan worden vervangen door% om de gebruiker in staat te stellen verbinding te maken met een IP
adres.

(5) Spoel de previleges door opdracht en uitgang te volgen.

Flush-privileges;

afsluiten;
of \ q


6, Autoriteit 2%

Alle processen voor login op afstand. Remote Login is standaard uitgeschakeld. U moet het handmatig openen voor alle IP..Om Geef toegang tot alle IP

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

Specifieke IP

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

Dan

flush privileges;

U kunt uw gebruikershost & amp kijken; Wachtwoord

SELECT host,user,authentication_string FROM mysql.user;

Nu uw plicht is om dit te wijzigen

bind-address = 127.0.0.1

U kunt dit vinden op

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

Als u dit daar niet vindt, probeer dit dan

sudo nano /etc/mysql/my.cnf

Opmerking hierin

#bind-address = 127.0.0.1

Start vervolgens MySQL

opnieuw

sudo service mysql restart

Geniet nu van Remote Login


7

Als u MySQL hebt geïnstalleerd van brewHet luistert standaard alleen op de lokale interface. Om vast te stellen dat u /usr/local/etc/my.cnfmoet bewerken en de bind-addressvan 127.0.0.1NAAR *.

Voer vervolgens in brew services restart mysql.


8

gewoon f.y.i
Ik trok mijn haar al uren uit met dit probleem .. Tot slot noem ik mijn hostingprovider en vond dat in mijn geval een cloudserver die in het bedieningspaneel voor 1and1 een secundaire firewall heeft die je moet klonen en port 3306 toevoegen en toevoegen. Eenmaal toegevoegd, kreeg ik recht in ..


9

Voor wie het nodig heeft, controleer de firewallpoort 3306 ook open, als uw firewall-service wordt uitgevoerd.


10

This blog Hoe instellen van een MySQL-server op het Local Area Network is nuttig bij het instellen van een MySQLhelemaal opnieuw


11

en voor OS X-mensen zijn er rekening gehouden dat de parameter van de bindadres meestal wordt ingesteld in de launchd-plist en niet in het bestand My.ini. Dus in mijn geval, heb ik <string>--bind-address=127.0.0.1</string>van /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist.


12

Indien mysqldheeft een Bind adres ingesteld op een loopback / lokaal adres (bijv. 127.0.0.1), de server is niet bereikbaar vanaf externe hosts, omdat een loopback-interface niet kan worden bereikt externe host.

Stel deze optie in op 0.0.0.0(::voor IPv4 + 6) om verbindingen te accepteren van elke host of naar een ander extern bereikbaar adres als u dat wilt Sta alleen toe verbindingen op één interface.

bron


13

Waarmee root-root-toegang kan gevaarlijk zijn. Het zou de voorkeur hebben als u gebruikersaccounts zou opzetten met meer beperkende machtigingen. De volgende drie stappen moeten het doen.

  1. Zorg ervoor dat de regel met bind-address ...op zijn minst opmerkt in uw bestand My.ini of My.cnf. Als het niet bestaat, ga dan verder.
    U kunt dit bestand vinden in C:\ProgramData\MySQL\MySQL Server 8.0op Windows.

  2. Nadien, controleer of het gebruikersaccount u instelt de verbinding met niet heeft localhostIN DE LIMIET OP HOSTEN MATCHING FIELD. Hoewel het niet wordt aanbevolen, kunt u in plaats daarvan %in dat veld voor het testen van de doeleinden plaatsen. U kunt dit doen door een lokale verbinding met de server te openen met MySQL Workbench, en vervolgens naar Server & GT; gebruikers en privileges uit de menubalk en het vinden van het gebruikersaccount waarmee u verbinding wilt maken.

Het veld “Limiet to Hosts Matching” is wat u niet lokaal verbindt. D.w.z. Het beperkt de geaccepteerde verbindingen met een patroon van IP-adressen. Idealiter moet u toegang krijgen tot de MySQL-server van een statisch IP-adres of subnet, zodat u zo beperkend mogelijk kunt zijn.

  1. Uiteraard moet uw firewall de MySQL-servertoepassing in staat stellen om te communiceren over de gewenste poort. De fysieke netwerkapparatuur tussen u en uw server moeten communicatie mogelijk maken over de poort waarmee u verbinding wilt maken. (poort 3306 typisch)

14

Ik had deze uitdaging bij het werken aan een Java-project met mysql server als de database.

Hier is hoe ik het deed :

Bevestig eerst dat uw MySQL Server-configuratie om externe verbindingen toe te staan. Gebruik de favoriete teksteditor om het configuratiebestand MySQL Server te openen:

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

Scroll naar beneden naar de regel bind-addressen zorg ervoor dat deze ofwel opgemerkt wordtof wordt vervangen door 0.0.0.0(om alle externe verbindingen) of vervangen door Ip-adressenwaarvan u externe verbindingen wilt.

Zodra u de nodige wijzigingen heeft aangebracht, slaat u het configuratiebestand op en sluit u het af. Pas de aangebrachte wijzigingen aan het MySQL-configuratiebestand toe door de MySQL-service opnieuw te starten:

sudo systemctl restart mysql

Log vervolgens in op de MySQL-serverconsole op de server waarop deze is geïnstalleerd:

mysql -u root -p

Voer uw mysql-gebruikerswachtwoord

in

Controleer de hostswaartoe de gebruiker die u wilt al toegang heeft. In mijn geval is de gebruiker root:

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

Dit gaf me deze output:

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

Vervolgens heb ik de onderstaande opdracht uitgevoerd om de root-gebruiker externe toegang te verlenen tot de database met de naam my_database:

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

Opmerking: %verleent een gebruiker externe toegang vanaf alle hosts op een netwerk. U kunt het IP-adres specificeren van de individuele hosts waarvan u de gebruiker toegang wilt verlenen met het commando – GRANT ALL PRIVILEGES ON *.* TO 'root'@'Ip-Address' IDENTIFIED BY 'my-password';

Daarna heb ik de hostsgecontroleerd waar de gebruiker nu toegang toe heeft. In mijn geval is de gebruiker root:

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

Dit gaf me deze output:

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

Ten slotte kunt u proberen verbinding te maken met de MySQL-server vanaf een andere server met behulp van de opdracht:

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

Waar ustaat voor gebruiker, hvoor mysql-server-ip-addressen p staat voor wachtwoord. Dus in mijn geval was het:

mysql -u root -h 34.69.261.158 -p

Voer uw mysql-gebruikerswachtwoord

in

U zou deze uitvoer moeten krijgen, afhankelijk van uw MySQL-serverversie:

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> 

Bronnen: Hoe externe verbindingen met MySQL toe te staan

Dat is alles.

Ik hoop dat dit helpt


Antwoord 15

soms moet naam van pc op Windows

worden gebruikt

eerste stap)zet in het configuratiebestand van mysql:

mysqld.cnf SET bind-address= 0.0.0.0

(om verbindingen via tcp/ip te laten ontvangen)

tweede stap)maak gebruiker in mysql, tafelgebruikers, met naam van pc op Windowseigenschappen, NIET ip

Other episodes