Als dit MySQL is, is netwerken van de databaseserver standaard niet ingeschakeld. Om netwerken in MySQL in te schakelen, moet u het actieve MySQL-configuratiebestand vinden met de naam my.cnf
. En bewerk het.
Ik ga uitleggen hoe je dit kunt doen op Ubuntu 12.04, maar de instructies zijn vergelijkbaar voor bijna elke Linux-installatie.
MySQL-netwerken inschakelen
Open eerst het bestand met een editor zoals nano
. Mogelijk moet u de opdracht uitvoeren via sudo
:
sudo nano /etc/mysql/my.cnf
Zoek vervolgens het gebied in uw configuratiebestand met het bind-address
optie:
# 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
Verander nu dat bind-address
instelling op het volgende:
bind-address = 0.0.0.0
Als dat klaar is, sla het bestand op en herstart MySQL als volgt:
sudo service mysql restart
En nu kan uw MySQL-database niet-lokale hostverbindingen van externe machines aannemen.
Zorg ervoor dat de MySQL-poort 3306
is geopend
Dat gezegd hebbende, zelfs als netwerken ingeschakeld zijn, moet je nog steeds controleren of je verbinding kunt maken met de externe machine vanaf de opdrachtregel met behulp van een netwerktool zoals nmap
. Mogelijk hebt u een firewall op 192.168.1.10
MySQL-poort 3306
blokkeren dus je moet als volgt controleren of het open of gesloten is:
nmap 192.168.1.10 -p3306
En als poort 3306
is open, dit zal de reactie zijn; let op de open
onder 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
Maar als poort 3306
gesloten is, krijg je dit; let op de closed
onder 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
Controleer uw MySQL-gebruikerstoelagen
Nu dat allemaal is gebeurd, moet uw MySQL-databaseserver toegankelijk zijn op het netwerk. Maar dat gezegd hebbende, moet u ervoor zorgen dat uw databasegebruiker die u gebruikt, verbinding mag maken vanaf een externe machine op uw LAN. Dus log in op MySQL en voer deze opdracht uit om te zien welke subsidies de gebruiker kan hebben:
SELECT user, host FROM `mysql`.`user`;
Dit toont u een lijst met gebruikers en hosts die zijn verbonden met die gebruikers in MySQL. Het punt is dat de meeste gebruikers alleen toegangsrechten krijgen voor localhost
of 127.0.0.1
. Sommige krijgen de wildcard-host van %
. U moet die lijst bekijken en zien of de gebruiker die u wilt gebruiken een host met jokertekens heeft (%
) of een specifiek IP-adres dat ermee verbonden is. U kunt de GRANT
. van een gebruiker controleren s door een regel als deze uit te voeren; verander natuurlijk [your_database_user]
en [hostname]
overeenkomen met uw instellingen:
SHOW GRANTS FOR '[your_database_user]'@'[hostname]';
Dat zou u een lijst moeten tonen met beschikbare GRANT
s voor een gebruiker op een specifieke host. Als ze GRANT
. hebben s die externe toegang toestaan, zoals het gebruik van jokertekens %
host - dan ben je helemaal klaar. Als ze geen GRANT
. hebben s u kunt de volgende MySQL-opdrachten uitvoeren; verander natuurlijk [your_database]
en [your_database_user]
overeenkomen met uw instellingen:
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;
Beide GRANT
lijnen passen een vrij standaard set toegangsrechten toe op een database. De eerste regel past ze toe op elke verbinding in het LAN-netwerkbereik van 192.168.x.x
. De tweede regel past ze toe op elke verbinding in het LAN-netwerkbereik van 10.x.x.x
. Ik doe dat graag om alle bases op interne netwerken te dekken. De laatste FLUSH PRIVILEGES;
regel vertelt MySQL in feite om de tabellen met gebruikersrechten opnieuw te laden, waardoor deze toekenningen van kracht worden.