Как разрешить удаленные подключения к MySQL

Если вы работаете с базой данных MySQL(MySQL database) , то вы уже знаете о проблемах, с которыми вы сталкиваетесь при обеспечении безопасности вашей базы данных. От попыток взлома базы данных с использованием SQL -инъекций до атак методом перебора — трудно сохранить ваши данные в безопасности, особенно если вы работаете с базой данных удаленно.

Есть способы настроить сервер SQL для разрешения удаленных подключений, но вы должны быть осторожны, так как разрешение удаленных подключений на сервере MySQL может сделать вашу базу данных легкой мишенью для хакеров. Если вы хотите разрешить безопасное удаленное подключение к базе данных MySQL , вот что вам нужно знать.

Прежде чем вы начнете(Before You Begin)

Прежде чем вносить какие-либо изменения в базу данных MySQL , важно сделать ее резервную копию(backup your database) , особенно если вы работаете на производственном сервере (активно используемом сервере). Любые изменения, которые вы вносите в свою базу данных или сервер, на котором она размещена, могут привести к серьезной потере данных, если что-то пойдет не так.

Вы также можете обнаружить, что изменения в подключениях вашего сервера могут помешать вам получить к нему доступ впоследствии. В этом случае вам может потребоваться консультация с администратором сервера для получения дополнительной поддержки. Хорошей идеей будет опробовать любые изменения на локальном сервере MySQL , чтобы проверить, работают ли ваши изменения, прежде чем применять их удаленно.

Также вполне вероятно, что если вы вносите изменения на удаленный сервер, вам понадобится безопасный способ подключения и внесения изменений. SSH (Secure Shell) часто является лучшим способом сделать это, поскольку он позволяет вам подключаться к удаленному серверу. Вы также можете использовать SSH для подключения к серверам в вашей локальной сети, например, к тем, которые размещены на Raspberry Pi(hosted on a Raspberry Pi) .

Это руководство проведет вас через шаги по настройке MySQL для разрешения удаленных подключений, но сначала вам необходимо убедиться, что у вас есть прямой или удаленный доступ к серверу, на котором размещен ваш сервер MySQL .

Предположим(Suppose) , у вас нет удаленного доступа к вашему серверу через SSH (например). В этом случае вы не сможете настроить базу данных MySQL для разрешения удаленных подключений напрямую, если только ваша корневая учетная запись mySQL уже не разрешает удаленные подключения. Итак, вам нужно сначала установить это соединение, прежде чем вы сможете продолжить.

Редактирование файла конфигурации MySQL(Editing Your MySQL Configuration File)

Первым шагом в настройке MySQL для разрешения удаленных подключений является редактирование файла конфигурации MySQL . На этом этапе в этом руководстве предполагается, что вы уже подключились к серверу, ПК или Mac , на котором размещена ваша база данных MySQL, удаленно и имеете доступ к консоли. 

Кроме того, вы можете настроить локальный сервер MySQL с помощью открытого терминала в Mac или Linux или текстового редактора в Windows .

  1. Для начала используйте предпочитаемый консольный текстовый редактор для редактирования файла базы данных MySQL . В Linux введите sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf в терминал или окно SSH , чтобы отредактировать этот файл с помощью редактора nano (при условии, что ваша база данных MySQL находится в расположении по умолчанию)

  1. Если вы используете Windows , откройте проводник(File Explorer) и откройте папку, содержащую вашу установку MySQL (например , C:/Program Files/MySQL/MySQL Server 8.0 ). Откройте файл my.ini с помощью текстового редактора по умолчанию (например , Блокнота(Notepad) ), дважды щелкнув запись. Если его там нет, сначала создайте файл(create the file first) .

  1. На Mac откройте окно терминала и введите sudo nano /usr/local/etc/my.cnf . Это файл конфигурации по умолчанию для MySQL , если вы установили MySQL с помощью homebrew(using homebrew) .

Упомянутые выше расположения являются расположениями по умолчанию для файлов конфигурации MySQL . Если эти команды не работают, вам нужно вручную найти соответствующие файлы ( my.cnf , mysqld.cnf или my.ini ), чтобы найти соответствующий путь к файлу.

