MySQL - přístup z jakékoliv adresy na internetu

Diskuze o linuxu, rady, návody, zajímavosti.
Zamčeno
4smart.cz
Administrátor
Příspěvky: 1373
Registrován: úte 12. říj 2010 9:16:11
Kontaktovat uživatele:

MySQL - přístup z jakékoliv adresy na internetu

Příspěvek od 4smart.cz »

Lukas Mace píše: Jedná se pouze o školní projekt. Vytvořil jsem u vás server, kterému byla přidělená veřejná IPv4 adresa. V phpMyAdmin jsem se přihlásil jako root a pomocí SQL vytvořil potřebnou tabulku, domnívám se, že to asi stačit nebude že? Do projektu potřebuji zadat adresu url a přihlašovací údaje, v phpMyAdmin však vidím pouze localhost. Cesta k tabulce vypadá tedy takto Localhost >mysql>pgj2a. Omlouvám se za možná hloupé dotazy, ale mám s MySQl pouze minimální zkušenosti.
Výchozí nastavení MySQL serveu dovoluje připojení pouze z localhostu. Toho využívá i PhpMyAdmin ve Vaší instalaci. Pokud má MySQL naslouchat i na jiných adresách, je třeba upravit konfiguraci MySQL serveru, resp v /etc/mysql/my.cnf.

Kód: Vybrat vše

bind-address    = 0.0.0.0
Nastavením 0.0.0.0 říkáte MySQL serveru, že má naslouchat na všech IP adresách virtuálního serveru.
Toto řešení ale není příliš bezpečné. Špetku bezpečnosti přidá ještě změna portu MySQL serveru, výchozí je 3306. Je dobré zvolit jinou hodnotu, například 5000, v /etc/mysql/my.cnf:

Kód: Vybrat vše

port=5000
Při použití nestandardního portu je třeba myslet i na klienty, kteří se k databázi připojují, bude třeba specifikovat tento port, pokud se budou připojovat k Vašemu serveru !!
Po provedení změn v konfiguraci je třeba databázový server restartovat.

Kód: Vybrat vše

service mysql restart
Dále je třeba zkontrolovat a upravit tzv. Granty, nebo vytvořit uživatele, pod nímž je možné se odkudkoliv přihlásit, například:

Kód: Vybrat vše

CREATE USER 'uzivatel'@'%' IDENTIFIED BY 'nejake_heslo';
GRANT ALL PRIVILEGES ON *.* TO 'uzivatel'@'%
Znak % znamená, že se uživatel může připojit odkudkoliv.
Pak možná zadejte pro jistotu ještě:

Kód: Vybrat vše

FLUSH PRIVILEGES;
Mělo by to fungovat.
J.M.
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8146
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Re: MySQL - přístup z jakékoliv adresy na internetu

Příspěvek od xsouku04 »

Já ještě přidám, že dovolit připojování na Mysql server ze všech ip adres je obvzláště nebezpečné v tom případě, že máte nastaveno defaultní, slabé, nebo dokonce žádné přihlašovací heslo. Proto je ve výchozím stavu přihlašování z jiných ip adres často zakázáno.
mobilemanic
Příspěvky: 486
Registrován: čtv 10. říj 2013 10:20:15

Re: MySQL - přístup z jakékoliv adresy na internetu

Příspěvek od mobilemanic »

Tak pokud to otevřu všem a usery mám pouze na určité ip, tak je to bezpečné alespoň na půl... Hlavně nedávat roota ze všech ip, to je pak větší díra:)
MaT
Příspěvky: 364
Registrován: pát 29. bře 2013 14:35:14

Re: MySQL - přístup z jakékoliv adresy na internetu

Příspěvek od MaT »

Toto řešení krajně nedoporučuji, maximálně tak na lokální síti. A změna portu tomu podle mě moc nepomůže, to je spíš "security by obscurity". Pokud už potřebujete přistupovat vzdáleně "přímo" na MySQL server, co běží někde jinde, udělejte si na to ssh tunel. Je to strašně jednoduché - pokud Vám na lokálním stroji neběží také MySQL (a tudíž port 3306 je volný) a na server se můžete připojit přes ssh, tak nějak takto:

Kód: Vybrat vše

ssh -L 3306:localhost:3306 hostname_serveru
Pokud Vám lokálně MySLQ už běží (třeba pro lokální vývoj), tak prostě jako port na lokálním stroji použijete jakýkoliv jiný (jako neroot by to měl být port s číslem vyšším než 1024, nižší by Vás systém neměl nechat). Já třeba používám tenhle:

Kód: Vybrat vše

ssh -L 33306:localhost:3306 hostname_serveru
No a pak připojení z lokálního stroje na server vypadá nějak takto:

Kód: Vybrat vše

mysql -P 33306 localhost
Vše pak jede šifrovaným kanálem a nikdo Vám heslo nezachytí.
orgoj
Příspěvky: 13
Registrován: stř 20. dub 2011 22:33:35

Re: MySQL - přístup z jakékoliv adresy na internetu

Příspěvek od orgoj »

Samotne ssh se nevzpamatuje z vypadku. Pouzil bych radeji autossh nebo VPN.
Autossh monitoruje spojeni a pripadne ssh spusti znovu.
Instalace napr. podle http://www.everythingcli.org/ssh-tunnel ... t-autossh/
Uživatelský avatar
Largon
Příspěvky: 448
Registrován: pon 07. lis 2011 10:14:09

Re: MySQL - přístup z jakékoliv adresy na internetu

Příspěvek od Largon »

Taky bych raději volil šifrované spojení přes tunel.

Pokud není možné takové řešení použít, tak bych rozhodně nastavil firewall a dovoloval připojení na port MySQL jen z požadovaných IP adres. Tady jsem našel pěkný návod, jak se odpíchnout s nastavením firewallu: Basic Iptables Firewall Configuration.
4smart.cz
Administrátor
Příspěvky: 1373
Registrován: úte 12. říj 2010 9:16:11
Kontaktovat uživatele:

Re: MySQL - přístup z jakékoliv adresy na internetu

Příspěvek od 4smart.cz »

Poznámky k bezpečnosti mají něco do sebe, ale myslím, že tato problematika přesahuje rozsah zadání školního projektu uživatele. Rovněž by použití ssh tunelu muselo být zakomponováno do Javovské aplikace, kterou uživatel řeší v souvislosti s tímto úkolem.
Požadavkem je, aby databáze byla přístupná odkudkoliv a z jakéhokoliv systému a aby se k ní tato aplikace mohla připojovat. Myslím, že pokud uživatel nemusí řešit další záležitosti, které jsou ale jinak v praxi důležité, je jeho úkol výše zmíněným způsobem splněn. Osobně pokud bych měl implementovat nějakou uživatelskou aplikaci a pracovat s nějakou databází, volil cestu implementace nějakého REST API včetně podpory autentizace a šifrování přenosu s pomocí dostupných knihoven.
Vystavovat na internetu databázi jen tak není nikdy bezpečné.

Další podrobnosti k zadání uživatelova projektu, který implementuje na 4smart.cz, mi nejsou známy.

J.M.
Zamčeno