sql >> Databasteknik >  >> RDS >> Mysql

Hur får man tillgång till en MySQL-databaswebbtjänst över LAN?

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.




  1. Importera data.sql MySQL Docker Container

  2. Flera relationer mellan två enheter, är detta bra praxis?

  3. Saknar filen /var/lib/mysql/mysql.sock

  4. LOAD DATA INFILE fel 1064