Установка безопасного диапазона IP-адресов для привязки(Setting a Safe Bind-Address IP Range)

  1. После того, как вы открыли файл конфигурации MySQL для своего сервера, используйте клавишу со стрелкой на клавиатуре, чтобы добраться до раздела файла с адресом привязки . (bind-address)Этот диапазон IP-адресов ограничивает подключения к вашей базе данных, которая обычно разрешает подключения только с локального компьютера или сервера с использованием 127.0.0.1 .

  1. Если вы хотите настроить базу данных MySQL , чтобы разрешить подключения с устройств, использующих ваше текущее подключение к Интернету, сначала найдите свой общедоступный IP-адрес(find your public IP address) , а затем замените 127.0.0.1 на этот IP-адрес. В качестве альтернативы замените его IP-адресом устройства или сервера, с которого вы хотите разрешить подключения.

  1. В некоторых случаях может потребоваться разрешить все(all) удаленные подключения к базе данных MySQL . Это сопряжено с огромным риском(extreme risk) и не должно использоваться на рабочем сервере. Однако, если вы хотите разрешить это, замените 127.0.0.1 на 0.0.0.0 .

  1. Запишите значение порта(port ) в разделе « Основные настройки(Basic Settings) ». Это потребуется в следующем разделе. Если он не виден, будет использоваться значение по умолчанию — порт 3306 . Вы можете добавить свой собственный порт, набрав port = xxxx в новой строке, заменив xxxx подходящим значением порта.

  1. После того, как вы настроили адрес привязки(bind-address ) в файле конфигурации MySQL , сохраните файл. Если вы работаете в Linux , выберите Ctrl + O и Ctrl + X , чтобы сделать это. На Mac выберите Command + O и Command + X . Пользователи Windows могут сохранить, выбрав « Файл»(File ) > « Сохранить(Save) » .

  1. Затем пользователи Linux и Mac могут перезапустить MySQL , набрав mysql.server stop && mysql.server start или mysql.server restart . Возможно, вам потребуется повысить права команды с помощью sudo(using sudo) (например , sudo mysql.server restart ) и использовать соответствующий путь к файлу mysql.server (например, /usr/local/bin/mysql.server ).

  1.  Если приведенная выше команда не работает, попробуйте перезапустить sudo service mysql(sudo service mysql restart ) .

  1. Чтобы перезапустить MySQL в Windows , откройте новое окно PowerShell , щелкнув правой кнопкой мыши меню « Пуск(Start) » и выбрав Windows PowerShell (Admin) . В окне PowerShell введите net stop mysql80 , а затем net start mysql80 , заменив mysql80 правильным именем службы на вашем ПК.

Если вы не уверены в правильности имени службы в Windows , введите net start , чтобы найти его. Если вы не можете перезагрузить свою конфигурацию, перезапустите сервер и перезагрузите MySQL вручную (при необходимости).

Настройка ваших брандмауэров(Configuring Your Firewalls)

На этом этапе ваша база данных MySQL должна разрешать удаленные подключения с устройств, использующих IP-адрес, который вы установили в качестве значения адреса привязки в файле конфигурации (bind-address)MySQL (или со всех устройств, если вместо этого вы установите это значение равным 0.0.0.0 ). Однако соединения по-прежнему будут блокироваться вашим устройством или сетевым брандмауэром(device or network firewall) .

Большинство серверов и ПК используют брандмауэр для блокировки подключений, если не предоставлен доступ к определенному порту. Шаги по настройке будут различаться в зависимости от того, используете ли вы MySQL в Windows или Linux . Брандмауэры Mac(Mac) по умолчанию отключены, поэтому вам не нужно выполнять здесь какие-либо дополнительные действия.

Настройка брандмауэров Linux(Configure Linux Firewalls)

Многие серверы Linux используют iptables в качестве утилиты брандмауэра по умолчанию. Вы можете настроить его, выполнив следующие действия.

  1. Откройте терминал или SSH -соединение и введите sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT . Замените XXXX на IP-адрес устройства, с которого вы хотите разрешить подключения к (from)MySQL , и замените YYYY на соответствующее значение порта из файла конфигурации MySQL (например, (MySQL)3306 ).

  1. Это временно настроит брандмауэр. Если вы используете сервер Linux на основе Debian или Ubuntu , сделайте это изменение постоянным, введя sudo netfilter-persistent save и sudo netfilter-persistent reload в терминале или в окне SSH.

