sql >> Database teknologi >  >> RDS >> Mysql

Hvordan får man adgang til en MySQL database webservice over LAN?

Hvis dette er MySQL, er netværk af databaseserveren ikke aktiveret som standard. For at aktivere netværk i MySQL skal du finde den aktive MySQL-konfigurationsfil med navnet my.cnf . Og rediger det.

Jeg vil forklare, hvordan man gør dette på Ubuntu 12.04, men instruktionerne er ens for næsten enhver Linux-installation.

Aktiver MySQL-netværk

Først skal du åbne filen ved hjælp af en editor som nano . Du skal muligvis køre kommandoen via sudo :

sudo nano /etc/mysql/my.cnf

Se derefter efter området i din konfigurationsfil med bind-address mulighed:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1

Skift nu den bind-address indstilling til følgende:

bind-address            = 0.0.0.0

Når det er gjort, gem filen og genstart MySQL sådan her:

sudo service mysql restart

Og nu vil din MySQL-database være i stand til at tage ikke-lokale værtsforbindelser fra fjernmaskiner.

Sørg for, at MySQL-porten 3306 er åben

Når det er sagt, selv med netværk aktiveret, bør du stadig kontrollere, om du er i stand til at oprette forbindelse til fjernmaskinen fra kommandolinjen ved hjælp af et netværksværktøj såsom nmap . Du har muligvis en firewall på 192.168.1.10 blokerer MySQL-port 3306 så du skal tjekke om den er åben eller lukket sådan her:

nmap 192.168.1.10 -p3306

Og hvis port 3306 er åben, vil dette være svaret; bemærk open under STATE :

Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT     STATE SERVICE
3306/tcp open  mysql

Men hvis port 3306 er lukket, får du dette; bemærk den closed under STATE :

Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT     STATE  SERVICE
3306/tcp closed mysql

Tjek dine MySQL-brugertilskud

Nu hvor alt er gjort, skulle din MySQL-databaseserver være tilgængelig på netværket. Men når det er sagt, skal du sørge for, at din databasebruger, du bruger, har tilladelse til at oprette forbindelse fra en ekstern maskine på dit LAN. Så log ind på MySQL og kør denne kommando for at se, hvilke bevillinger brugeren kan have:

SELECT user, host FROM `mysql`.`user`;

Dette vil vise dig en liste over brugere og værter forbundet til disse brugere i MySQL. Sagen er, at de fleste brugere kun får adgangsrettigheder til localhost eller 127.0.0.1 . Nogle tildeles jokertegnet vært på % . Du skal se på listen og se, om den bruger, du vil bruge, har en joker-vært (% ) eller en specifik IP-adresse forbundet til dem. Du kan tjekke en brugers GRANT s ved at køre en linje som denne; selvfølgelig ændre [your_database_user] og [hostname] for at matche dine indstillinger:

SHOW GRANTS FOR '[your_database_user]'@'[hostname]';

Det skulle vise dig en liste over tilgængelige GRANT s for en bruger på en bestemt vært. Hvis de har GRANT s, der ville tillade fjernadgang – såsom at bruge jokertegn % vært – så er du klar. Hvis de ikke har nogen GRANT s du kan køre følgende MySQL-kommandoer; selvfølgelig ændre [your_database] og [your_database_user] for at matche dine indstillinger:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'192.168.0.0/255.255.0.0';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'10.0.0.0/255.0.0.0';
FLUSH PRIVILEGES;

Begge GRANT linjer anvender et ret standard sæt af adgangsrettigheder til en database. Den første linje anvender dem til enhver forbindelse i LAN-netværksområdet 192.168.x.x . Den anden linje anvender dem på enhver forbindelse i LAN-netværksområdet på 10.x.x.x . Jeg kan godt lide at gøre det for at dække alle baser på interne netværk. De sidste FLUSH PRIVILEGES; line fortæller grundlæggende til MySQL at genindlæse brugerprivilegietabellerne, som tillader disse tildelinger at træde i kraft.




  1. Sådan opsætter du asynkron replikering mellem MariaDB Galera-klynger

  2. hvordan man indsætter flere rækker i sqlite android

  3. Arbejde med JavaFX UI og JDBC Applications

  4. Hvordan omdøber man den uploadede fil, før man gemmer den i en mappe?