sql >> Databasteknik >  >> RDS >> Mysql

MySQL-anslutningen fungerar inte

Här är en snabb checklista för att aktivera fjärranslutningar för MySQL men läs (6) först. Om jag har missat något får du gärna redigera.

1) Din fjärranvändare ansluter via ett konto som skapades med lämplig user,host poster (titta på utdata från välj användare, värd från mysql.user ordning med 1,2 ). Om inte, titta på SKAPA ANVÄNDARE och/eller GRANT kommandon. Undersök resultatet från VISA BIDRAG för användaren.

2) Du har gjort spolningsprivilegier; (Vissa säger att det är onödigt, andra säger att det är det).

3a) Leta reda på din mysql-konfigurationsfil som hänvisas till i 3b) nedan genom att granska informationen i Detta dokument (eller för Windows, troligen ner C:\ProgramData\MySQL\MySQL Server 5.NNN väg). Det varierar beroende på distro för Linux.

3b) Du har ändrat och sparat my.ini (Windows) eller my.cnf (Linux) och ändrad bind-adress bort från 127.0.0.1 eller localhost , till förmån för 0.0.0.0 . Och du har skapat och tog ut följande rad:#skip-nätverk . Det kommer att se ut så här:

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

4) Starta om mysql-demonen. Hur man gör detta varierar beroende på distro.

5) Brandväggsproblem. Kontrollera att porten är 3306 som standard , är öppen för omvärlden (som faktiskt bara kan vara ditt intranät). Detta inkluderar alla andra lager av brandväggar, som AWS EC2 Security Groups eller liknande, om några.

6) Förstå att det finns en säkerhetsrisk förknippad med detta. Om du inte har kunskap om att exponera din mysql-server för fjärranslutningar, utför inte detta.

7) Kör ofta säkerhetsbedömningar med select uttalande som listas i 1. ovan, inklusive granskning av SHOW GRANTS för dessa användare. Överbevilja inte användare med jokertecken i onödan. Ge istället användarna de minimala privilegierna för att de ska få sitt arbete gjort.

8) Undersök ofta misslyckade anslutningsförsök via den allmänna loggen och felloggen som presenteras kort nedan.

För inkommande kan du titta på den allmänna frågeloggen.

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

Så alla frågor kan vara inloggad på Allmän frågelogg om inställningen är aktiverad. Undersök loggen efter "anslut", men särskilt efter Åtkomst nekad för användare att se misslyckade försök. Gör detta regelbundet (inte med några års mellanrum). Jag gör det minst två gånger om dagen. Observera att du självklart kan automatisera rapporteringen genom ett externt program. Omvärlden kommer att banka din server för att komma in som bilden nedan. Det är en verklighet; bered dig på det.

Kolla in manualsidan för Felloggen också, notera varningsnivåer och inställningar för utförlighet baserat på din version.

Jag skulle rekommendera att man skapar en säkerhetskopia efter datum (namngiven som sådan) och raderar loggfilerna efter säkerhetskopieringen för att starta om efter säkerhetskopieringen. Loggfilerna kan snabbt växa sig enorma i storlek, särskilt den allmänna loggen. Glöm inte om du har inställningen på eller av för loggning eller inte.

Du kan använda de två loggarna för att avgöra om ditt anslutningsförsök tog sig förbi brandväggen under stegen här.




  1. PHP :infoga värden för flera kryssrutor i en MySQL-kolumn

  2. Skicka e-post från en utlösare i SQL Server (T-SQL)

  3. Tilldela samma parametervärde flera gånger i pdo execute

  4. Kan LINQ-till-SQL utelämna ospecificerade kolumner vid infogning så att ett standardvärde för databasen används?