Если вы работаете с База данных MySQL , значит, вы уже знаете о проблемах, с которыми вы сталкиваетесь при обеспечении безопасности своей базы данных. От попыток взлома базы данных с использованием SQL-инъекций до атак грубой силы-сложно обеспечить безопасность ваших данных, особенно если вы работаете с базой данных удаленно.
Есть способы настроить SQL-сервер для разрешения удаленных подключений. , но вам нужно быть осторожным, поскольку разрешение удаленных подключений к серверу MySQL может сделать вашу базу данных легкой мишенью для хакеров. Если вы хотите разрешить безопасные удаленные подключения к базе данных MySQL, вот что вам нужно знать.
Перед тем, как начать
Прежде чем вносить какие-либо изменения в базу данных MySQL, важно, чтобы вы резервное копирование базы данных , особенно если вы работаете на производственном сервере (активно используемом сервере). Любые изменения, которые вы вносите в свою базу данных или сервер, на котором она размещена, могут привести к серьезной потере данных, если что-то пойдет не так.
Вы также можете обнаружить, что изменения в соединениях вашего сервера могут помешать вам получить к нему доступ впоследствии. В этом случае вам может потребоваться проконсультироваться с администратором сервера для получения дополнительной поддержки. Хорошая идея-протестировать любые изменения на локальном сервере MySQL, чтобы проверить, работают ли ваши изменения, прежде чем пробовать их удаленно.
Также вероятно, что если вы вносите изменения на удаленный сервер, вы: Вам понадобится безопасный способ подключения и внесения изменений. SSH (Secure Shell) часто является лучшим способом сделать это, поскольку он позволяет подключаться к удаленному серверу. Вы также можете использовать SSH для подключения к серверам в вашей локальной сети, таким как размещено на Raspberry Pi .
Это руководство проведет вас через шаги по настройке MySQL для разрешения удаленных подключений, но вам необходимо сначала убедиться, что у вас есть прямой или удаленный доступ к серверу, на котором размещен ваш сервер MySQL.
Предположим, у вас нет удаленного доступа к вашему серверу через SSH (например). В этом случае вы не сможете настроить свою базу данных MySQL для разрешения удаленных подключений напрямую, если только ваша учетная запись root mySQL уже не разрешает удаленные подключения. Итак, вам необходимо сначала установить это соединение, прежде чем вы сможете продолжить.
Редактирование файла конфигурации MySQL
Первый шаг в настройке MySQL, позволяющий удаленно Connections заключается в редактировании файла конфигурации MySQL. На этом этапе в этом руководстве предполагается, что вы уже подключились к серверу, ПК или Mac, на котором удаленно размещена ваша база данных mySQL, и имеете доступ к консоли.
Кроме того, вы можете настроить локальный сервер MySQL с помощью открытого терминала на Mac или Linux или текстового редактора в Windows.
Для начала используйте предпочитаемый консольный текстовый редактор для редактирования файла базы данных MySQL.. В Linux введите sudo nano/etc/mysql/mysql.conf.d/mysqld.cnf в терминал или окно SSH, чтобы отредактировать этот файл с помощью редактора nano (при условии ваша база данных MySQL находится в местоположении по умолчанию) . Если вы работаете в Windows, откройте проводник. и войдите в папку, содержащую вашу установку MySQL (например, C:/Program Files/MySQL/MySQL Server 8.0 ). Откройте файл my.ini с помощью текстового редактора по умолчанию (например, Блокнота), дважды щелкнув запись. Если его там нет, сначала создайте файл .
На Mac откройте окно терминала и введите sudo nano/usr/local/etc/my.cnf . Это файл конфигурации по умолчанию для MySQL, если вы установили MySQL с использованием homebrew .
Указанные выше местоположения являются местоположениями по умолчанию для конфигурации MySQL. файлы. Если эти команды не работают, вам нужно будет найти соответствующие файлы ( my.cnf , mysqld.cnf или my.ini ) вручную, чтобы найти соответствующий путь к файлу.
Установка диапазона IP-адресов безопасного связывания
Открыв файл конфигурации MySQL для своего сервера, используйте клавишу со стрелкой на клавиатуре, чтобы перейти к разделу адрес привязки файла. Этот диапазон IP-адресов ограничивает подключения к вашей базе данных, которая обычно разрешает подключения только с локального компьютера или сервера, использующего 127.0.0.1 . Если вы хотите настроить базу данных MySQL, чтобы разрешить соединения с устройств, использующих ваше текущее подключение к Интернету, найти сначала ваш общедоступный IP-адрес , а затем замените 127.0.0.1 этим IP-адресом. Или замените его IP-адресом устройства или сервера, с которого вы хотите разрешить соединения.
В некоторых случаях вы можете разрешить все удаленные подключения к базе данных MySQL. Это связано с чрезвычайным риском и не должно использоваться на рабочем сервере. Однако, если вы хотите разрешить это, замените 127.0.0.1 на 0.0.0.0 .
Обратите внимание на порт в разделе Основные настройки . Это потребуется в следующем разделе. Если он не отображается, будет использоваться значение по умолчанию, которым является порт 3306 . Вы можете добавить собственный порт, набрав порт=xxxx в новой строке, заменив xxxx подходящим значением порта.
После настройки адреса привязки в Файл конфигурации MySQL, сохраните файл. Если вы работаете в Linux, выберите для этого Ctrl + O и Ctrl + X . На Mac выберите Command + O и Command + X . Пользователи Windows могут сохранить, выбрав Файл > Сохранить .
Затем пользователи Linux и Mac могут перезапустить MySQL, набрав mysql.server stop && mysql.server start или mysql.server restart . Возможно, вам потребуется повысить уровень команды используя sudo (например, sudo mysql.server restart ) и используйте соответствующий путь к файлу mysql.server (например, /usr/local/bin/mysql.server ).
Если указанная выше команда не работает, попробуйте sudo service mysql restart вместо этого.
Чтобы перезапустить MySQL в Windows, откройте новое окно PowerShell, щелкнув правой кнопкой мыши меню« Пуск »и выбрав Windows PowerShell (администратор) . В окне PowerShell введите net stop mysql80 , а затем net start mysql80 , заменив mysql80 правильным именем службы на вашем ПК.
Если вы не уверены в правильном имени службы в Windows, введите net start , чтобы найти его. Если вы не можете перезагрузить конфигурацию, перезапустите сервер и перезагрузите MySQL вручную (при необходимости).
Настройка брандмауэров
На этом этапе ваша база данных MySQL должна разрешать удаленные подключения с устройств, использующих IP-адрес, который вы установили в качестве значения bind-address в вашем MySQL. файл конфигурации (или со всех устройств, если вместо этого вы установите значение 0.0.0.0 ). Однако соединения по-прежнему будут блокироваться вашим устройством или сетевым брандмауэром .
Большинство серверов и компьютеров используют брандмауэр для блокировки соединений, если не предоставляется доступ к определенному порту. Действия по настройке зависят от того, используете ли вы MySQL в Windows или Linux. Брандмауэры Mac по умолчанию отключены, поэтому вам не нужно выполнять здесь никаких дополнительных действий.
Настроить брандмауэры Linux
Многие серверы Linux используют iptables в качестве служебной программы межсетевого экрана по умолчанию. Вы можете настроить его, выполнив следующие действия.
Откройте терминал или соединение SSH и введите sudo iptables-A INPUT-p tcp-s X.X.X.X –dport YYYY-j ACCEPT . Замените XXXX IP-адресом устройства, с которого вы хотите разрешить подключения к MySQL, и замените YYYY соответствующим значением порта из конфигурации MySQL. файл (например, 3306 ). Это временно настроит брандмауэр. Если вы используете сервер Linux на базе Debian или Ubuntu, сделайте это изменение постоянным, набрав sudo netfilter-persistent save и sudo netfilter-persistent reload в терминал или SSH. окно.
Если iptables не является инструментом брандмауэра по умолчанию для вашего дистрибутива Linux, вам необходимо обратитесь к руководству пользователя вашего дистрибутива для получения дополнительной информации. Если определенные пакеты (например, netfilter-persistent ) недоступны, используйте инструмент репозитория программного обеспечения вашего дистрибутива для их установки (например, sudo apt install netfilter-persistent ).
Настройте брандмауэры Windows
Если вы используете ПК или сервер Windows для размещения своей базы данных, вы можете настроить брандмауэр, выполнив следующие действия:
Правильно-щелкните меню «Пуск» и выберите Выполнить . В поле Выполнить введите wf.msc и выберите ОК .
В окне Защитник Windows выберите Правила для входящих > Новое правило .
В окне Мастер создания правила для входящего трафика выберите Порт > Далее .
В следующем меню выберите TCP . из вариантов введите 3306 (или любое другое значение порта, указанное в вашем файле конфигурации MySQL), затем нажмите Далее .
В меню Действие оставьте параметр по умолчанию Разрешить соединение включен, затем нажмите Далее .
Подтвердите, что вы хотите, чтобы правило применялось ко всем типам сетей, затем выберите Далее .
Введите описательное имя для правила (например, MySQL ) в предоставленном порту, затем выберите Готово , чтобы добавить его в список правил брандмауэра.
Если у вас возникли проблемы с подключением, повторите эти шаги выше, убедившись, что вы создали новое исходящее правило в настройках брандмауэра с использованием тех же данных (порт 3306 и т. д.). Вам также может потребоваться настроить маршрутизатор локальной сети, чтобы открывал необходимые заблокированные порты , чтобы разрешить входящие и исходящие соединения с вашей базой данных.
Подключение к удаленному серверу с помощью MySQL
После настройки базы данных MySQL для разрешения удаленных подключений вам нужно будет установить с ней соединение. Вы можете сделать это с помощью команды mysql ( mysql.exe в Windows) из терминала или окна PowerShell.
Если вы используете Windows, перед началом работы убедитесь, что MySQL установлен локально . Пользователи Mac могут установить MySQL с помощью homebrew из терминала ( brew install mysql ), а пользователи Linux могут использовать свой локальный репозиторий приложений (например, sudo apt install mysql ) для установки необходимых пакетов.
Подключение к MySQL в Linux или Mac
Чтобы подключиться к удаленному серверу MySQL в Mac или Linux, откройте новое окно терминала и введите mysql-u имя пользователя-h XXXX: XXXX-p . Замените X.X.X.X: XXXX IP-адресом удаленного сервера и номером порта (например, 100.200.100.200:3306 ), а имя пользователя своим именем пользователя MySQL. При появлении запроса подтвердите свой пароль. В случае успешного подключения в терминале появится сообщение об успешном выполнении.
Подключение к MySQL в Windows
Чтобы подключиться к удаленному серверу MySQL в Windows, откройте новое окно PowerShell, щелкнув правой кнопкой мыши меню «Пуск» и выбрав Windows PowerShell (Admin ) . В новом окне PowerShell введите cd« C: \ Program Files \ MySQL \ MySQL Workbench. 8.0 \ ”, чтобы войти в правильную папку, заменив ее правильной установочной директорией на вашем ПК. Например, если у вас версия MySQL 8.0.1, используйте вместо нее папку MySQL Workbench 8.0.1 .
Оттуда введите . \ mysql.exe-u имя пользователя-h XXXX: XXXX-p . Замените XXXX: XXXX IP-адресом удаленного сервера и номером порта (например, 100.200.100.200:3306 ), а имя пользователя -именем пользователя MySQL, которое разрешает удаленный доступ (например, root ). Следуйте любым дополнительным инструкциям на экране. При появлении запроса укажите свой пароль, чтобы завершить процесс входа и получить удаленный доступ к базе данных MySQL.
Если это не сработает, подключитесь к серверу или ПК, на котором размещен ваш сервер MySQL, с помощью SSH. (или получить к нему доступ напрямую), выполнив следующие действия и используя аргумент -h localhost . Затем вы можете создать подходящую учетную запись пользователя, выполнив следующие действия.
Разрешение удаленного доступа пользователей к базе данных MySQL
К этому моменту вы должны быть возможность удаленно подключиться к вашему серверу MySQL, используя учетную запись пользователя root вашего сервера или другую учетную запись пользователя с повышенными привилегиями. Поскольку этот уровень доступа небезопасен, вы можете предпочесть создать более ограниченную учетную запись для доступа к вашей базе данных MySQL.
У этой учетной записи будет ограниченный доступ к вашему серверу MySQL, что позволит ей взаимодействовать только с выбранными базами данных. Он не сможет вносить более серьезные изменения, такие как доступ к другим данным базы данных, создание новых учетных записей пользователей и т. Д.
Вам потребуется возможность удаленного входа на сервер MySQL. Если вы не можете использовать свою учетную запись root удаленно, вам необходимо получить доступ к оболочке вашего сервера с помощью команды mysql через удаленное соединение SSH или путем прямого доступа к ПК или серверу, на котором размещен сервер.
В удаленной оболочке MySQL (с помощью инструмента mysql ) введите CREATE USER «username» @ »xxxx» IDENTIFIED BY «password»; и выберите Enter . Замените имя пользователя именем пользователя, которое вы хотите создать, x.x.x.x IP-адресом, с которого вы хотите подключиться, а пароль -подходящим паролем. Вам нужно будет предоставить вашей новой учетной записи необходимые разрешения. Для этого введите GRANT ALL ON имя базы данных. * TO имя пользователя @ ”x.x.x.x”; и замените имя базы данных, имя пользователя и x.x.x.x правильными данными. При желании замените имя базы данных на * , чтобы предоставить ему доступ ко всем базам данных.
Если доступ предоставлен, выполните следующие действия. в разделе выше, чтобы подключиться к вашему серверу удаленно, используя новую учетную запись (например, mysql-u username-h XXXX: XXXX-p ).
Защита вашей базы данных Данные
Независимо от того, работаете ли вы с MySQL или с другим типом базы данных SQL, важно обеспечить безопасность ваших подключений, чтобы обеспечить безопасность данных. Хороший способ сделать это- генерировать SSH-ключи для удаленного доступа к вашему серверу, вместо того, чтобы полагаться на устаревшие (и легко угадываемые) пароли.
Если вы беспокоитесь о потере данных, вы можете легко сделайте резервную копию своей базы данных в Интернете. Большинство баз данных работают с использованием серверов Linux-вы можете легко автоматизировать резервное копирование файлов Linux . Если вы используете MySQL в Windows, вы можете настроить аналогичный система автоматического резервного копирования для Windows , позволяющая восстановить данные в экстренной ситуации.