Pokud se jedná o MySQL, není síť databázového serveru ve výchozím nastavení povolena. Chcete-li povolit síť v MySQL, musíte najít aktivní konfigurační soubor MySQL s názvem my.cnf . A upravte to.
Vysvětlím, jak to udělat na Ubuntu 12.04, ale pokyny jsou podobné pro většinu všech instalací Linuxu.
Povolit MySQL Networking
Nejprve otevřete soubor pomocí editoru, jako je nano . Možná budete muset spustit příkaz pomocí sudo :
sudo nano /etc/mysql/my.cnf
Poté vyhledejte v konfiguračním souboru oblast s bind-address možnost:
# 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
Nyní změňte bind-address nastavení na následující:
bind-address = 0.0.0.0
Poté uložte soubor a restartujte MySQL takto:
sudo service mysql restart
A nyní bude vaše databáze MySQL schopna přijímat jiná než lokální připojení ze vzdálených počítačů.
Zkontrolujte, zda je port MySQL 3306 je Open
To znamená, že i když je síť povolena, měli byste stále zkontrolovat, zda se můžete připojit ke vzdálenému počítači z příkazového řádku pomocí síťového nástroje, jako je nmap . Možná máte bránu firewall na 192.168.1.10 blokování MySQL portu 3306 takže musíte zkontrolovat, zda je otevřeno nebo zavřeno takto:
nmap 192.168.1.10 -p3306
A pokud port 3306 je otevřená, toto bude odpověď; všimněte si open pod STATE :
Starting Nmap 6.40 ( https://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
Ale pokud port 3306 je zavřeno, dostanete toto; všimněte si closed pod STATE :
Starting Nmap 6.40 ( https://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
Zkontrolujte své uživatelské granty MySQL
Nyní, když je vše hotovo, váš databázový server MySQL by měl být přístupný v síti. Musíte se však ujistit, že uživatel databáze, kterého používáte, se může připojit ze vzdáleného počítače ve vaší síti LAN. Přihlaste se tedy do MySQL a spusťte tento příkaz, abyste viděli, jaké granty by uživatel mohl mít:
SELECT user, host FROM `mysql`.`user`;
Zobrazí se vám seznam uživatelů a hostitelů připojených k těmto uživatelům v MySQL. Jde o to, že většina uživatelů má přístupová práva pouze k localhost nebo 127.0.0.1 . Některým je udělen zástupný hostitel % . Musíte se podívat na tento seznam a zjistit, zda uživatel, kterého chcete použít, má hostitele se zástupným znakem (% ) nebo konkrétní IP adresu, která je k nim připojena. Můžete zkontrolovat GRANT uživatele s spuštěním takovéto linky; samozřejmě změnit [your_database_user] a [hostname] aby odpovídala vašemu nastavení:
SHOW GRANTS FOR '[your_database_user]'@'[hostname]';
To by vám mělo ukázat seznam dostupných GRANT s pro uživatele na konkrétním hostiteli. Pokud mají GRANT s, které by umožňovaly vzdálený přístup – například pomocí zástupného znaku % hostitel – pak je vše připraveno. Pokud nemají žádné GRANT s můžete spustit následující příkazy MySQL; samozřejmě změnit [your_database] a [your_database_user] aby odpovídala vašemu nastavení:
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;
Oba GRANT linky aplikují poměrně standardní sadu přístupových práv k databázi. První řádek je použije pro jakékoli připojení v rozsahu sítě LAN 192.168.x.x . Druhý řádek je použije na jakékoli připojení v rozsahu sítě LAN 10.x.x.x . Rád to dělám, abych pokryl všechny základny na interních sítích. Poslední FLUSH PRIVILEGES; řádek v podstatě říká MySQL, aby znovu načetla tabulky uživatelských oprávnění, které umožňují, aby tato udělení vstoupila v platnost.