Кажется, я не могу получить удаленный доступ к Mysql, запущенному в экземпляре Google Cloud / Compute. Я пытаюсь выполнить обычную ванильную установку.
Я создал экземпляр, используя Debian, который используется по умолчанию.
Я выполнил установку apt-get для mysql, и, как ни странно, он вместо этого установил MariaDB. Хорошо.
Я запустил sudo mysql mysql_secure_installation и следовал подсказкам. Как ни странно, он оставил строку mysql.users для «root» со значением столбца плагина «unix_socket», что позволяет только локальный доступ с использованием sudo. Хорошо. Я добавлю нового пользователя.
Я вошел в систему локально и выполнил:
создать пользователя 'myname' @ '%', идентифицированного 'mypass';
предоставить все привилегии для *. * to 'mypass' @ '%';
привилегии сброса;
Я могу подключиться с помощью 'myname' с localhost.
Я открыл брешь в брандмауэре Google Cloud для порта 3306 в 0.0.0.0/0. Я знаю, что сделал это правильно, потому что я создал идентичное правило для порта 8088, и я могу удаленно связываться с этим портом без проблем.
Когда я пытаюсь подключиться к mysql с удаленного компьютера, я получаю сообщение «Невозможно подключиться к удаленный хост: в соединении отказано ".
Это может быть проблема с сетью или проблема с MySQL, и я не могу понять, что именно. Есть идеи?
понял. Глубоко в конфигурационных файлах, в /etc/mysql/maria.conf.d/50-server.cnf, похоронены эти невероятные строки:
# 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
Comment out the bind-address and it works.
This является следствием исключительно плохого решения Debian установить MariaDB, когда вы спрашиваете MySql. Есть ряд запутанных конфигурационных файлов, названных поочередно mysql* и mariadb*, и ни один из них не делает того, на что он намекает.
.