Если iptables не является средством брандмауэра по умолчанию для вашего дистрибутива Linux(Linux) , вам необходимо обратиться к руководству пользователя вашего дистрибутива для получения дополнительной информации. Если определенные пакеты (такие как netfilter-persistent ) недоступны, используйте для их установки инструмент репозитория программного обеспечения вашего дистрибутива (например, sudo apt install netfilter-persistent ).

Настройка брандмауэров Windows(Configure Windows Firewalls)

Если вы используете ПК или сервер Windows для размещения базы данных, вы можете настроить брандмауэр, выполнив следующие действия:

  1. Щелкните правой кнопкой мыши(Right-click) меню « Пуск(Start) » и выберите « Выполнить»(Run) .

  1. В поле « Выполнить(Run) » введите wf.msc и нажмите « ОК(OK) » .

  1. В окне Защитника Windows(Windows Defender) выберите Правила(Inbound Rules ) для входящих подключений > Новое правило(New Rule) .

  1. В окне Мастер создания правила для нового входящего подключения(New Inbound Rule Wizard) выберите Порт(Port ) > Далее(Next) .

  1. В следующем меню выберите TCP из вариантов, введите 3306 (или любое значение порта, указанное в вашем файле конфигурации MySQL ), затем нажмите « Далее(Next) » .

  1. В меню « Действие(Action) » оставьте значение по умолчанию «Разрешить подключение(Allow the connection) », затем выберите « Далее(Next) » .

  1. Подтвердите, что вы хотите, чтобы правило применялось ко всем типам сетей, затем нажмите « Далее(Next) » . 

  1. Введите описательное имя правила (например , MySQL ) в указанный порт, затем нажмите « Готово(Finish) » , чтобы добавить его в список правил брандмауэра.

Если у вас возникли проблемы с подключением, повторите описанные выше действия, убедившись, что в настройках брандмауэра создано новое правило исходящего трафика с теми же данными (порт 3306 и т. д.). (outbound rule )Вам также может потребоваться настроить маршрутизатор локальной сети, чтобы открыть необходимые заблокированные порты(open the necessary blocked ports) , чтобы разрешить входящие и исходящие подключения к вашей базе данных. 

Подключение к удаленному серверу с помощью MySQL(Connecting to a Remote Server Using MySQL)

После настройки вашей базы данных MySQL для разрешения удаленных подключений вам необходимо установить с ней соединение. Вы можете сделать это с помощью команды mysql ( mysql.exe в Windows ) из терминала или окна PowerShell .

Если вы работаете в Windows , перед началом работы вам необходимо убедиться, что MySQL установлена ​​локально . (MySQL is installed locally)Пользователи Mac(Mac) могут установить MySQL с помощью homebrew(using homebrew) из терминала ( brew install mysql ), а пользователи Linux могут использовать свой локальный репозиторий приложений (например, sudo apt install mysql ) для установки необходимых пакетов.

Подключение к MySQL на Linux или Mac(Connecting to MySQL on Linux or Mac)

  1. Чтобы подключиться к удаленному серверу MySQL на (MySQL)Mac или Linux , откройте новое окно терминала и введите mysql -u username -h XXXX:XXXX -p . Замените XXXX:XXXX на IP-адрес вашего удаленного сервера и номер порта (например , 100.200.100.200:3306 ) и имя пользователя(username) на ваше имя пользователя MySQL.

  1. При появлении запроса подтвердите свой пароль. В случае успешного подключения в терминале появится сообщение об успехе.

