Om detta är MySQL, är nätverk av databasservern inte aktiverat som standard. För att aktivera nätverk i MySQL måste du hitta den aktiva MySQL-konfigurationsfilen med namnet my.cnf
. Och redigera den.
Jag ska förklara hur man gör detta på Ubuntu 12.04, men instruktionerna är liknande för de flesta Linux-installationer.
Aktivera MySQL-nätverk
Öppna först filen med en redigerare som nano
. Du kan behöva köra kommandot via sudo
:
sudo nano /etc/mysql/my.cnf
Leta sedan efter området i din konfigurationsfil med bind-address
alternativ:
# 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
Ändra nu den bind-address
inställning till följande:
bind-address = 0.0.0.0
När det är klart, spara filen och starta om MySQL så här:
sudo service mysql restart
Och nu kommer din MySQL-databas att kunna ta icke-lokalvärdanslutningar från fjärrdatorer.
Kontrollera MySQL-porten 3306
är öppen
Som sagt, även med nätverk aktiverat, bör du fortfarande kontrollera om du kan ansluta till fjärrmaskinen från kommandoraden med ett nätverksverktyg som nmap
. Du kanske har en brandvägg på 192.168.1.10
blockerar MySQL-porten 3306
så du måste kontrollera om den är öppen eller stängd så här:
nmap 192.168.1.10 -p3306
Och om port 3306
är öppen, kommer detta att vara svaret; notera 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 om port 3306
är stängd får du detta; notera 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
Kontrollera dina MySQL User Grants
Nu när allt är klart bör din MySQL-databasserver vara tillgänglig på nätverket. Men som sagt, du måste se till att din databasanvändare du använder får ansluta från en fjärrdator på ditt LAN. Så logga in på MySQL och kör det här kommandot för att se vilka anslag användaren kan ha:
SELECT user, host FROM `mysql`.`user`;
Detta kommer att visa dig en lista över användare och värdar som är anslutna till dessa användare i MySQL. Saken är att de flesta användare bara ges åtkomstprivilegier till localhost
eller 127.0.0.1
. Vissa tilldelas jokerteckenvärden %
. Du måste titta på den listan och se om användaren du vill använda har en jokerteckenvärd (%
) eller en specifik IP-adress kopplad till dem. Du kan kontrollera en användares GRANT
s genom att köra en rad så här; naturligtvis ändra [your_database_user]
och [hostname]
för att matcha dina inställningar:
SHOW GRANTS FOR '[your_database_user]'@'[hostname]';
Det bör visa dig en lista över tillgängliga GRANT
s för en användare på en specifik värd. Om de har GRANT
s som skulle tillåta fjärråtkomst – som att använda jokertecken %
värd – då är du redo. Om de inte har någon GRANT
s du kan köra följande MySQL-kommandon; naturligtvis ändra [your_database]
och [your_database_user]
för att matcha dina inställningar:
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;
Båda GRANT
linjer tillämpar en ganska standarduppsättning av åtkomsträttigheter till en databas. Den första raden tillämpar dem på alla anslutningar inom LAN-nätverksområdet 192.168.x.x
. Den andra raden tillämpar dem på alla anslutningar inom LAN-nätverksområdet 10.x.x.x
. Jag gillar att göra det för att täcka alla baser på interna nätverk. De sista FLUSH PRIVILEGES;
line säger i princip till MySQL att ladda om användarbehörighetstabellerna som låter dessa beviljande träda i kraft.