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 ( 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
Ale pokud port 3306
je zavřeno, dostanete toto; všimněte si closed
pod 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
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.