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.