Подключение к MySQL в Windows(Connecting to MySQL on Windows)

  1. Чтобы подключиться к удаленному серверу MySQL в (MySQL)Windows , откройте новое окно PowerShell , щелкнув правой кнопкой мыши меню « Пуск(Start) » и выбрав Windows PowerShell (Admin) .

  1. В новом окне PowerShell введите cd “C:\Program Files\MySQL\MySQL Workbench 8.0\ », чтобы войти в правильную папку, заменив этот каталог правильным каталогом установки на вашем ПК. Например, если ваша версия MySQL 8.0.1, вместо этого используйте папку MySQL Workbench 8.0.1 .

  1. Оттуда введите .\mysql.exe -u username -h X.X.X.X:XXXX -p . Замените XXXX:XXXX на IP-адрес удаленного сервера и номер порта (например , 100.200.100.200:3306 ), а имя пользователя(username) на имя пользователя MySQL , которое разрешает удаленный доступ (например, root ). Следуйте(Follow) дополнительным инструкциям на экране.
  2. При появлении запроса укажите свой пароль, чтобы завершить процесс входа и получить удаленный доступ к базе данных MySQL .

Если это не сработает, подключитесь к серверу или ПК, на котором размещен ваш сервер MySQL , с помощью (MySQL)SSH (или получите доступ к нему напрямую), выполнив следующие шаги и используя аргумент -h localhost . Затем вы можете создать подходящую учетную запись пользователя, выполнив следующие действия.

Разрешение удаленного доступа пользователей к базе данных MySQL(Allowing Remote User Access to a MySQL Database)

К этому моменту вы должны иметь возможность удаленно подключаться к вашему серверу MySQL , используя учетную запись пользователя root вашего сервера или другую учетную запись пользователя с повышенными привилегиями. Поскольку этот уровень доступа небезопасен, вы можете предпочесть создать более ограниченную учетную запись для доступа к вашей базе данных MySQL .

Эта учетная запись будет иметь ограниченный доступ к вашему серверу MySQL , что позволит ему взаимодействовать только с выбранными базами данных. Он не сможет вносить более серьезные изменения, такие как доступ к другим данным базы данных, создание новых учетных записей пользователей и т. д. 

Вам потребуется возможность удаленного входа на сервер MySQL . Если вы не можете использовать свою корневую учетную запись удаленно, вам необходимо получить доступ к оболочке вашего сервера с помощью команды mysql через удаленное соединение SSH или путем прямого доступа к ПК или серверу, на котором размещен сервер.

  1. В вашей удаленной оболочке MySQL (с помощью инструмента (MySQL)mysql ) введите CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; и выберите Ввод(Enter) . Замените имя пользователя(username ) на имя пользователя, которое вы хотите создать, xxxx на IP-адрес, с которого вы хотите подключиться, и пароль(password) на подходящий пароль.

  1. Вам потребуется предоставить новой учетной записи необходимые разрешения. Для этого введите GRANT ALL ON databasename.* TO username@”x.x.x.x”; и замените имя базы данных, имя пользователя(databasename, username, ) и xxxx  правильными данными. При желании замените имя базы данных(databasename) на * , чтобы предоставить ей доступ ко всем базам данных. 

Получив доступ, выполните действия, описанные в разделе выше, для удаленного подключения к серверу с использованием новой учетной записи (например, mysql -u имя пользователя -h XXXX:XXXX -p(mysql -u username -h X.X.X.X:XXXX -p) ).

Защита данных вашей базы данных(Securing Your Database Data)

Независимо от того, работаете ли вы с базой данных MySQL(MySQL) или другим типом базы данных SQL , важно обеспечить безопасность ваших соединений для обеспечения безопасности ваших данных. Хороший способ сделать это — сгенерировать ключи SSH для удаленного доступа(generate SSH keys for remote access) к вашему серверу, а не полагаться на устаревшие (и легко угадываемые) пароли.

Если вы беспокоитесь о потере данных, вы можете легко создать резервную копию своей базы данных в(back up your database) Интернете. Большинство баз данных запускаются с использованием серверов Linux — вы можете легко (Linux)автоматизировать резервное копирование файлов Linux(automate a Linux file backup easily) . Если вы используете MySQL в Windows , вы можете настроить аналогичную систему автоматического резервного копирования для Windows(automatic backup system for Windows) , что позволит вам восстановить данные в экстренной ситуации.



About the author

Я веб-разработчик с опытом работы в Firefox и Google Docs. У меня есть степень в области делового администрирования Университета Флориды. Мои навыки включают в себя: разработку веб-сайтов, систему управления контентом (CMS), анализ данных и дизайн пользовательского интерфейса. Я опытный консультант, который может помочь вашей команде создавать эффективные веб-сайты и приложения.



Related posts