Как подключиться к базе данных mysql с удаленного компьютера
Обновлено: 21.11.2024
В некоторых случаях вы захотите разместить базу данных на отдельном сервере, а не запускать сервер базы данных и веб-сервер на одном компьютере.
Magento предоставляет возможность подключения к серверу MySQL на другом компьютере. Начиная с Magento 2.4.3, вы также можете настроить Magento для использования базы данных Amazon Web Services (AWS) Aurora без изменения кода.
Aurora — это высокопроизводительный, полностью совместимый сервер MySQL, размещенный на AWS.
Подключение к базе данных AWS Aurora
Использовать Aurora в качестве базы данных так же просто, как указать базу данных в обычной конфигурации установки Magento, используя коннектор базы данных по умолчанию.
При запуске bin/magento setup:install используйте информацию Aurora в полях db-:
Настройка подключения к удаленной базе данных
Это сложная тема, которую должен использовать только опытный администратор сети или администратор базы данных. У вас должен быть root-доступ к файловой системе, и вы должны иметь возможность войти в MySQL как root .
Предпосылки
Прежде чем начать, вы должны:
-
на сервере базы данных на сервере базы данных
- Установите клиент MySQL на своем веб-узле Magento. Подробности смотрите в документации MySQL.
Высокая доступность
Используйте следующие рекомендации для настройки удаленных подключений к базе данных, если ваш веб-сервер или сервер базы данных кластеризованы:
-
Вы должны настроить соединение для каждого узла веб-сервера
Обычно вы настраиваете подключение базы данных к подсистеме балансировки нагрузки базы данных; однако кластеризация базы данных может быть сложной, и ее настройка зависит от вас. Magento не дает конкретных рекомендаций по кластеризации баз данных.
Дополнительную информацию см. в документации по MySQL.
Решение проблем с подключением
Если у вас возникли проблемы с подключением к одному из хостов, сначала проверьте связь с другим хостом, чтобы убедиться, что он доступен. Вам также может понадобиться разрешить соединения с одного хоста на другой, изменив правила брандмауэра и SELinux (если вы используете SELinux).
Создайте удаленное подключение
Чтобы создать удаленное подключение:
На сервере базы данных как пользователь с привилегиями root откройте файл конфигурации MySQL.
Чтобы найти его, введите следующую команду:
Местоположение отображается примерно так:
В Ubuntu 16 путь обычно следующий: /etc/mysql/mysql.conf.d/mysqld.cnf .
Поищите в файле конфигурации bind-address .
Если он существует, измените значение следующим образом.
Если его нет, добавьте его в раздел [mysqld].
См. документацию по MySQL, особенно если у вас кластерный веб-сервер.
Перезапустите службу MySQL:
CentOS: перезапуск службы mysqld
Ubuntu: перезапуск службы mysql
Если MySQL не запускается, найдите источник проблемы в системном журнале. Решите проблему, используя документацию MySQL или другой авторитетный источник.
Предоставить доступ пользователю базы данных
Чтобы ваш веб-узел мог подключаться к серверу базы данных, вы должны предоставить пользователю базы данных веб-узла доступ к базе данных на удаленном сервере.
В этом примере пользователю root базы данных предоставляется полный доступ к базе данных на удаленном хосте.
Чтобы предоставить доступ пользователю базы данных:
- Войдите на сервер базы данных.
- Подключитесь к базе данных MySQL в качестве пользователя root.
Введите следующую команду:
Если ваш веб-сервер кластеризован, введите одну и ту же команду на каждом веб-сервере. Вы должны использовать одно и то же имя пользователя для каждого веб-сервера.
Проверить доступ к базе данных
На узле веб-узла введите следующую команду, чтобы убедиться, что подключение работает:
Если ваш веб-сервер кластеризован, введите команду на каждом хосте веб-сервера.
Автор: Rackspace Support
В этой статье объясняется, как настроить пользователя на сервере MySQL® для удаленного подключения к базе данных MySQL.
Примечание. В статье показано, как подключиться к экземпляру MySQL, расположенному локально на сервере. Соответствующие шаги для облачных баз данных см. в разделе Подключение к экземпляру облачной базы данных.
Для выполнения этих действий у вас должен быть доступ к локальному серверу, чтобы войти в систему как пользователь root MySQL.
Получить ваш IP-адрес
Вам необходимо знать адрес интернет-протокола (IP) компьютера, с которого вы подключаетесь. Вы можете получить эту информацию, посетив один из следующих сайтов:
Предоставить доступ
Выполните следующие шаги, чтобы предоставить доступ пользователю с удаленного хоста:
Войдите на сервер MySQL локально как пользователь root, используя следующую команду:
Вам будет предложено ввести корневой пароль MySQL.
Примечание. Если вы получаете доступ к MySQL без ввода пароля, рассмотрите возможность запуска сценария mysql_secure_installation, который устанавливает корневой пароль MySQL и обновляет другие параметры для повышения безопасности.Управляемые службы Microsoft SQL Server помогут вам управлять экземплярами SQL Server.
Используйте команду GRANT в следующем формате, чтобы разрешить доступ для удаленного пользователя. Убедитесь, что вы изменили 1.2.3.4 на IP-адрес, который вы получили ранее, а my_password на пароль, который вы хотите использовать для fooUser:
Этот оператор предоставляет ВСЕ разрешения новому пользователю, когда пользователь подключается с указанного IP-адреса, используя указанный пароль.
Проверить подключение удаленно
Для удаленной проверки подключения подключитесь к серверу MySQL с другого сервера Linux®. В следующем примере в качестве IP-адреса сервера MySQL используется 44.55.66.77:
Соображения
При настройке удаленного пользователя учитывайте следующую информацию:
Локальный пользователь отличается от удаленного пользователя. Например, fooUser@localhost — это не то же самое, что fooUser@1.2.3.4. Если вы хотите, чтобы оба пользователя имели одинаковые разрешения, вам нужно продублировать разрешения.
Мы не рекомендуем предоставлять ВСЕ разрешения. Для обычных пользователей мы рекомендуем предоставить разрешения GRANT SELECT, INSERT, UPDATE, DELETE.
Чтобы предоставить доступ только к определенной таблице, вы можете использовать команду database.table. Например, на предыдущем шаге вы могли использовать fooDatabase.fooTable вместо fooDatabase .
Если вы используете iptables, вам необходимо добавить в правило брандмауэра запись для порта 3306 протокола управления передачей (TCP). В качестве номера порта можно использовать имя mysql.
Поделитесь этой информацией:
© 2020 Rackspace США, Inc.
Если не указано иное, содержимое этого сайта находится под лицензией Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License
Нередко базы данных и веб-серверы размещаются на одном локальном компьютере. Однако сейчас многие организации переходят на более распределенную среду.
Отдельный сервер базы данных может повысить безопасность и производительность оборудования, а также позволит вам быстро масштабировать ресурсы. В таких случаях обучение эффективному управлению удаленными ресурсами является приоритетом.
В этом руководстве показано, как включить удаленные подключения к базе данных MySQL.
- Доступ к окну терминала/командной строке
- Удаленный сервер MySQL
- Права Sudo или root на локальных и удаленных компьютерах
Примечание. Если у вас нет прямого доступа к серверу MySQL, вам необходимо установить безопасное соединение SSH. Если вам нужна помощь, мы подготовили подробное руководство по использованию SSH для подключения к удаленному серверу. Эта статья обязательна к прочтению для всех, кто плохо знаком с этим процессом.
Удаленное подключение к серверу MySQL
Разрешение подключений к удаленному серверу MySQL настраивается в 3 этапа:
- Редактировать файл конфигурации MySQL
- Настроить брандмауэр
- Подключиться к удаленному серверу MySQL
Шаг 1. Отредактируйте файл конфигурации MySQL
1.1 Доступ к файлу mysqld.cnf
Используйте предпочитаемый текстовый редактор, чтобы открыть файл mysqld.cnf. В этом примере используется текстовый редактор nano в Ubuntu 18.04. Введите следующую команду в интерфейсе командной строки, чтобы получить доступ к файлу конфигурации сервера MySQL:
Расположение файла может различаться в зависимости от используемого дистрибутива и версии. Если файл конфигурации MySQL не находится в своем расположении по умолчанию, попробуйте использовать команду Linux find для его обнаружения.
1.2 Изменение IP-адреса привязки
Теперь у вас есть доступ к файлу конфигурации сервера MySQL. Прокрутите вниз до строки bind-address и измените IP-адрес. Текущий IP-адрес по умолчанию установлен на 127.0.0.1. Этот IP-адрес ограничивает соединения MySQL с локальным компьютером.
Новый IP-адрес должен совпадать с адресом машины, которой требуется удаленный доступ к серверу MySQL. Например, если вы привяжете MySQL к 0.0.0.0, то любая машина, которая подключается к серверу MySQL, также сможет подключиться к нему.
После внесения необходимых изменений сохраните и закройте файл конфигурации.
Примечание. Удаленный доступ дополнительно проверяется с использованием правильных учетных данных и пользовательских параметров, которые вы определили для своих пользователей MySQL.
1.3 Перезапустите службу MySQL
Примените изменения, внесенные в файл конфигурации MySQL, перезапустив службу MySQL:
Затем необходимо изменить текущие настройки брандмауэра, чтобы разрешить трафик на порт MySQL по умолчанию.
Шаг 2. Настройте брандмауэр для разрешения удаленного подключения к MySQL
Во время редактирования файла конфигурации вы, вероятно, заметили, что порт MySQL по умолчанию — 3306.
Если вы уже настроили брандмауэр на своем сервере MySQL, вам необходимо открыть трафик для этого конкретного порта. Следуйте приведенным ниже инструкциям, соответствующим используемой службе брандмауэра.
Вариант 1: UFW (простой брандмауэр)
UFW — это инструмент брандмауэра по умолчанию в Ubuntu. В окне терминала введите следующую команду, чтобы разрешить трафик и сопоставить IP-адрес и порт:
Система подтверждает, что правила были успешно обновлены.
Вариант 2: БрандмауэрD
Инструмент управления firewalld в CentOS использует зоны, чтобы указать, какой трафик должен быть разрешен.
Создайте новую зону, чтобы установить правила для трафика сервера MySQL. Имя зоны в нашем примере — mysqlrule, и мы использовали IP-адрес из предыдущего примера 133.155.44.103:
Вы успешно открыли порт 3306 в брандмауэре.
Вариант 3. Откройте порт 3306 с помощью iptables
Утилита iptables по умолчанию доступна в большинстве дистрибутивов Linux. Введите следующую команду, чтобы открыть порт MySQL 3306 для неограниченного трафика:
Чтобы ограничить доступ к определенному IP-адресу, используйте вместо этого следующую команду:
Эта команда предоставляет доступ к 133.155.44.103. Вам нужно будет заменить его IP-адресом вашего удаленного подключения.
Необходимо сохранить изменения, внесенные в правила iptables. В дистрибутиве на основе Ubuntu введите следующие команды:
Введите следующую команду, чтобы сохранить новые правила iptables в CentOS:
Шаг 3. Подключитесь к удаленному серверу MySQL
Теперь ваш удаленный сервер готов принимать соединения. Используйте следующую команду, чтобы установить соединение с удаленным сервером MySQL:
Имя пользователя -u в команде представляет ваше имя пользователя MySQL. -h mysql_server_ip — это IP-адрес или имя хоста вашего сервера MySQL. Параметр -p предлагает вам ввести пароль для имени пользователя MySQL.
Вы должны увидеть вывод, аналогичный приведенному ниже:
Как предоставить удаленный доступ к новой базе данных MySQL?
Если у вас еще нет баз данных, вы можете легко создать базу данных, введя следующую команду в оболочке MySQL:
Чтобы предоставить удаленному пользователю доступ к определенной базе данных:
Имя базы данных, имя пользователя, удаленный IP-адрес и пароль должны соответствовать информации, которую вы хотите использовать для удаленного подключения.
Как предоставить удаленный доступ к существующей базе данных MySQL
Для предоставления пользователю удаленного доступа к существующей базе данных требуется набор из двух команд:
Пользователь 1 теперь может получить доступ к вашей БД из удаленного местоположения с IP-адресом 133.155.44.103.
Примечание. Узнайте все, что вам нужно знать о серверах баз данных и о том, как они работают, в нашей статье Что такое сервер баз данных.
В этой статье вы получили ценную информацию об общих принципах удаленного подключения к MySQL.
С соответствующими учетными данными пользователь с указанного IP-адреса теперь может получить доступ к вашему серверу MySQL с удаленного компьютера.
Ваш сервер баз данных содержит таблицы с важными данными. Графический запрос этих данных на локальном компьютере — самый простой способ взаимодействия с вашей базой данных. Но удаленное подключение к вашему серверу базы данных обычно влечет за собой настройку MySQL для прослушивания на каждом интерфейсе, ограничение доступа к порту 3306 с помощью вашего брандмауэра и настройку разрешений пользователя и хоста для аутентификации. А разрешение подключений к MySQL напрямую может быть проблемой безопасности.
Используя такие инструменты, как HeidiSQL для Windows, Sequel Pro для macOS или кроссплатформенный MySQL Workbench, вы можете безопасно подключаться к своей базе данных через SSH, минуя эти громоздкие и потенциально небезопасные шаги. В этом кратком руководстве показано, как подключиться к удаленной базе данных с помощью MySQL Workbench.
Предпосылки
Для выполнения этого руководства вам потребуется:
- Сервер с MySQL, доступный через SSH. Например, вы можете следовать руководству How To Install MySQL on Ubuntu 14.04, чтобы быстро приступить к работе.
- MySQL Workbench, установленный на вашем локальном компьютере, доступен для всех основных платформ, включая Windows, macOS, Ubuntu Linux, RedHat Linux и Fedora. Посетите страницу загрузки MySQL Workbench, чтобы загрузить программу установки для вашей операционной системы.
Вам также потребуется следующая информация о сервере базы данных, который вы планируете использовать:
- Общедоступный IP-адрес сервера, на котором работает MySQL.
- Порт SSH сервера, если он настроен иначе, чем порт 22.
- Учетная запись пользователя с доступом к серверу по SSH с паролем или открытым ключом.
- Имя пользователя и пароль для учетной записи MySQL, которую вы хотите использовать.
Подключение к серверу базы данных с помощью SSH
После того как вы установили MySQL Workbench на свой компьютер, запустите программу. Создайте новое подключение, щелкнув значок + рядом с MySQL Connections в главном окне.
Чтобы создать соединение, введите следующие данные:
- В поле «Имя подключения» введите любое имя, которое поможет вам идентифицировать подключение, которое вы устанавливаете позже. Это может быть что-то вроде database_for_myapp или что-то более описательное.
- Измените метод подключения на стандартный TCP/IP через SSH.
- В качестве имени хоста SSH введите IP-адрес вашего сервера MySQL. Если ваш сервер принимает подключения SSH через другой порт, введите IP-адрес, двоеточие и номер порта.
- В поле Имя пользователя SSH введите имя пользователя, которое вы используете для входа на сервер через SSH.
- В поле «Пароль SSH» введите пароль, который вы используете для своего пользователя SSH. Если вы используете открытые ключи вместо паролей, выберите ключ SSH для аутентификации.
- Для имени хоста MySQL и порта сервера MySQL используйте значения по умолчанию.
- В поле "Имя пользователя" введите имя пользователя MySQL.
- В поле «Пароль» вы можете либо ввести пароль, либо оставить его пустым. Если вы не сохраните пароль MySQL в MySQL Workbench, при каждой попытке подключения к базе данных будет запрашиваться пароль.
- Выберите «Проверить подключение», чтобы убедиться в правильности настроек.
- Нажмите "ОК", чтобы создать подключение.
После подключения к базе данных вы можете просмотреть сведения об экземпляре MySQL, включая состояние базы данных, текущие подключения и конфигурацию базы данных, а также пользователей и разрешения. MySQL Workbench также поддерживает импорт и экспорт файлов дампа MySQL, что позволяет быстро создавать резервные копии и восстанавливать базу данных.
Чтобы управлять своими подключениями, откройте меню «База данных» и выберите параметр «Подключение к базе данных» или нажмите ⌘U на Mac или CTRL+U в системах Windows и Linux. Чтобы подключиться к другой базе данных, создайте новое подключение, используя тот же процесс, который вы использовали для первого подключения.
Заключение
Использование MySQL Workbench для доступа к удаленной базе данных MySQL через туннель SSH — это простой и безопасный способ управления базами данных, не выходя из локального компьютера. Используя метод подключения, описанный в этом руководстве, вы можете обойти многочисленные изменения конфигурации сети и безопасности, которые обычно требуются для удаленного подключения к MySQL.
Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!
Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.
Многие веб-сайты и приложения начинают работу с веб-сервера и серверной части базы данных, размещенных на одном компьютере. Однако со временем такая установка может стать громоздкой и трудно масштабируемой. Распространенным решением является разделение этих функций путем настройки удаленной базы данных, позволяющей серверу и базе данных расти в своем собственном темпе на своих собственных компьютерах.
Одна из наиболее распространенных проблем, с которой сталкиваются пользователи при попытке настроить удаленную базу данных MySQL, заключается в том, что их экземпляр MySQL настроен только на прослушивание локальных подключений. Это параметр MySQL по умолчанию, но он не будет работать для удаленной настройки базы данных, поскольку MySQL должен иметь возможность прослушивать внешний IP-адрес, по которому можно связаться с сервером. Чтобы включить это, откройте файл mysqld.cnf:
Перейдите к строке, которая начинается с директивы bind-address. Это будет выглядеть так:
По умолчанию для этого значения установлено значение 127.0.0.1 , что означает, что сервер будет искать только локальные соединения. Вам нужно будет изменить эту директиву, чтобы она ссылалась на внешний IP-адрес. В целях устранения неполадок вы можете установить эту директиву для подстановочного IP-адреса, либо * , :: , либо 0.0.0.0 :
Примечание. В некоторых версиях MySQL директива bind-address по умолчанию может отсутствовать в файле mysqld.cnf. В этом случае добавьте следующую выделенную строку в конец файла:
После изменения этой строки сохраните и закройте файл ( CTRL + X , Y , затем ENTER , если вы редактировали его с помощью nano ).
Затем перезапустите службу MySQL, чтобы изменения, внесенные в mysqld.cnf, вступили в силу:
Если у вас есть существующая учетная запись пользователя MySQL, которую вы планируете использовать для подключения к базе данных с удаленного хоста, вам потребуется перенастроить эту учетную запись для подключения с удаленного сервера, а не с локального хоста. Для этого откройте клиент MySQL как пользователь root MySQL или с другой учетной записью привилегированного пользователя:
Если вы включили аутентификацию по паролю для root, вместо этого вам потребуется использовать следующую команду для доступа к оболочке MySQL:
Чтобы изменить хост пользователя, вы можете использовать команду MySQL RENAME USER. Выполните следующую команду, заменив sammy на имя вашей учетной записи пользователя MySQL, а remote_server_ip — на IP-адрес вашего удаленного сервера:
В качестве альтернативы вы можете создать новую учетную запись пользователя, которая будет подключаться только с удаленного хоста с помощью следующей команды:
Примечание. Эта команда создаст пользователя, который проходит аутентификацию с помощью подключаемого модуля аутентификации MySQL по умолчанию, caching_sha2_password . Однако существует известная проблема с некоторыми версиями PHP, которая может вызвать проблемы с этим подключаемым модулем.
Если вы планируете использовать эту базу данных с приложением PHP — например, phpMyAdmin — вы можете создать удаленного пользователя, который будет аутентифицироваться с помощью более старого, хотя и безопасного плагина mysql_native_password:
Если вы не уверены, вы всегда можете создать пользователя, который проходит аутентификацию с помощью caching_sha2_plugin, а затем ИЗМЕНИТЬ его позже с помощью этой команды:
Затем предоставьте новому пользователю права, соответствующие вашим потребностям. В следующем примере пользователю предоставляются глобальные привилегии CREATE , ALTER и DROP баз данных, таблиц и пользователей, а также полномочия INSERT , UPDATE и DELETE данных из любой таблицы на сервере. Он также предоставляет пользователю возможность запрашивать данные с помощью SELECT , создавать внешние ключи с помощью ключевого слова REFERENCES и выполнять операции FLUSH с привилегией RELOAD. Тем не менее, вы должны предоставлять пользователям только те разрешения, которые им нужны, поэтому не стесняйтесь настраивать свои собственные привилегии пользователя по мере необходимости.
После этого рекомендуется запустить команду FLUSH PRIVILEGES. Это освободит любую память, кэшированную сервером в результате предыдущих операторов CREATE USER и GRANT:
Затем вы можете выйти из клиента MySQL:
Наконец, если вы настроили брандмауэр на сервере базы данных, вам также потребуется открыть порт 3306 — порт MySQL по умолчанию — для разрешения трафика к MySQL.
Если вы планируете получать доступ к серверу базы данных только с одного конкретного компьютера, вы можете предоставить этому компьютеру монопольное разрешение на удаленное подключение к базе данных с помощью следующей команды. Обязательно замените remote_IP_address фактическим IP-адресом машины, к которой вы планируете подключиться:
Если в будущем вам понадобится доступ к базе данных с других компьютеров, вы можете предоставить им доступ на разовой основе с помощью этой команды. Просто не забудьте указать их соответствующие IP-адреса.
Кроме того, вы можете разрешить подключения к базе данных MySQL с любого IP-адреса с помощью следующей команды:
Предупреждение. Эта команда позволит любому получить доступ к вашей базе данных MySQL. Не запускайте его, если ваша база данных содержит какие-либо конфиденциальные данные.
После этого попробуйте удаленно получить доступ к базе данных с другого компьютера:
Примечание. Если вы добавили правило брандмауэра, разрешающее подключения только с определенного IP-адреса, вы должны попытаться получить доступ к базе данных с компьютера, связанного с этим адресом.
Если вы можете получить доступ к своей базе данных, это подтверждает, что проблема связана с директивой bind-address в вашем файле конфигурации. Обратите внимание, однако, что установка bind-address на 0.0.0.0 небезопасна, поскольку позволяет подключаться к вашему серверу с любого IP-адреса. С другой стороны, если вы по-прежнему не можете получить удаленный доступ к базе данных, проблема может быть вызвана чем-то другим. В любом случае вам может быть полезно следовать нашему руководству «Как настроить удаленную базу данных для оптимизации производительности сайта с помощью MySQL в Ubuntu 18.04», чтобы настроить более безопасную конфигурацию удаленной базы данных.
Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!
Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.
Серия руководств: устранение неполадок в MySQL
Это руководство предназначено для использования в качестве ресурса по устранению неполадок и отправной точки при диагностике установки MySQL. Мы рассмотрим некоторые проблемы, с которыми сталкиваются многие пользователи MySQL, и предоставим рекомендации по устранению конкретных проблем.Мы также будем включать ссылки на учебные пособия DigitalOcean и официальную документацию MySQL, которые могут быть полезны в определенных случаях.
Читайте также: