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


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

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

Оглавление

    Прежде чем начать

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

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

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

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

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

    Редактирование файла конфигурации MySQL

    Первым шагом в настройке 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, откройте проводник и получите доступ к папке, содержащей вашу установку MySQL (например, C:/Program Files/MySQL/MySQL Server 8.0 ). Откройте файл my.ini с помощью текстового редактора по умолчанию (например, «Блокнота»), дважды щелкнув запись. Если его нет, сначала создай файл.
        1. На Mac откройте окно терминала и введите sudo nano /usr/local/etc/my.cnf . Это файл конфигурации MySQL по умолчанию, если вы установили MySQL используя доморощенный.
        2. Указанные выше местоположения являются местоположениями по умолчанию для файлов конфигурации MySQL. Если эти команды не работают, вам нужно будет найти соответствующие файлы (my.cnf , mysqld.cnf или my.ini ) вручную, чтобы найти соответствующий путь к файлу.

          Настройка безопасного диапазона IP-адресов привязки

          1. Открыв файл конфигурации MySQL для своего сервера, с помощью клавиши со стрелкой на клавиатуре перейдите к разделу bind-address файла. Этот диапазон IP-адресов ограничивает подключения к вашей базе данных, которая обычно разрешает подключения только с локального компьютера или сервера с использованием 127.0.0.1 .
            1. Если вы хотите настроить базу данных MySQL для разрешения подключений с устройств, использующих ваше текущее подключение к Интернету, сначала найдите свой общедоступный IP-адрес, затем замените 127.0.0.1 на этот IP-адрес. Либо замените его IP-адресом устройства или сервера, с которого вы хотите разрешить подключения.
              1. В некоторых случаях вам может потребоваться разрешить все удаленные подключения к базе данных MySQL. Это сопряжено с чрезвычайным риском и не должно использоваться на рабочем сервере. Однако если вы хотите разрешить это, замените 127.0.0.1 на 0.0.0.0 .
              2. .
                1. Запишите значение порта в разделе Основные настройки . Это потребуется в следующем разделе. Если он не виден, будет использоваться значение по умолчанию — порт 3306 . Вы можете добавить свой собственный порт, набрав port = xxxx в новой строке, заменив xxxx подходящим значением порта.
                  1. После того как вы настроили адрес привязки в файле конфигурации MySQL, сохраните файл. Если вы используете Linux, нажмите Ctrl + O и Ctrl + X , чтобы сделать это. На Mac выберите Command + O и Command + X . Пользователи Windows могут сохранить изменения, выбрав Файл >Сохранить .
                    1. Далее пользователи Linux и Mac могут перезапустить MySQL, набрав mysql.server stop && mysql.server start или mysql.server restart . Возможно, вам придется повысить уровень команды используя sudo (например, sudo mysql.server restart ) и использовать соответствующий путь к файлу mysql.server (например, /usr). /local/bin/mysql.server ).
                      1.  Если приведенная выше команда не работает, попробуйте вместо этого sudo service mysql restart .
                        1. Чтобы перезапустить MySQL в Windows, откройте новое окно PowerShell, щелкнув правой кнопкой мыши меню «Пуск» и выбрав Windows PowerShell (Администратор) . В окне PowerShell введите net stop mysql80 , а затем net start mysql80 , заменив mysql80 правильным именем службы на вашем компьютере.
                        2. Если вы не уверены в правильности имени службы в Windows, введите net start , чтобы найти его. Если вы не можете перезагрузить конфигурацию, перезагрузите сервер и Вместо этого перезагрузите MySQL вручную (при необходимости).

                          Настройка брандмауэров

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

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

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

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

                          1. Откройте терминал или SSH-соединение и введите sudo iptables -A INPUT -p tcp -s X.X.X.X –dport YYYY -j ACCEPT . Замените X.X.X.X на IP-адрес устройства, с которого вы хотите разрешить подключения MySQL, от которого , и замените YYYY соответствующим значением порта из вашей конфигурации MySQL. файл (например, 3306 ).
                            1. Это временно настроит брандмауэр. Если вы используете сервер Linux на базе Debian или Ubuntu, сделайте это изменение постоянным, введя sudo netfilter-persistent save и sudo netfilter-persistent reload в терминал или SSH. окно.
                            2. Если iptables не является инструментом брандмауэра по умолчанию для вашего дистрибутива Linux, вам необходимо обратиться к руководству пользователя вашего дистрибутива для получения дополнительной информации. Если определенные пакеты (например, netfilter-persistent ) недоступны, используйте для их установки инструмент репозитория программного обеспечения вашего дистрибутива (например, sudo apt install netfilter-persistent ).

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

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

                              1. Нажмите правой кнопкой мыши меню «Пуск» и выберите Выполнить .
                                1. В поле Выполнить введите wf.msc и нажмите ОК .
                                  1. В окне Защитник Windows выберите Правила для входящего трафика >Новое правило .
                                    1. В окне Мастер нового входящего правила выберите Порт >Далее .
                                      1. В следующем меню выберите TCP из опций, введите 3306 (или любое другое значение порта, указанное в файле конфигурации MySQL), затем выберите Далее. .
                                        1. В меню Действие оставьте параметр по умолчанию Разрешить подключение включенным, затем выберите Далее .
                                          1. Подтвердите, что вы хотите, чтобы правило применялось ко всем типам сетей, затем нажмите Далее .
                                          2. .
                                            1. Введите описательное имя правила (например, MySQL ) в указанном порту, затем нажмите Готово , чтобы добавить его в список правил брандмауэра.
                                            2. >

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

                                              Подключение к удаленному серверу с помощью MySQL

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

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

                                              Подключение к MySQL на Linux или Mac

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

                                                  1. Чтобы подключиться к удаленному серверу MySQL в Windows, откройте новое окно PowerShell, щелкнув правой кнопкой мыши меню «Пуск» и выбрав Windows PowerShell (Администратор) .
                                                    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 . Замените X.X.X.X:XXXX на IP-адрес и номер порта удаленного сервера (например, 100.200.100.200:3306 ), а имя пользователя на имя пользователя MySQL, которое разрешает удаленный доступ (например, root ). Следуйте дополнительным инструкциям на экране..
                                                      2. При появлении запроса укажите свой пароль, чтобы завершить процесс входа и получить удаленный доступ к базе данных MySQL.
                                                      3. Если это не помогло, подключитесь к серверу или ПК, на котором размещен ваш сервер MySQL, с помощью SSH (или получите к нему доступ напрямую), выполнив следующие действия и используя аргумент -h localhost . Затем вы сможете создать подходящую учетную запись пользователя, выполнив следующие действия.

                                                        Разрешение удаленному доступу пользователей к базе данных MySQL

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

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

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

                                                        1. В удаленной оболочке MySQL (с помощью инструмента mysql ) введите CREATE USER «username»@»x.x.x.x» IDENTIFIED BY «password»; и выберите Ввод . Замените username на имя пользователя, которое вы хотите создать, x.x.x.x на IP-адрес, с которого вы хотите подключиться, и password на подходящий пароль.
                                                          1. Вам необходимо предоставить новой учетной записи необходимые разрешения. Для этого введите GRANT ALL ON имя_базы_данных.* TO username@”x.x.x.x”; и замените имя базы данных, имя пользователя и x.x.x.x  правильными данными. Если хотите, замените имя_базы_данных на * , чтобы предоставить ему доступ ко всем базам данных.
                                                          2. После предоставления доступа выполните действия, описанные в разделе выше, для удаленного подключения к вашему серверу с использованием новой учетной записи (например, mysql -u username -h X.X.X.X:XXXX -p ).

                                                            >

                                                            Защита данных вашей базы данных

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

                                                            Если вы беспокоитесь о потере данных, вы можете легко создайте резервную копию вашей базы данных сделать это онлайн. Большинство баз данных работают с использованием серверов Linux — вы можете легко автоматизировать резервное копирование файлов Linux. Если вы используете MySQL в Windows, вы можете настроить аналогичный система автоматического резервного копирования для Windows, позволяющий восстанавливать данные в экстренной ситуации.

                                                            .

                                                            Похожие сообщения:


                                                            9.08.2021