Jsou zde tři problémy.
1 – Na tunel SSH prozatím zapomeňte
Nemůžete svázat MySQL s více než jednou konkrétní IP adresou. První bind-address
klauzule je přepsána (proto ignorována) druhou. Váš server naslouchá pouze 99.99.99.99
.
Důvod, proč se můžete připojit pomocí -h localhost
ale ne s -h 127.0.0.1
je, že v první formě se ve skutečnosti nepřipojujete přes TCP/IP, ale přes místní soket.
Podívejte se do svého my.cnf
pro socket
doložka.
Odstraňte jednu nadbytečnou bind-address
doložka. Možná budete chtít použít bind-address=0.0.0.0
, který dá démonovi MySQL pokyn, aby naslouchal všem síťová rozhraní.
2 – Pojďme nastavit váš tunel SSH
Důvod vaší chyby ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
není mi zřejmé. Mám podezření SSH tunel je ve skutečnosti vytvořen pouze tehdy, když obdrží požadavek na připojení (ve vašem případě, když spustíte mysql
klient). Protože váš server nenaslouchá 127.0.0.1 (viz předchozí odstavec), nelze vytvořit tunel SSH, připojení se nezdaří a váš klient to interpretuje jako selhání sítě.
3 – Proč mysql -v -h localhost -P 9989 -u user userdb -p
selže
Zveřejněte prosím výstup
[editovat:právě přidáno ...OR host LIKE 'localhost'
níže, protože to může být relevantní pro účely odstraňování problémů]
mysql > SELECT user, host FROM mysql.user WHERE user LIKE 'user' OR host LIKE 'localhost';
(nahraďte 'user'
, za LIKE
klauzule, v případě potřeby se skutečným uživatelským jménem)
Řízení přístupu MySQL kontroluje uživatelské jméno i heslo (user
) a původ připojení (host
) k identifikaci uživatele. Pravděpodobně jste nevytvořili uživatele 'user'@'localhost'
.
Pozn.:mysql.com je v tuto chvíli z mého místa nedostupný, nemohu tedy odkazovat na příslušné manuálové stránky.