sql >> Database >  >> RDS >> Mysql

Hoe toegang krijgen tot een MySQL-databasewebservice via LAN?

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.




  1. Een resultatenset converteren van SQL-array naar array van tekenreeksen

  2. Steekproefomvang en de duur van UPDATE-STATISTIEKEN:maakt het uit?

  3. MySQL-invoegfout:ER_BAD_FIELD_ERROR:Onbekende kolom '2525' in 'veldlijst'

  4. Probleem met Ruby on Rails-installatie - Hoe gebruik ik de WAMP MySQL-installatie?