sql >> Databáze >  >> RDS >> Mysql

Jak přistupovat k webové službě databáze MySQL přes LAN?

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.




  1. Jak nasadit server MariaDB do kontejneru Docker

  2. Omezit denní přístup

  3. Proč v psql nemají některé příkazy žádný účinek?

  4. Existuje MySQL.. INSERT... ON DUPLICATE KEY SELECT?