Тук има три проблема.
1 - Забравете за SSH тунела за сега
Не можете да свържете MySQL към повече от един конкретен IP. Първият bind-address
клаузата е отменена (следователно игнорирана) от втората. Вашият сървър слуша само 99.99.99.99
.
Причината, поради която можете да се свържете с -h localhost
но не и с -h 127.0.0.1
е, че в първата форма всъщност не се свързвате през TCP/IP, а през локален сокет.
Погледнете във вашия my.cnf
за socket
клауза.
Премахнете един излишен bind-address
клауза. Може да искате да използвате bind-address=0.0.0.0
, който инструктира демона на MySQL да слуша всички мрежови интерфейси.
2 - Нека настроим вашия SSH тунел
Причината за грешката ви ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
не ми е очевидно. подозирам SSH тунелът всъщност се установява само когато получи заявка за връзка (във вашия случай, когато стартирате mysql
клиент). Тъй като вашият сървър не слуша 127.0.0.1 (вижте предишния параграф), SSH тунелът не може да бъде установен, връзката се проваля и вашият клиент го интерпретира като мрежова грешка.
3 - Защо mysql -v -h localhost -P 9989 -u user userdb -p
неуспешно
Моля, публикувайте изхода на
[редактиране:току-що добавен ...OR host LIKE 'localhost'
по-долу, тъй като това може да е от значение за целите на отстраняването на неизправности]
mysql > SELECT user, host FROM mysql.user WHERE user LIKE 'user' OR host LIKE 'localhost';
(заменете 'user'
, след LIKE
клауза, с действителното потребителско име, ако е необходимо)
MySQL контролът за достъп проверява както потребителското име, така и паролата (user
) и произхода на връзката (host
) за идентифициране на потребител. Вероятно не сте създали потребител 'user'@'localhost'
.
N.B.:тъй като mysql.com е недостъпен от моето местоположение в момента, не мога да направя връзка към съответните страници с ръководство.