sql >> Database >  >> RDS >> Mysql

MySQL-verbinding werkt niet

Hier is een snelle checklist voor het inschakelen van externe verbindingen voor MySQL, maar lees eerst (6). Als ik iets heb gemist, voel je vrij om te bewerken.

1) Uw externe gebruiker maakt verbinding via een account dat is aangemaakt met de juiste user,host items (kijk naar de output van select user,host from mysql.user order by 1,2 ). Zo niet, kijk dan in de CREATE USER en/of GRANT commando's. Bekijk de uitvoer van SHOW GRANTS voor de gebruiker.

2) Je hebt flush privileges; gedaan (Sommigen zeggen dat het niet nodig is, anderen zeggen van wel).

3a) Zoek uw mysql-configuratiebestand waarnaar wordt verwezen in 3b) hieronder door informatie te bekijken in Dit document (of voor Windows, waarschijnlijk beneden de C:\ProgramData\MySQL\MySQL Server 5.NNN pad). Het verschilt per distributie voor Linux.

3b) U heeft my.ini gewijzigd en opgeslagen (Windows) of my.cnf (Linux) en gewijzigd bind-address weg van 127.0.0.1 of localhost , in het voordeel van 0.0.0.0 . En je hebt en . gemaakt de volgende regel verwijderd:#skip-networking . Het ziet er ongeveer zo uit:

[mysqld]
bind-address=0.0.0.0
#skip-networking

4) Start de mysql-daemon opnieuw. Hoe je dit doet verschilt per distro.

5) Firewall-problemen. Zorg ervoor dat de poort, standaard 3306 . is , staat open voor de buitenwereld (wat eigenlijk gewoon je intranet kan zijn). Dit omvat alle andere lagen van firewalls, zoals AWS EC2-beveiligingsgroepen of soortgelijke, indien aanwezig.

6) Begrijp dat hieraan een veiligheidsrisico is verbonden. Voer dit niet uit, tenzij u weet hoe u uw mysql-server blootstelt aan externe verbindingen.

7) Voer regelmatig beveiligingsbeoordelingen uit met select verklaring vermeld in 1. hierboven inclusief het bekijken van de SHOW GRANTS voor die gebruikers. Geef gebruikers niet onnodig te veel wildcards. Geef gebruikers liever de minimale privileges om hun werk gedaan te krijgen.

8) Onderzoek regelmatig mislukte verbindingspogingen via het algemene logboek en het foutenlogboek, zoals hieronder kort wordt uitgelegd.

Voor inkomend kun je het algemene querylogboek bekijken.

select @@general_log; -- a 1 indicates it is turned on for capture
select @@general_log_file; -- the file that it logs to

Dus alle zoekopdrachten kunnen . zijn aangemeld bij het Algemeen querylogboek als de instelling is ingeschakeld. Bekijk het logboek voor "connect", maar vooral voor Access denied for user mislukte pogingen te zien. Doe dit regelmatig (niet om de paar jaar). Ik doe het minstens twee keer per dag. Let op, u kunt de rapportage uiteraard automatiseren via een extern programma. De buitenwereld gaat pond uw server om binnen te komen zoals de afbeelding hieronder. Het is een realiteit; zet je er voor in.

Bekijk de handleiding voor Het foutenlogboek ook, let op waarschuwingsniveaus en breedsprakigheidsinstellingen op basis van uw versie.

Ik zou aanraden om een ​​back-up op datum te maken (als zodanig genoemd) en de logbestanden na de back-up te verwijderen om na de back-up opnieuw te beginnen. De logbestanden kunnen snel enorm groot worden, vooral het algemene logboek. Vergeet niet of je de instelling voor logboekregistratie hebt in- of uitgeschakeld.

U kunt de twee logbestanden gebruiken om te bepalen of uw verbindingspoging voorbij de firewall is gekomen tijdens de stappen hier.




  1. update gegevens in de div

  2. Wat is de equivalente PostgreSQL-syntaxis voor CONNECT BY... START WITH van Oracle?

  3. SELECTEER * VAN tbl WHERE clm LIKE CONCAT('%',<andere sql-query LIMIT 1>,'%') - HOE?

  4. Hoe voer ik een ingevoegde identiteit in en retourneer ik met Dapper?