Назад | Перейти на главную страницу

Не удается получить доступ к MariaDB из экземпляра Google Cloud / Compute

Кажется, я не могу получить удаленный доступ к Mysql, запущенному в экземпляре Google Cloud / Compute. Я пытаюсь сделать обычную ванильную установку.

  1. Я создал экземпляр, используя Debian по умолчанию.

  2. Я выполнил установку apt-get для mysql, и, как ни странно, вместо нее был установлен MariaDB. Хорошо.

  3. Я запустил sudo mysql mysql_secure_installation и следил за подсказками. Как ни странно, он оставил строку mysql.users для «root» со значением столбца плагина «unix_socket», что позволяет только локальный доступ с использованием sudo. Хорошо. Я добавлю нового пользователя.

  4. Я зашел локально и запустил:

    создать пользователя myname @ '%', идентифицированного mypass;

    предоставить все привилегии на *. * в 'mypass' @ '%';

    сбросить привилегии;

Я могу подключиться с помощью «myname» с localhost.

  1. Я открыл дыру в брандмауэре Google Cloud для порта 3306 на 0.0.0.0/0. Я знаю, что сделал это правильно, потому что я создал идентичное правило для порта 8088, и я могу удаленно общаться с этим портом.

  2. Когда я пытаюсь подключиться к 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

Закомментируйте адрес привязки, и он работает.

это является следствием исключительно плохого решения Debian установить MariaDB, когда вы запрашиваете MySql. Существует ряд запутанных файлов конфигурации, которые поочередно называются mysql * и mariadb *, и ни один из них не выполняет то, для чего предназначен.