MySQL — одна из самых популярных систем управления базами данных, часто используемая веб-разработчиками и администраторами. Однако, при работе с MySQL на Windows 10, могут возникнуть проблемы с подключением к удаленной базе данных. Часто это связано с блокировкой порта 3306, который используется MySQL для коммуникации с клиентами.
Открытие порта 3306 для MySQL на Windows 10 можно выполнить несколькими способами. Одним из самых простых и наиболее распространенных способов является настройка фаервола Windows.
1. Откройте «Параметры безопасности Windows» и выберите «Настройки брандмауэра Windows».
2. Нажмите «Разрешить приложение или функцию через брандмауэр», затем «Изменить настройки».
3. Найдите «MySQL» в списке приложений и отметьте галочкой «Приватная» и «Публичная» сеть.
4. Нажмите «ОК», чтобы сохранить изменения.
После выполнения этих шагов, порт 3306 будет открыт для MySQL на Windows 10, и вы сможете подключаться к удаленной базе данных без проблем.
Важно отметить, что открытие порта 3306 может представлять потенциальную угрозу безопасности. Поэтому рекомендуется принять соответствующие меры для защиты базы данных, например, установить пароль для пользователя root и ограничить доступ по IP-адресу.
Надеемся, что данная статья помогла вам разобраться с открытием порта 3306 для MySQL на Windows 10 и решить возникшие проблемы с подключением к базе данных.
Содержание
- Установка Mysql на Windows 10
- Скачивание и установка Mysql
- Настройка Mysql после установки
Установка Mysql на Windows 10
Для установки Mysql на Windows 10, следуйте следующим шагам:
1. Скачайте установщик Mysql Community Edition с официального сайта Mysql.
2. Запустите установщик и выберите опцию «Установка».
3. Прочитайте и принимайте лицензионное соглашение, затем нажмите «Далее».
4. Выберите тип установки «Комплектная» для установки всех компонентов Mysql или «Только сервер» для установки только серверной части Mysql.
5. Укажите путь для установки Mysql и нажмите «Далее».
6. Выберите конфигурацию сервера, настройки сети, учетные данные пользователей и другие параметры, затем нажмите «Далее».
7. Дождитесь завершения установки Mysql и нажмите «Готово».
Поздравляю! Вы успешно установили Mysql на Windows 10. Теперь вы можете использовать Mysql для создания, управления и обработки баз данных на вашем компьютере.
Скачивание и установка Mysql
Шаг 1: Перейдите на официальный сайт Mysql.
Шаг 2: На главной странице сайта найдите вкладку «Downloads» (Загрузки) и нажмите на нее.
Шаг 3: В разделе «MySQL Community Edition» (MySQL Сообщество Выпуск) выберите версию, соответствующую вашей операционной системе. В случае с Windows 10 это будет версия для Windows.
Шаг 4: Просмотрите доступные пакеты и выберите подходящий для ваших нужд. Если вы не уверены, выберите пакет «MySQL Installer» (Установщик MySQL), который содержит все необходимые компоненты.
Шаг 5: Нажмите кнопку «Download» (Скачать) рядом с выбранным пакетом, чтобы начать загрузку.
Шаг 6: После завершения загрузки откройте установочный файл и следуйте инструкциям мастера установки. Обычно это сводится к принятию лицензионного соглашения, выбору папки для установки и настройке пароля для учетной записи root.
Шаг 7: По завершении установки вы сможете запустить Mysql и начать работу с базой данных. В случае необходимости активации порта 3306 для доступа извне, следуйте инструкциям по открытию порта в Windows 10.
Обратите внимание, что установка Mysql может изменяться в зависимости от версии и пакета, который вы выбрали. Используйте документацию на официальном сайте Mysql для получения подробных инструкций.
Настройка Mysql после установки
После установки Mysql на Windows 10 необходимо выполнить некоторые начальные настройки для корректной его работы. В данном разделе мы рассмотрим основные шаги настройки Mysql.
- Запуск службы Mysql
- Настройка пароля администратора
- Настройка доступа к Mysql
Перед началом использования Mysql следует убедиться, что служба Mysql запущена и работает постоянно. Для этого перейдите в службы Windows и убедитесь, что служба Mysql установлена и находится в состоянии «запущена». Если служба не запущена, щелкните правой кнопкой мыши на службе Mysql и выберите пункт «Запустить».
После запуска Mysql необходимо установить пароль администратора (root). Для этого откройте командную строку и перейдите в каталог, где установлена Mysql (обычно C:\Program Files\MySQL\MySQL Server\bin). Затем выполните команду:
mysqladmin -u root password "новый_пароль"
Здесь «новый_пароль» необходимо заменить на желаемый пароль. После выполнения команды пароль администратора будет успешно изменен.
По умолчанию Mysql запрещает удаленное подключение к серверу. Если вы планируете подключаться к Mysql с других компьютеров, вам необходимо настроить доступ к серверу. Для этого откройте файл конфигурации Mysql (обычно my.ini или my.cnf) и найдите строку:
bind-address = 127.0.0.1
Замените «127.0.0.1» на «0.0.0.0», чтобы разрешить доступ со всех IP-адресов. Сохраните файл и перезапустите службу Mysql для применения изменений.
После выполнения указанных выше шагов Mysql будет готов к использованию с настроенным паролем администратора и разрешенным доступом с других компьютеров. Это позволит вам успешно работать с базами данных в Mysql на Windows 10.
Содержание
- Как разрешить удаленные подключения к серверу базы данных MySQL
- Настройка сервера MySQL
- Предоставление доступа пользователю с удаленного компьютера
- Настройка межсетевого экрана
- Iptables
- БрандмауэрD
- Проверка изменений
- Выводы
- Как разрешить удаленные подключения к серверу базы данных MySQL
- Настройка MySQL Server
- Предоставление доступа пользователю с удаленного компьютера
- Настройка брандмауэра
- Iptables
- FirewallD
- Проверка изменений
- Заключение
- Не удается запустить MySql, порт 3306 занят
- 5 ответов
- Как открыть порты в Windows 10
- Зачем может потребоваться открыть порт?
- В брандмауэре системы
- В брандмауэре маршрутизатора
- Как проверить открытые порты?
- Использование команды AB
- Использование команды AON
- Как удаленно подключиться к MySQL
- Подключение через панель управления TimeWeb
- phpMyAdmin
- Соединение через SSH туннель
- Подключение в Windows
- Подключение в Linux
- Как проверить соединение с базой данных MySQL
- Читайте также
- Распространенные проблемы и ошибки при подключении к MySQL
- Заключение
По умолчанию сервер MySQL прослушивает соединения только с localhost, что означает, что к нему могут получить доступ только приложения, работающие на том же хосте.
Однако в некоторых ситуациях необходимо получить доступ к серверу MySQL из удаленного места. Например, если вы хотите подключиться к удаленному серверу MySQL из вашей локальной системы, или при использовании многосерверного развертывания, когда приложение выполняется на другом компьютере, чем сервер базы данных. Один из вариантов — получить доступ к серверу MySQL через туннель SSH, а другой — настроить сервер MySQL на прием удаленных подключений.
В этом руководстве мы рассмотрим шаги, необходимые для разрешения удаленных подключений к серверу MySQL. Те же инструкции применимы и для MariaDB.
Настройка сервера MySQL
Первый шаг — настроить сервер MySQL на прослушивание определенного IP-адреса или всех IP-адресов на машине.
Если сервер MySQL и клиенты могут связываться друг с другом через частную сеть, то лучшим вариантом будет настроить сервер MySQL на прослушивание только частного IP-адреса. В противном случае, если вы хотите подключиться к серверу через общедоступную сеть, настройте сервер MySQL на прослушивание всех IP-адресов на машине.
Найдите строку, которая начинается с bind-address и установите ее значение равным IP-адресу, который сервер MySQL должен прослушивать.
По умолчанию установлено значение 127.0.0.1 (прослушивается только на localhost).
В этом примере мы настроим сервер MySQL для прослушивания всех интерфейсов IPv4, изменив значение на 0.0.0.0
После этого перезапустите службу MySQL, чтобы изменения вступили в силу. Только root или пользователи с привилегиями sudo могут перезапускать службы.
Чтобы перезапустить службу MySQL в Debian или Ubuntu, введите:
В дистрибутивах на основе RedHat, таких как CentOS, для перезапуска службы выполните:
Предоставление доступа пользователю с удаленного компьютера
Следующим шагом будет разрешение доступа к базе данных удаленному пользователю.
Войдите на сервер MySQL как пользователь root, набрав:
Если вы используете старый собственный плагин аутентификации MySQL для входа в систему как root, выполните приведенную ниже команду и введите пароль при появлении запроса:
Изнутри оболочки MySQL используйте оператор GRANT чтобы предоставить доступ удаленному пользователю.
Настройка межсетевого экрана
Последний шаг — настроить брандмауэр, чтобы разрешить трафик на порт 3306 (порт по умолчанию MySQL) с удаленных машин.
Iptables
Если вы используете iptables в качестве брандмауэра, приведенная ниже команда разрешит доступ с любого IP-адреса в Интернете к порту MySQL. Это очень небезопасно.
Разрешить доступ с определенного IP-адреса:
UFW — это брандмауэр по умолчанию в Ubuntu. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), запустите:
Разрешить доступ с определенного IP-адреса:
БрандмауэрD
FirewallD — это инструмент управления брандмауэром по умолчанию в CentOS. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), введите:
Чтобы разрешить доступ с определенного IP-адреса через определенный порт, вы можете создать новую зону FirewallD или использовать расширенное правило. Итак, создайте новую зону с именем mysqlzone :
Проверка изменений
Чтобы убедиться, что удаленный пользователь может подключиться к серверу MySQL, выполните следующую команду:
Где user_name — это имя пользователя, mysql_server_ip вы предоставили доступ, а mysql_server_ip — это IP-адрес хоста, на котором работает сервер MySQL.
Если все настроено правильно, вы сможете войти на удаленный сервер MySQL.
Приведенная ниже ошибка указывает на то, что пользователь, которого вы пытаетесь войти в систему, не имеет разрешений на доступ к удаленному серверу MySQL.
Выводы
MySQL, самый популярный сервер баз данных с открытым исходным кодом по умолчанию, прослушивает входящие соединения только на localhost.
Чтобы разрешить удаленные подключения к серверу MySQL, вам необходимо выполнить следующие шаги:
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.
Источник
Как разрешить удаленные подключения к серверу базы данных MySQL
Главное меню » Базы данных » База данных MySQL » Как разрешить удаленные подключения к серверу базы данных MySQL
Однако в некоторых ситуациях необходимо разрешить удаленные подключения. Например, когда вы хотите подключиться к удаленному серверу MySQL из вашей локальной системы, или когда вы используете многосерверное развертывание, когда приложение работает на компьютере, отличном от сервера базы данных.
В этой статье мы рассмотрим шаги, необходимые для разрешения удаленных подключений к серверу MySQL. То же самое относится и к MariaDB.
Настройка MySQL Server
Первый шаг – настроить сервер MySQL на прослушивание определенного IP-адреса или всех IP-адресов на компьютере.
Если сервер MySQL и клиенты могут взаимодействовать друг с другом через частную сеть, то лучшим вариантом будет настроить сервер MySQL на прослушивание только по частному IP. В противном случае, если вы хотите подключиться к серверу через общедоступную сеть, настройте сервер MySQL на прослушивание всех IP-адресов на компьютере.
Расположение файла конфигурации MySQL зависит от дистрибутива. В Ubuntu и Debian файл находится по адресу /etc/mysql/mysql.conf.d/mysqld.cnf, в то время как в дистрибутивах на основе Red Hat, таких как CentOS, файл находится по адресу /etc/my.cnf.
Откройте файл в текстовом редакторе :
Найдите строку, которая начинается с bind-address и установите в качестве значения IP-адрес, который должен прослушивать сервер MySQL.
По умолчанию установлено значение 127.0.0.1 (прослушивается только на локальном хосте).
В этом примере мы настроим сервер MySQL на прослушивание всех интерфейсов IPv4, изменив значение на 0.0.0.0
mysqld.cnf
Если есть строка, содержащая skip-networking, удалите ее или закомментируйте, добавив # в начале строки.
В MySQL 8.0 и выше директива bind-address может отсутствовать. В этом случае добавьте ее в разделе [mysqld].
После этого перезапустите службу MySQL, чтобы изменения вступили в силу. Только root или пользователи с привилегиями sudo могут перезапускать сервисы.
Чтобы перезапустить службу MySQL в Debian или Ubuntu, введите:
В дистрибутивах на основе RedHat, таких как CentOS, для перезапуска службы выполните:
Предоставление доступа пользователю с удаленного компьютера
Следующим шагом является предоставление доступа к базе данных удаленному пользователю.
Войдите на сервер MySQL от имени пользователя root, введя:
Если вы используете старый плагин аутентификации MySQL для входа в систему от имени пользователя root, введите команду ниже и введите пароль при появлении запроса:
Внутри оболочки MySQL используйте GRANTоператор для предоставления доступа удаленному пользователю.
Например, чтобы предоставить доступ к базе данных dbname пользователю с именем andreyex с паролем my_passwd с клиентского компьютера с IP 10.8.0.5, вы должны выполнить:
Настройка брандмауэра
Последний шаг – настройка брандмауэра для разрешения трафика через порт 3306( порт MySQL по умолчанию) с удаленных компьютеров.
Iptables
Если вы используете iptables в качестве брандмауэра, команда ниже разрешит доступ с любого IP-адреса в Интернете к порту MySQL. Это очень небезопасно.
Разрешить доступ с определенного IP-адреса:
UFW – это инструмент брандмауэра по умолчанию в Ubuntu. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), выполните:
Разрешить доступ с определенного IP-адреса:
FirewallD
FirewallD является инструментом управления брандмауэром по умолчанию в CentOS. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), введите:
Чтобы разрешить доступ с определенного IP-адреса на конкретном порту, вы можете создать новую зону FirewallD или использовать расширенное правило. Хорошо создайте новую зону с именем mysqlzone:
Проверка изменений
Чтобы убедиться, что удаленный пользователь может подключиться к серверу MySQL, выполните следующую команду:
Где user_name имя пользователя, которому вы предоставили доступ и mysql_server_ip, IP-адрес хоста, на котором работает сервер MySQL.
Если все настроено правильно, вы сможете войти на удаленный сервер MySQL.
Если вы получаете сообщение об ошибке, как показано ниже, либо порт 3306 не открыт, либо сервер MySQL не прослушивает IP-адрес.
Приведенная ниже ошибка указывает на то, что пользователь, которому вы пытаетесь войти, не имеет прав доступа к удаленному серверу MySQL.
Заключение
MySQL, самый популярный сервер баз данных с открытым исходным кодом по умолчанию, прослушивает входящие соединения только на локальном хосте.
Чтобы разрешить удаленные подключения к серверу MySQL, вам необходимо выполнить следующие шаги:
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Не удается запустить MySql, порт 3306 занят
Я пытаюсь запустить MySql из XAMPP (под Windows Vista), но он говорит, что порт 3306 занят.
каков был бы лучший способ проверить, какое приложение использует этот порт и как его освободить?
5 ответов
в командной консоли выполните:
и ищем строку localhost:3306 во втором столбце. Ниже приведено имя приложения, использующего порт.
У меня была та же проблема, и я застрял на этой вещи в течение дня, и я не мог найти идеального ответа нигде. Поэтому я попробовал сам, и это сработало. Это решение предназначено для пользователей Windows. Я использую Windows 7.
моя панель управления xampp отображала ошибку, что порт 3306 занят и используется каким-то файлом (было указано имя).. сказать «filename.de».
теперь выполните следующие шаги:
просто откройте Диспетчер задач и убейте службу MySql.
У меня была эта проблема (небольшое изменение, поскольку я использовал MAMP)
Я обнаружил, что эта проблема связана с установкой MySQL Workbench, MySQL Workbench запустил службу mySQL при загрузке, которая, в свою очередь, остановила MAMP, способную использовать порт.
чтобы исправить это, у меня было 2 варианта,
Это позволило MAMP использовать порт 3306
надеюсь, что это может помочь кому-то!
в моем случае это был javaw.exe, который начинался с порта 3306. Этот exe не вызывает проблем, если я вошел в систему с помощью одного пользователя в моем Windows 10. Но если у меня есть несколько логинов, он запускает этот exe для каждого пользователя и блокирует MySQL для запуска на порту 3306.
переход к диспетчеру задач и убийство этого exe для другого пользователя Исправлена проблема, и MySQl может начаться.
Источник
Как открыть порты в Windows 10
От компьютера в интернет и наоборот передается огромное количество информации. Это делается с помощью службы, при которой зависимые от сети процессы ищут свободные транспортные протоколы TCP и UDP, а уже через них обращаются в сеть.
От компьютера в интернет и наоборот передается огромное количество информации. Это делается с помощью службы, при которой зависимые от сети процессы ищут свободные транспортные протоколы TCP и UDP, а уже через них обращаются в сеть.
То есть данные отправляются на удаленные порты в пункте назначения или на веб-ресурс, к которому идет попытка подключения, а затем обратно – на локальные. Они используются всеми приложениями для связи с интернетом.
Операционная система управляет портами и гарантирует, что трафик направляется через «правильные», чтобы эти процессы могли подключаться к тем, которым необходимо.
Зачем может потребоваться открыть порт?
Брандмауэр блокирует все ненужные сетевые порты, и каждый раз, когда приложение или служба пытается установить связь за пределами устройства, он проверяет, есть ли в базе данных определенное правило, разрешающее или запрещающее доступ к сети. Если ему не удается найти правило, появляется запрос на определение и предоставление или отказ в разрешении.
Большинство портов закрыто по умолчанию, чтобы предотвратить вторжение вирусов или вредоносных программ. Однако пользователь может столкнуться с некоторыми проблемами подключения, особенно при попытке настроить VPN на компьютере или при использовании игрового сервера. Поэтому необходимо разрешить получение/отправку ограниченного трафика через брандмауэр. А для этого нужно открыть порт.
В брандмауэре системы
Если приложению требуется определенный исходящий порт, можно использовать ту же инструкцию, но на шаге №5 выбрать параметры правил для исходящих сообщений.
В брандмауэре маршрутизатора
Важно! Если ни один из методов не помог решить проблему, рекомендуется использовать утилиту Restoro Repair Tool, которая может сканировать репозитории, чтобы заменить поврежденные и отсутствующие файлы. Это работает в большинстве случаев, когда проблема возникает из-за повреждения системы. Restoro также оптимизирует систему для достижения максимальной производительности.
Как проверить открытые порты?
Использование команды AB
Использование команды AON
Состояние listening – система следит и контролирует, есть ли запросы на соединение.
Состояние established – успешно используется.
Состояние time_wait – произошла ошибка тайм-аута.
Состояние close wait – соединение нестабильно и скоро прекратится.
Источник
Как удаленно подключиться к MySQL
Подключаться к базам данных можно разными способами. Подключение, устанавливаемое с сервера, называется локальным. С помощью такого типа подключения можно работать с домашнего компьютера, при этом используя любые удобные приложения по управлению базами данных.
Я расскажу, как подключиться к удаленной базе данных MySQL, какие существуют способы, а также опишу некоторые типичные ошибки.
Подключение через панель управления TimeWeb
Чтобы подключиться удаленно к MySQL, необходимо для начала открыть сайт хостинга и авторизоваться в личном кабинете. В панели управления следует выбрать раздел «Базы данных MySQL», через него и будем проводить операции. В новом открывшемся окне находим ссылку «Добавить доступ» напротив того сервера, к которому планируется подключиться. Для разрешения доступа к подсети /24 меняем последний актет IP-адреса на знак %.
При установлении соединения используем имя сервера или его IP-адрес. Данная информация доступна на главной странице в разделе «Информация о сервере». Порт указываем 3306, имя пользователя будет тем же, что и название базы данных. Вводим пароль и устанавливаем соединение.
phpMyAdmin
phpMyAdmin – программное средство, предоставляющее веб-интерфейс для работы с сервером MySQL. Подключиться к базе можно, открыв раздел «Базы данных MySQL» в панели управления хостингом. Находим на странице ссылку «phpMyAdmin» и жмем по ней для подключения. Если она недоступна, значит, пользователем был превышен лимит доступных БД. Увеличить его можно сменой тарифа.
Входим в данный раздел, вбиваем все данные и подключаемся.
Соединение через SSH туннель
Данный тип подключения считается более безопасным, потому что все данные по SSH-туннелю передаются в зашифрованном виде, исключая возможность перехвата.
Подключение в Windows
В данной ОС соединение по SSH протоколу можно осуществить с помощью специальных программ для управления базами данных. Например, PuTTY (бесплатная программа) или SecureCRT (платное ПО, но с пробной версией на 30 дней).
Далее переходим в категорию «Connection», открываем вкладку «SSH», затем «Tunnels». В поле «Source Port» указываем значение 3306, в «Destination» вбиваем localhost:3306, потом жмем на кнопку «Add» для добавления порта в список. И только потом жмем кнопку «Open» для установления соединения с хостом.
Предупреждаем, что если вы уже устанавливали сервер баз данных MySQL на своем компьютере, то соединение через порт 3306 будет недоступно. Надо будет указать другое значение, например 3307.
Подключение в Linux
В ОС Linux никакого дополнительного ПО устанавливать не придется, можно все провести через командную строку «Терминал». Перед тем как подключиться к MySQL удаленно, нужно создать SSH-туннель. Вводим вот такую команду:
Потом в конфигурационном файле MySQL потребуется изменить параметр, отвечающий за удаленное подключение. Открываем в «Терминале» файл, дав вот такую команду:
Далее комментируем нужную нам строку. В итоге она должна выглядеть вот таким образом:
Сохраняем изменения, потом перезапускаем MySQL вот такой командой:
Далее будет запрошен пароль для входа в панель управления хостингом, вводим его. Для подключения к удаленному серверу MySQL необходимо создать пользователя, и делается это вот такой командой:
Так мы создадим пользователя с неограниченным доступом ко всем базам на указанном сервере. Потом проверяем подключение утилитой telnet. Если сервер запрос не отклонил, значит, пора приступать к подключению. Для этого можно задать команды вот таких типов:
Как проверить соединение с базой данных MySQL
Для проверки подключения к базе данных MySQL во всех ОС используем утилиту telnet. Нужно просто открыть командную строку и набрать в ней вот такую команду:
Если соединение установится, то настройка туннеля прошла успешно, можно приступать к подключению. Если нет, рекомендуем тщательно проверить все настройки.
Читайте также
Распространенные проблемы и ошибки при подключении к MySQL
Как подключиться к MySQL удаленно, если возникают какие-то ошибки? Трудности обычно возникают при наличии запрещающих правил. Проверить, существуют ли такие, можно вот таким запросом:
Если таковые обнаружатся, добавим разрешающее правило. Для этого надо ввести соответствующую команду, она должна выглядеть примерно вот так:
Есть еще возможность открыть доступ для определенного IP-адреса, и это куда более безопасный способ. Для этого потребуется ввести такой запрос:
Эту ошибку можно исправить, установив пароль старого формата:
Ошибка «1045 невозможно подключиться к серверу MySQL» возникает при попытке подключиться удаленно к базам данных через phpMyAdmin. Причиной тому может быть неправильно введенный логин или же отсутствие пароля у пользователя или его неправильная смена.
Заключение
MySQL – один из самых популярных серверов баз данных с открытым исходным кодом. Подключиться к нему можно разными способами, причем как локально, так и удаленно. Если в процессе соединения возникают нетипичные ошибки, рекомендуем связаться со службой технической поддержки.
Источник
Подключаться к базам данных можно разными способами. Подключение, устанавливаемое с сервера, называется локальным. С помощью такого типа подключения можно работать с домашнего компьютера, при этом используя любые удобные приложения по управлению базами данных.
Я расскажу, как подключиться к удаленной базе данных MySQL, какие существуют способы, а также опишу некоторые типичные ошибки.
Подключение через панель управления TimeWeb
Чтобы подключиться удаленно к MySQL, необходимо для начала открыть сайт хостинга и авторизоваться в личном кабинете. В панели управления следует выбрать раздел «Базы данных MySQL», через него и будем проводить операции. В новом открывшемся окне находим ссылку «Добавить доступ» напротив того сервера, к которому планируется подключиться. Для разрешения доступа к подсети /24 меняем последний актет IP-адреса на знак %.
При установлении соединения используем имя сервера или его IP-адрес. Данная информация доступна на главной странице в разделе «Информация о сервере». Порт указываем 3306, имя пользователя будет тем же, что и название базы данных. Вводим пароль и устанавливаем соединение.
phpMyAdmin
phpMyAdmin – программное средство, предоставляющее веб-интерфейс для работы с сервером MySQL. Подключиться к базе можно, открыв раздел «Базы данных MySQL» в панели управления хостингом. Находим на странице ссылку «phpMyAdmin» и жмем по ней для подключения. Если она недоступна, значит, пользователем был превышен лимит доступных БД. Увеличить его можно сменой тарифа.
Входим в данный раздел, вбиваем все данные и подключаемся.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Соединение через SSH туннель
Данный тип подключения считается более безопасным, потому что все данные по SSH-туннелю передаются в зашифрованном виде, исключая возможность перехвата.
Подключение в Windows
В данной ОС соединение по SSH протоколу можно осуществить с помощью специальных программ для управления базами данных. Например, PuTTY (бесплатная программа) или SecureCRT (платное ПО, но с пробной версией на 30 дней).
Мы для работы выбрали PuTTY. Скачиваем установщик с официального сайта и устанавливаем приложение. Запускаем программу, затем переходим в раздел «Session». В поле «Host Name» вводим свой домен или указываем его IP-адрес.
Далее переходим в категорию «Connection», открываем вкладку «SSH», затем «Tunnels». В поле «Source Port» указываем значение 3306, в «Destination» вбиваем localhost:3306, потом жмем на кнопку «Add» для добавления порта в список. И только потом жмем кнопку «Open» для установления соединения с хостом.
Логин и пароль те же самые, которые используются для входа в панель управления. При подключении используем имя пользователя и пароль, выданные при создании базы данных. Адрес сервера — 127.0.0.1, порт для подключения 3306.
Предупреждаем, что если вы уже устанавливали сервер баз данных MySQL на своем компьютере, то соединение через порт 3306 будет недоступно. Надо будет указать другое значение, например 3307.
Подключение в Linux
В ОС Linux никакого дополнительного ПО устанавливать не придется, можно все провести через командную строку «Терминал». Перед тем как подключиться к MySQL удаленно, нужно создать SSH-туннель. Вводим вот такую команду:
ssh -L3306:localhost:3306 -n логин@site.com
Потом в конфигурационном файле MySQL потребуется изменить параметр, отвечающий за удаленное подключение. Открываем в «Терминале» файл, дав вот такую команду:
sudo nano /etc/mysql/my.cnf
Далее комментируем нужную нам строку. В итоге она должна выглядеть вот таким образом:
# bind-address = 127.0.0.1
Сохраняем изменения, потом перезапускаем MySQL вот такой командой:
sudo service mysql restart
Далее будет запрошен пароль для входа в панель управления хостингом, вводим его. Для подключения к удаленному серверу MySQL необходимо создать пользователя, и делается это вот такой командой:
GRANT ALL ON *.* TO имя_пользователя@127.0.0.1 IDENTIFIED BY 'пароль'
Так мы создадим пользователя с неограниченным доступом ко всем базам на указанном сервере. Потом проверяем подключение утилитой telnet. Если сервер запрос не отклонил, значит, пора приступать к подключению. Для этого можно задать команды вот таких типов:
mysql -u имя_пользователя –h 127.0.0.1 –p mysql -h наименование_хоста -u dbUser -p dbName
Как проверить соединение с базой данных MySQL
Для проверки подключения к базе данных MySQL во всех ОС используем утилиту telnet. Нужно просто открыть командную строку и набрать в ней вот такую команду:
telnet 127.0.0.1 3306
Если соединение установится, то настройка туннеля прошла успешно, можно приступать к подключению. Если нет, рекомендуем тщательно проверить все настройки.
Читайте также
Распространенные проблемы и ошибки при подключении к MySQL
Как подключиться к MySQL удаленно, если возникают какие-то ошибки? Трудности обычно возникают при наличии запрещающих правил. Проверить, существуют ли такие, можно вот таким запросом:
iptables-save
Если таковые обнаружатся, добавим разрешающее правило. Для этого надо ввести соответствующую команду, она должна выглядеть примерно вот так:
/sbin/iptables -A INPUT -i eth0 -p tcp —destination-port 3306 -j ACCEPT
Если при подключении возникает ошибка «Can’t connect to Mysql Server on ‘IP_адрес'(10061)», соединение заблокировал брандмауэр, firewall, outpost, антивирус и прочие программы. Для UFW, инструмента брандмауэра в Ubuntu, можно задать вот такую команду, разрешающую доступ с любого IP-адреса:
sudo ufw allow 3306/tcp
Есть еще возможность открыть доступ для определенного IP-адреса, и это куда более безопасный способ. Для этого потребуется ввести такой запрос:
sudo ufw allow from IP_адрес to any port 3306
Если же появляется ошибка типа «Client does not support autentification protocol request by server; consider upgrading MySQL client», это значит, что установленный клиент не поддерживает требуемый сервером протокол.
Эту ошибку можно исправить, установив пароль старого формата:
SET PASSWORD FOR user@host = OLD_PASSWORD('password')
Если при проверке выходит ошибка формата «ERROR 2003 (HY000): Can’t connect to MySQL server», это значит, что порт 3306 не открыт. Либо сервер MySQL не прослушивает указанный IP-адрес.
В случае, когда выходит сообщение «ERROR 1130 (HY000): Host ‘10.8.0.5’ is not allowed to connect to this MySQL server», указывается отсутствие прав доступа к удаленному серверу у пользователя.
Ошибка «1045 невозможно подключиться к серверу MySQL» возникает при попытке подключиться удаленно к базам данных через phpMyAdmin. Причиной тому может быть неправильно введенный логин или же отсутствие пароля у пользователя или его неправильная смена.
Заключение
MySQL – один из самых популярных серверов баз данных с открытым исходным кодом. Подключиться к нему можно разными способами, причем как локально, так и удаленно. Если в процессе соединения возникают нетипичные ошибки, рекомендуем связаться со службой технической поддержки.
Если вы работаете с База данных MySQL , значит, вы уже знаете о проблемах, с которыми вы сталкиваетесь при обеспечении безопасности своей базы данных. От попыток взлома базы данных с использованием SQL-инъекций до атак грубой силы-сложно обеспечить безопасность ваших данных, особенно если вы работаете с базой данных удаленно.
Есть способы настроить SQL-сервер для разрешения удаленных подключений. , но вам нужно быть осторожным, поскольку разрешение удаленных подключений к серверу MySQL может сделать вашу базу данных легкой мишенью для хакеров. Если вы хотите разрешить безопасные удаленные подключения к базе данных MySQL, вот что вам нужно знать.
Содержание
Перед тем, как начать
Прежде чем вносить какие-либо изменения в базу данных MySQL, важно, чтобы вы резервное копирование базы данных , особенно если вы работаете на производственном сервере (активно используемом сервере). Любые изменения, которые вы вносите в свою базу данных или сервер, на котором она размещена, могут привести к серьезной потере данных, если что-то пойдет не так.
Вы также можете обнаружить, что изменения в соединениях вашего сервера могут помешать вам получить к нему доступ впоследствии. В этом случае вам может потребоваться проконсультироваться с администратором сервера для получения дополнительной поддержки. Хорошая идея-протестировать любые изменения на локальном сервере MySQL, чтобы проверить, работают ли ваши изменения, прежде чем пробовать их удаленно.
Также вероятно, что если вы вносите изменения на удаленный сервер, вы: Вам понадобится безопасный способ подключения и внесения изменений. SSH (Secure Shell) часто является лучшим способом сделать это, поскольку он позволяет подключаться к удаленному серверу. Вы также можете использовать SSH для подключения к серверам в вашей локальной сети, таким как размещено на Raspberry Pi .
Это руководство проведет вас через шаги по настройке MySQL для разрешения удаленных подключений, но вам необходимо сначала убедиться, что у вас есть прямой или удаленный доступ к серверу, на котором размещен ваш сервер MySQL.
Предположим, у вас нет удаленного доступа к вашему серверу через SSH (например). В этом случае вы не сможете настроить свою базу данных MySQL для разрешения удаленных подключений напрямую, если только ваша учетная запись root 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 , позволяющая восстановить данные в экстренной ситуации.
I had to this challenge when working on a Java Project with MySQL server as the database.
Here’s how I did it:
First, confirm that your MySQL server configuration to allow for remote connections. Use your preferred text editor to open the MySQL server configuration file:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Scroll down to the bind-address line and ensure that is either commented out or replaced with 0.0.0.0
(to allow all remote connections) or replaced with Ip-Addresses that you want remote connections from.
Once you make the necessary changes, save and exit the configuration file. Apply the changes made to the MySQL config file by restarting the MySQL service:
sudo systemctl restart mysql
Next, log into the MySQL server console on the server it was installed:
mysql -u root -p
Enter your mysql user password
Check the hosts that the user you want has access to already. In my case the user is root
:
SELECT host FROM mysql.user WHERE user = "root";
This gave me this output:
+-----------+
| host |
+-----------+
| localhost |
+-----------+
Next, I ran the command below to grant the root
user remote access to the database named my_database
:
USE my_database;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-password';
Note: %
grants a user remote access from all hosts on a network. You can specify the Ip-Address of the individual hosts that you want to grant the user access from using the command — GRANT ALL PRIVILEGES ON *.* TO 'root'@'Ip-Address' IDENTIFIED BY 'my-password';
Afterwhich I checked the hosts that the user now has access to. In my case the user is root
:
SELECT host FROM mysql.user WHERE user = "root";
This gave me this output:
+-----------+
| host |
+-----------+
| % |
| localhost |
+-----------+
Finally, you can try connecting to the MySQL server from another server using the command:
mysql -u username -h mysql-server-ip-address -p
Where u represents user, h represents mysql-server-ip-address and p represents password. So in my case it was:
mysql -u root -h 34.69.261.158 -p
Enter your mysql user password
You should get this output depending on your MySQL server version:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql>
Resources: How to Allow Remote Connections to MySQL
That’s all.
I hope this helps
Introduction
It is not uncommon to host databases and web servers on the same local machine. However, many organizations are now moving to a more distributed environment.
A separate database server can improve security, hardware performance, and enable you to scale resources quickly. In such use cases, learning how to manage remote resources effectively is a priority.
This tutorial shows you how to enable remote connections to a MySQL database.
Prerequisites
- Access to a terminal window/command line
- Remote MySQL server
- Sudo or root privileges on local and remote machines
Note: If you do not have direct access to your MySQL server, you need to establish a secure SSH connection. In case you need assistance, we have prepared a comprehensive tutorial on how to use SSH to connect to a remote server. This article a must-read for anyone new to the process.
MySQL Server Remote Connection
Allowing connections to a remote MySQL server is set up in 3 steps:
1. Edit MySQL config file.
2. Configure firewall.
3. Connect to remote MySQL server.
Step 1: Edit MySQL Config File
1.1 Access mysqld.cnf File
Use your preferred text editor to open the mysqld.cnf file. This example uses the nano text editor in Ubuntu 18.04. Enter the following command in your command-line interface to access the MySQL server configuration file:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
The location of the file may vary based on the distribution and version in use. If the MySQL configuration file is not it its default location try using the Linux find
command to detect it.
1.2 Change Bind-Address IP
You now have access to the MySQL server configuration file. Scroll down to the bind-address line and change the IP address. The current default IP is set to 127.0.0.1. This IP limits MySQL connections to the local machine.
The new IP should match the address of the machine that needs to access the MySQL server remotely. For example, if you bind MySQL to 0.0.0.0, then any machine that reaches the MySQL server can also connect with it.
Once you make the necessary changes, save and exit the configuration file.
Note: Remote access is additionally verified by using the correct credentials and user parameters you have defined for your MySQL users.
1.3 Restart MySQL Service
Apply the changes made to the MySQL config file by restarting the MySQL service:
sudo systemctl restart mysql
Next, your current firewall settings need to be adjusted to allow traffic to the default MySQL port.
Step 2: Set up Firewall to Allow Remote MySQL Connection
While editing the configuration file, you probably observed that the default MySQL port is 3306.
If you have already configured a firewall on your MySQL server, you need to open traffic for this specific port. Follow the instructions below that correspond to your firewall service in use.
Option 1: UFW (Uncomplicated Firewall)
UFW is the default firewall tool in Ubuntu. In a terminal window, type the following command to allow traffic and match the IP and port:
sudo ufw allow from remote_ip_address to any port 3306
The system confirms that the rules were successfully updated.
Option 2: FirewallD
The firewalld management tool in CentOS uses zones to dictate what traffic is to be allowed.
Create a new zone to set the rules for the MySQL server traffic. The name of the zone in our example is mysqlrule, and we used the IP address from our previous example 133.155.44.103:
sudo firewall-cmd --new-zone=mysqlrule --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlrule --add-source=133.155.44.103
sudo firewall-cmd --permanent --zone=mysqlrule --add-port=3306/tcp
sudo firewall-cmd --reload
You have successfully opened port 3306 on your firewall.
Option 3: Open Port 3306 with iptables
The iptables utility is available on most Linux distributions by default. Type the following command to open MySQL port 3306 to unrestricted traffic:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
To limit access to a specific IP address, use the following command instead:
sudo iptables -A INPUT -p tcp -s 133.155.44.103 --dport 3306 -j ACCEPT
This command grants access to 133.155.44.103. You would need to substitute it with the IP for your remote connection.
It is necessary to save the changes made to the iptables rules. In an Ubuntu-based distribution type the following commands:
sudo netfilter-persistent save
sudo netfilter-persistent reload
Note: If the previous commands do not work, try installing the program with:
sudo apt-get install iptables-persistent
Type the ensuing command to save the new iptables rules in CentOS:
service iptables save
Step 3: Connect to Remote MySQL Server
Your remote server is now ready to accept connections. Use the following command to establish a connection with your remote MySQL server:
mysql -u username -h mysql_server_ip -p
The -u username
in the command represents your MySQL username. The -h mysql_server_ip
is the IP or the hostname of your MySQL server. The -p
option prompts you to enter the password for the MySQL username.
You should see an output similar to the one below:
Connection to mysql_server_ip 3306 port [tcp/mysql] succeeded!
How to Grant Remote Access to New MySQL Database?
If you do not have any databases yet, you can easily create a database by typing the following command in your MySQL shell:
CREATE DATABASE 'yourDB';
To grant remote user access to a specific database:
GRANT ALL PRIVILEGES ON yourDB.* TO [email protected]'133.155.44.103' IDENTIFIED BY 'password1';
The name of the database, the username, remote IP, and password need to match the information you want to use for the remote connection.
How to Grant Remote Access to Existing MySQL Database
Granting remote access to a user for an existing database requires a set of two commands:
update db set Host='133.155.44.103' where Db='yourDB';
update user set Host='133.155.44.103' where user='user1';
User1 is now able to access yourDB from a remote location identified by the IP 133.155.44.103.
Conclusion
In this article, you have gained valuable insight into the general principles of a remote MySQL connection.
With the appropriate credentials, a user originating from the specified IP address can now access your MySQL server from a remote machine.
Мои действия:
1. Установил MySQL Server с официального сайта
2. Подключил интернет на прямую к компьютеру
3. Открыл входящие порты (диапозоны) 80-81, 5000-5010, 443, 3306 в брандмауэре Windows
4. Установил в настройках [mysqld] bind-address 0.0.0.0
5. Перезапустил сервер
6. С помощью консоли MySQL установил для root пользователя Host = %
7. Выключил Kaspersky (антивирус)
8. Попробовал соединиться с внешним IP своего сервера
9. Соединение не было установлено
Прошу помочь мне определить, что я сделал не так или что нужно сделать, чтобы достичь цели.
-
Вопрос заданболее трёх лет назад
-
17420 просмотров
ОС на которой установлен MySql как я понимаю Windows?
1. Командой netstat -na | find «3306» проверяете, что mysql действительно слушает порт 3306.
если порт не прослушивается или прослушивается не на тех адресах — копать конфигурацию на предмет параметров skip-networking, bind-address и т.п.
2. Командой telnet localhost 3306 с локальной машины проверяете что удается присоединиться к нему с локальной машины.
3. Командой telnet 3306 с удаленной машины проверяете, что удается подключиться к нему с удаленной машины — если не получается -смотреть настройки фаерволов.
4. Если в п. 3 подключиться удалось — смотрите настройки пользователя — вероятно ошиблись где-то когда разрешали подключаться руту с любого хоста.
Пригласить эксперта
ip-адрес то у вас «белый»?
Посмотрите в свойствах сетевой карты (или vpn-соединения, если оно есть) — адрес должен совпадать с тем, который вы видите на на ifconfig.me
Если нет — то без подручных средств (в основном, связанных с туннелирование трафика с другой машины, у которой есть белый адрес на вашу) ничего не выйдет.
bind-address в :: выставить ещё попробуйте.
MySQL чувствует, что небезопасно его снаружи открытым держать и сопротивляется. Смиритесь.
Проверьте наличие строчки skip-networking в my.cnf
Если есть — просто закомментируйте или удалите.
Можно проверить открыт ли порт вообще
Выполните с под админа netstat -tabon
-
Показать ещё
Загружается…
06 февр. 2023, в 15:09
10000 руб./за проект
06 февр. 2023, в 14:50
12000 руб./за проект
06 февр. 2023, в 14:41
1 руб./за проект
Минуточку внимания
По умолчанию сервер MySQL прослушивает соединения только с localhost, что означает, что к нему могут получить доступ только приложения, работающие на том же хосте.
Однако в некоторых ситуациях необходимо получить доступ к серверу MySQL из удаленного места. Например, если вы хотите подключиться к удаленному серверу MySQL из вашей локальной системы, или при использовании многосерверного развертывания, когда приложение выполняется на другом компьютере, чем сервер базы данных. Один из вариантов — получить доступ к серверу MySQL через туннель SSH, а другой — настроить сервер MySQL на прием удаленных подключений.
В этом руководстве мы рассмотрим шаги, необходимые для разрешения удаленных подключений к серверу MySQL. Те же инструкции применимы и для MariaDB.
Настройка сервера MySQL
Первый шаг — настроить сервер MySQL на прослушивание определенного IP-адреса или всех IP-адресов на машине.
Если сервер MySQL и клиенты могут связываться друг с другом через частную сеть, то лучшим вариантом будет настроить сервер MySQL на прослушивание только частного IP-адреса. В противном случае, если вы хотите подключиться к серверу через общедоступную сеть, настройте сервер MySQL на прослушивание всех IP-адресов на машине.
Для этого вам необходимо отредактировать файл конфигурации MySQL и добавить или изменить значение параметра bind-address
. Вы можете установить один IP-адрес и диапазоны IP-адресов. Если адрес 0.0.0.0
, сервер MySQL принимает соединения на всех интерфейсах хоста IPv4. Если в вашей системе настроен IPv6, то вместо 0.0.0.0
используйте ::
.
Расположение файла конфигурации MySQL отличается в зависимости от дистрибутива. В Ubuntu и Debian файл находится по адресу /etc/mysql/mysql.conf.d/mysqld.cnf
, а в дистрибутивах на основе Red Hat, таких как CentOS, файл находится по адресу /etc/my.cnf
.
Откройте файл в текстовом редакторе :
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Найдите строку, которая начинается с bind-address
и установите ее значение равным IP-адресу, который сервер MySQL должен прослушивать.
По умолчанию установлено значение 127.0.0.1
(прослушивается только на localhost).
В этом примере мы настроим сервер MySQL для прослушивания всех интерфейсов IPv4, изменив значение на 0.0.0.0
mysqld.cnf
bind-address = 0.0.0.0
# skip-networking
Если есть строка, содержащая skip-networking
, удалите ее или закомментируйте, добавив #
в начале строки.
В MySQL 8.0 и выше директива bind-address
может отсутствовать. В этом случае добавьте его в раздел [mysqld]
.
После этого перезапустите службу MySQL, чтобы изменения вступили в силу. Только root или пользователи с привилегиями sudo могут перезапускать службы.
Чтобы перезапустить службу MySQL в Debian или Ubuntu, введите:
sudo systemctl restart mysql
В дистрибутивах на основе RedHat, таких как CentOS, для перезапуска службы выполните:
sudo systemctl restart mysqld
Предоставление доступа пользователю с удаленного компьютера
Следующим шагом будет разрешение доступа к базе данных удаленному пользователю.
Войдите на сервер MySQL как пользователь root, набрав:
sudo mysql
Если вы используете старый собственный плагин аутентификации MySQL для входа в систему как root, выполните приведенную ниже команду и введите пароль при появлении запроса:
mysql -uroot -p
Изнутри оболочки MySQL используйте оператор GRANT
чтобы предоставить доступ удаленному пользователю.
GRANT ALL ON database_name.* TO [email protected]'ip_address' IDENTIFIED BY 'user_password';
Где:
database_name
— это имя базы данных, к которой будет подключаться пользователь.-
user_name
— это имя пользователя MySQL. -
ip_address
— это IP-адрес, с которого пользователь будет подключаться. Используйте%
чтобы разрешить пользователю подключаться с любого IP-адреса. -
user_password
— пароль пользователя.
Например, чтобы предоставить доступ к базе данных dbname
пользователю с именем foo
с паролем my_passwd
с клиентского компьютера с IP 10.8.0.5
, вы должны запустить:
GRANT ALL ON dbname.* TO [email protected]'10.8.0.5' IDENTIFIED BY 'my_passwd';
Настройка межсетевого экрана
Последний шаг — настроить брандмауэр, чтобы разрешить трафик на порт 3306
(порт по умолчанию MySQL) с удаленных машин.
Iptables
Если вы используете iptables в качестве брандмауэра, приведенная ниже команда разрешит доступ с любого IP-адреса в Интернете к порту MySQL. Это очень небезопасно.
sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
Разрешить доступ с определенного IP-адреса:
sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW
UFW — это брандмауэр по умолчанию в Ubuntu. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), запустите:
sudo ufw allow 3306/tcp
Разрешить доступ с определенного IP-адреса:
sudo ufw allow from 10.8.0.5 to any port 3306
БрандмауэрD
FirewallD — это инструмент управления брандмауэром по умолчанию в CentOS. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), введите:
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
Чтобы разрешить доступ с определенного IP-адреса через определенный порт, вы можете создать новую зону FirewallD или использовать расширенное правило. Итак, создайте новую зону с именем mysqlzone
:
sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32
sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
sudo firewall-cmd --reload
Проверка изменений
Чтобы убедиться, что удаленный пользователь может подключиться к серверу MySQL, выполните следующую команду:
mysql -u user_name -h mysql_server_ip -p
Где user_name
— это имя пользователя, mysql_server_ip
вы предоставили доступ, а mysql_server_ip
— это IP-адрес хоста, на котором работает сервер MySQL.
Если все настроено правильно, вы сможете войти на удаленный сервер MySQL.
Если вы получаете сообщение об ошибке, подобное приведенному ниже, то либо порт 3306 не открыт , либо сервер MySQL не прослушивает IP-адрес .
ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"
Приведенная ниже ошибка указывает на то, что пользователь, которого вы пытаетесь войти в систему, не имеет разрешений на доступ к удаленному серверу MySQL.
"ERROR 1130 (HY000): Host ‘10.8.0.5’ is not allowed to connect to this MySQL server"
Выводы
MySQL, самый популярный сервер баз данных с открытым исходным кодом по умолчанию, прослушивает входящие соединения только на localhost.
Чтобы разрешить удаленные подключения к серверу MySQL, вам необходимо выполнить следующие шаги:
- Настройте сервер MySQL для прослушивания всего или определенного интерфейса.
- Разрешите доступ удаленному пользователю.
- Откройте порт MySQL в вашем брандмауэре.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.
Contents
- Finding the Defaults File
- Editing the Defaults File
- Granting User Connections From Remote Hosts
- Port 3306 is Configured in Firewall
- Caveats
Some MariaDB packages bind MariaDB to 127.0.0.1 (the loopback IP address) by default
as a security measure using the bind-address configuration directive. Old MySQL packages sometimes disabled TCP/IP networking altogether using the skip-networking directive. Before going in to how to configure these, let’s
explain what each of them actually does:
- skip-networking is fairly simple. It just tells MariaDB to run without any of the TCP/IP networking options.
- bind-address requires a little bit of background information. A given
server usually has at least two networking interfaces (although this is not
required) and can easily have more. The two most common are a Loopback
network device and a physical Network Interface Card (NIC) which allows
you to communicate with the network. MariaDB is bound to the loopback
interface by default because it makes it impossible to connect to the TCP
port on the server from a remote host (the bind-address must refer to a local
IP address, or you will receive a fatal error and MariaDB will not start).
This of course is not desirable if you want to use the TCP port from a remote
host, so you must remove this bind-address directive (MariaDB only supports
one bind-address, but binds to 0.0.0.0, or :: (every IP) if the bind-address
directive is left out).
If bind-address is bound to 127.0.0.1 (localhost), one can’t connect to the MariaDB server from other hosts or from the same host over TCP/IP on a different interface than the loopback (127.0.0.1). This for example will not work (connecting with a hostname that points to a local IP of the host):
(/my/maria-10.4) ./client/mysql --host=myhost --protocol=tcp --port=3306 test ERROR 2002 (HY000): Can't connect to MySQL server on 'myhost' (115) (/my/maria-10.4) telnet myhost 3306 Trying 192.168.0.11... telnet: connect to address 192.168.0.11: Connection refused
Using ‘localhost’ works when binding with bind_address
:
(my/maria-10.4) ./client/mysql --host=localhost --protocol=tcp --port=3306 test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MariaDB monitor. Commands end with ; or g. ...
Finding the Defaults File
To enable MariaDB to listen to remote connections, you need to edit your defaults
file. See Configuring MariaDB with my.cnf for more detail.
Common locations for defaults files:
* /etc/my.cnf (*nix/BSD) * $MYSQL_HOME/my.cnf (*nix/BSD) *Most Notably /etc/mysql/my.cnf * SYSCONFDIR/my.cnf (*nix/BSD) * DATADIRmy.ini (Windows)
You can see which defaults files are read and in which order by executing:
shell> mysqld --help --verbose ./sql/mysqld Ver 10.4.2-MariaDB-valgrind-max-debug for Linux on x86_64 (Source distribution) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Starts the MariaDB database server. Usage: ./sql/mysqld [OPTIONS] Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
The last line shows which defaults files are read.
Editing the Defaults File
Once you have located the defaults file, use a text editor to open the file and
try to find lines like this under the [mysqld] section:
[mysqld] ... skip-networking ... bind-address = <some ip-address> ...
(The lines may not be in this order, and the order doesn’t matter.)
If you are able to locate these lines, make sure they are both commented out
(prefaced with hash (#) characters), so that they look like this:
[mysqld] ... #skip-networking ... #bind-address = <some ip-address> ...
(Again, the order of these lines don’t matter)
Alternatively, just add the following lines at the end of your .my.cnf (notice that the file name starts with a dot) file in your home directory or alternative last in your /etc/my.cnf file.
[mysqld] skip-networking=0 skip-bind-address
This works as one can have any number of mysqld sections.
Save the file and restart the mysqld daemon or service (see Starting and Stopping MariaDB).
You can check the options mysqld is using by executing:
shell> ./sql/mysqld --print-defaults ./sql/mysqld would have been started with the following arguments: --bind-address=127.0.0.1 --innodb_file_per_table=ON --server-id=1 --skip-bind-address ...
It doesn’t matter if you have the original —bind-address left as the later —skip-bind-address will overwrite it.
Granting User Connections From Remote Hosts
Now that your MariaDB server installation is setup to accept connections from
remote hosts, we have to add a user that is allowed to connect from something
other than ‘localhost’ (Users in MariaDB are defined as ‘user’@’host’, so
‘chadmaynard’@’localhost’ and ‘chadmaynard’@’1.1.1.1’ (or
‘chadmaynard’@’server.domain.local’) are different users that can have
completely different permissions and/or passwords.
To create a new user:
- log into the mysql command line client (or your favorite graphical client if you wish)
Welcome to the MariaDB monitor. Commands end with ; or g. Your MariaDB connection id is 36 Server version: 5.5.28-MariaDB-mariadb1~lucid mariadb.org binary distribution Copyright (c) 2000, 2012, Oracle, Monty Program Ab and others. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. MariaDB [(none)]>
- if you are interested in viewing any existing remote users, issue the following SQL statement on the mysql.user table:
SELECT User, Host FROM mysql.user WHERE Host <> 'localhost'; +--------+-----------+ | User | Host | +--------+-----------+ | daniel | % | | root | 127.0.0.1 | | root | ::1 | | root | gandalf | +--------+-----------+ 4 rows in set (0.00 sec)
(If you have a fresh install, it is normal for no rows to be returned)
Now you have some decisions to make. At the heart of every grant statement you have these things:
- list of allowed privileges
- what database/tables these privileges apply to
- username
- host this user can connect from
- and optionally a password
It is common for people to want to create a «root» user that can connect from anywhere, so as an example, we’ll do just that, but to improve on it we’ll create
a root user that can connect from anywhere on my local area network (LAN), which
has addresses in the subnet 192.168.100.0/24. This is an improvement because
opening a MariaDB server up to the Internet and granting access to all
hosts is bad practice.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
(% is a wildcard)
For more information about how to use GRANT, please see the GRANT
page.
At this point we have accomplished our goal and we have a user ‘root’ that can
connect from anywhere on the 192.168.100.0/24 LAN.
Port 3306 is Configured in Firewall
One more point to consider whether the firwall is configured to allow incoming request from remote clients:
On RHEL and CentOS 7, it may be necessary to configure the firewall to allow TCP access to MySQL from remote hosts. To do so, execute both of these commands:
firewall-cmd --add-port=3306/tcp firewall-cmd --permanent --add-port=3306/tcp
Caveats
- If your system is running a software firewall (or behind a hardware firewall
or NAT) you must allow connections destined to TCP port that MariaDB runs on (by
default and almost always 3306). - To undo this change and not allow remote access anymore, simply remove the
skip-bind-address
line or uncomment the bind-address line in your defaults file. The end result should be that you should have in the output from./sql/mysqld --print-defaults
the option--bind-address=127.0.0.1
and no--skip-bind-address
.
Я пытаюсь запустить MySql из XAMPP (под Windows Vista), но он говорит, что порт 3306 занят.
каков был бы лучший способ проверить, какое приложение использует этот порт и как его освободить?
спасибо!
5 ответов
в командной консоли выполните:
netstat -b -p TCP
и ищем строку localhost:3306
во втором столбце. Ниже приведено имя приложения, использующего порт.
У меня была та же проблема, и я застрял на этой вещи в течение дня, и я не мог найти идеального ответа нигде.
Поэтому я попробовал сам, и это сработало. Это решение предназначено для пользователей Windows. Я использую Windows 7.
моя панель управления xampp отображала ошибку, что порт 3306 занят и используется каким-то файлом (было указано имя).. сказать «filename.de».
теперь выполните следующие шаги:
- пресс Ctrl+Alt+Дель и откройте Диспетчер задач.
- Откройте список » процессы «и проверьте» показать все процессы » в списке процессов. Если вы не видите такой возможности, не волнуйтесь! как иногда требуется разрешение администратора, чтобы показать некоторые процессы.
- теперь, когда вы нажимаете на кнопку» Показать все процессы», весь процесс будет отображаться.
- когда вы найдете эту услугу, «щелкните правой кнопкой мыши», а затем выберите опцию.. Гото Процесс.
- вы будете перенаправлены на вкладку «Процессы» с акцентом на процесс, соответствующий этой службе. «Щелкните правой кнопкой мыши», а затем нажмите «Завершить дерево процессов».
- теперь проблема решена! Но, возможно, придется сделать то же самое снова. при перезагрузке компьютера. Поэтому лучше всего держать компьютер в спящем режиме.
- в противном случае, чтобы решить эту проблему навсегда, откройте «msconfig» и снимите этот конкретный процесс из списка служб и нажмите «Применить». и вы можете перезагрузить компьютер.
переходим на вкладку «Службы» в диспетчере задач, и список будут отображаться службы. Теперь ищите службу под названием «filename.de»
просто откройте Диспетчер задач и убейте службу MySql.
У меня была эта проблема (небольшое изменение, поскольку я использовал MAMP)
Я обнаружил, что эта проблема связана с установкой MySQL Workbench, MySQL Workbench запустил службу mySQL при загрузке, которая, в свою очередь, остановила MAMP, способную использовать порт.
чтобы исправить это, у меня было 2 варианта,
- Удалить MySQL Workbench
- открыть задачу, перейдите на вкладку Службы, убейте текущую службу MySQL
Это позволило MAMP использовать порт 3306
надеюсь, что это может помочь кому-то!
в моем случае это был javaw.exe, который начинался с порта 3306. Этот exe не вызывает проблем, если я вошел в систему с помощью одного пользователя в моем Windows 10. Но если у меня есть несколько логинов, он запускает этот exe для каждого пользователя и блокирует MySQL для запуска на порту 3306.
переход к диспетчеру задач и убийство этого exe для другого пользователя Исправлена проблема, и MySQl может начаться.
Содержание
- Не удается запустить MySql, порт 3306 занят
- 5 ответов
- Can’t start MySQL, port 3306 busy
- 12 Answers 12
- Не удается запустить MySQL, порт 3306 занят
- 12 ответов
- Как освободить порт 3306 windows 10
Не удается запустить MySql, порт 3306 занят
Я пытаюсь запустить MySql из XAMPP (под Windows Vista), но он говорит, что порт 3306 занят.
каков был бы лучший способ проверить, какое приложение использует этот порт и как его освободить?
5 ответов
в командной консоли выполните:
и ищем строку localhost:3306 во втором столбце. Ниже приведено имя приложения, использующего порт.
У меня была та же проблема, и я застрял на этой вещи в течение дня, и я не мог найти идеального ответа нигде. Поэтому я попробовал сам, и это сработало. Это решение предназначено для пользователей Windows. Я использую Windows 7.
моя панель управления xampp отображала ошибку, что порт 3306 занят и используется каким-то файлом (было указано имя).. сказать «filename.de».
теперь выполните следующие шаги:
просто откройте Диспетчер задач и убейте службу MySql.
У меня была эта проблема (небольшое изменение, поскольку я использовал MAMP)
Я обнаружил, что эта проблема связана с установкой MySQL Workbench, MySQL Workbench запустил службу mySQL при загрузке, которая, в свою очередь, остановила MAMP, способную использовать порт.
чтобы исправить это, у меня было 2 варианта,
Это позволило MAMP использовать порт 3306
надеюсь, что это может помочь кому-то!
в моем случае это был javaw.exe, который начинался с порта 3306. Этот exe не вызывает проблем, если я вошел в систему с помощью одного пользователя в моем Windows 10. Но если у меня есть несколько логинов, он запускает этот exe для каждого пользователя и блокирует MySQL для запуска на порту 3306.
переход к диспетчеру задач и убийство этого exe для другого пользователя Исправлена проблема, и MySQl может начаться.
Источник
Can’t start MySQL, port 3306 busy
I’m trying to start MySQL from XAMPP (under Windows Vista), but it’s saying that’s port 3306 is busy.
What would be the best way with check what application is using that port and how to free it?
12 Answers 12
Just Open task manager and Kill MySql service.
In a command shell, run:
The first command will output a list that you will need to look through for the line that displays localhost:3306 in the second column. Below this is the application’s name using the port.
The secondary command will find find the exact port you are looking for and looks something like this:
I had the same problem and was stuck on this thing for a day and I couldn’t find a perfect answer anywhere. So I gave it a shot on my own and it worked. This solution is for Windows users. I use Windows 7.
My xampp control panel was displaying an error that port 3306 is busy and in use by some file (name was specified).. say «filename.de».
Now follow the following steps:
If mysql is not starting in xampp, it might be a port conflict issue. Mysql run by default on port 3306. you need to check if another application is occupying that port. use following command to check app occupying a port
if you find an application occupying that port, stop the application and restart xampp. As an alternative, you can go to php.ini file or click configure in the xampp for mysql and change the mysql port to 3307
In my case it was javaw.exe which was starting on port 3306. This exe does not cause problem if I am logged in using single user in my Windows 10. But if I have multiple logins, it starts this exe for each user and blocks MySQL to start on 3306 port.
Going to task manager and killing this exe for the other user fixed the issue and MySQl could start.
As Mentioned By @Segun Emmanuel Run the Following Command:
You will get a list of Applications that are using different PORTS. Press Ctrl + F and write 3306 to find out which Application is using PORT 3306.
Then go to your Xampp Control Panel and start the MySQL service.
So, I went to task manager. There were no process called so. The I went to services and disabled these two:
Now everything works fine.
I had this problem (slight variation as I was using MAMP)
I found this problem was due to having MySQL Workbench installed, MySQL Workbench started the mySQL service on bootup which in turn stopped MAMP being able to use the port.
To fix this I had 2 options,
This then allowed MAMP to use port 3306
I’ve been having trouble for hours on this error. I was trying to run MySQL from XAMPP after quite some time. It gave errors, similar to yours, it said that port 3306 is in use. If you:
This is the solution that worked for me:
I ran MySQL again at now it works.
For this problem, a simpler way on Windows is:-
Disable adapters you do not use.
Pay also attention to the Hyper-V generated network adapter, disable it if you don’t need it. Sometimes it can reserve some ports and commands like netstat will not be able to find it out
This error occurs if you have installed mysql two times. mysql by default uses the port 3306. If you have installed it twice then already there is a mysql at your port number 3306. So you will have to change your port.
If you are using xampp then you can easily change your port. Steps to change port: Step 1: Open your xampp as administrator. Step 2: Click on ‘Config’ at the top right corner of your xampp. Step 3: Click on ‘Service and Port Settings’ and after that change the main port of mysql from 3306 to 3307 and the click on save. Step 4: Then click on ‘config’ which is in front of mysql and open ‘my.ini’ file which will be a text file. Step 5: Now wherever in the text file you see the port number mentioned as 3306 change it to 3307 and then save the file.
After doing this again start your mysql server and it will start running on port 3307.
This worked for me and I hope it will work for anyone else who encounters the same issue.
Источник
Не удается запустить MySQL, порт 3306 занят
Я пытаюсь запустить MySQL из XAMPP (под Windows Vista), но он говорит, что порт 3306 занят.
Как лучше всего проверить, какое приложение использует этот порт и как его освободить?
12 ответов
В командной оболочке запустите:
Первая команда выведет список, в котором вам нужно будет просмотреть строку, отображающую localhost:3306 во втором столбце. Ниже указано имя приложения, использующего порт.
Дополнительная команда найдет именно тот порт, который вы ищете, и выглядит примерно так:
Эта ошибка возникает, если вы установили mysql два раза. mysql по умолчанию использует порт 3306. Если вы установили его дважды, то на вашем порту 3306 уже есть mysql. Поэтому вам придется изменить свой порт.
Если вы используете xampp, вы можете легко изменить свой порт. Шаги по изменению порта: Шаг 1. Откройте xampp от имени администратора. Шаг 2: Нажмите «Конфигурация» в правом верхнем углу файла xampp. Шаг 3: Нажмите «Настройки службы и порта», а затем измените основной порт mysql с 3306 на 3307 и нажмите «Сохранить». Шаг 4: Затем нажмите «config», который находится перед mysql, и откройте файл «my.ini», который будет текстовым файлом. Шаг 5: Теперь везде, где в текстовом файле вы видите номер порта, указанный как 3306, измените его на 3307, а затем сохраните файл.
После этого снова запустите сервер mysql, и он начнет работать на порту 3307.
Это сработало для меня, и я надеюсь, что это сработает для всех, кто столкнется с той же проблемой.
Отключите адаптеры, которые вы не используете.
У меня уже несколько часов проблемы с этой ошибкой. Через некоторое время я пытался запустить MySQL из XAMPP. Выдал ошибки, аналогичные вашим, в нем говорилось, что используется порт 3306. Если ты:
Это решение, которое сработало для меня:
Я снова запустил MySQL, теперь он работает.
У меня была эта проблема (небольшая вариация, поскольку я использовал MAMP)
Я обнаружил, что эта проблема связана с установленным MySQL Workbench, MySQL Workbench запускает службу mySQL при загрузке, что, в свою очередь, не позволяет MAMP использовать порт.
Чтобы исправить это, у меня было 2 варианта:
Затем это позволило MAMP использовать порт 3306
Теперь все работает нормально.
Как упоминалось @Segun Emmanuel, выполните следующую команду:
Вы получите список приложений, использующих разные ПОРТЫ. Нажмите Ctrl + F и напишите 3306, чтобы узнать, какое приложение использует ПОРТ 3306.
Затем перейдите в панель управления Xampp и запустите службу MySQL.
В моем случае это был javaw.exe, который запускался на порту 3306. Этот exe не вызывает проблем, если я вошел в систему с использованием одного пользователя в моей Windows 10. Но если у меня несколько входов в систему, он запускает этот exe для каждого пользователя и блокирует MySQL запускается на порту 3306.
Переход к диспетчеру задач и удаление этого exe для другого пользователя устранили проблему, и MySQl мог запуститься.
Если mysql не запускается в xampp, это может быть проблема конфликта порта. Mysql запускается по умолчанию на порту 3306. Вам необходимо проверить, не занимает ли этот порт другое приложение. используйте следующую команду, чтобы проверить приложение, занимающее порт
Если вы обнаружите, что приложение занимает этот порт, остановите приложение и перезапустите xampp. В качестве альтернативы вы можете перейти в файл php.ini или нажать кнопку configure в xampp для mysql и изменить порт mysql на 3307
У меня была та же проблема, и я застрял в ней на день, и я нигде не мог найти идеального ответа. Так что я попробовал это самостоятельно, и это сработало. Это решение для пользователей Windows. Пользуюсь Windows 7.
Теперь выполните следующие шаги:
Просто откройте диспетчер задач и убейте службу MySql.
Источник
Профиль
Группа: Участник
Сообщений: 34
Регистрация: 8.2.2009
Репутация: нет
Всего: нет
Присоединённый файл ( Кол-во скачиваний: 105 )
MySQL_Connection_Error.JPG 35,74 Kb
Творец
Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант
Репутация: нет
Всего: 329
Цитата(Ornik @ 29.6.2009, 11:37 ) |
3306 порт то ли занят, то ли еще что-то. |
Профиль
Группа: Участник
Сообщений: 34
Регистрация: 8.2.2009
Репутация: нет
Всего: нет
Профиль
Группа: Участник
Сообщений: 34
Регистрация: 8.2.2009
Репутация: нет
Всего: нет
Исследователь
Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск
Репутация: 1
Всего: 9
Профиль
Группа: Участник
Сообщений: 34
Регистрация: 8.2.2009
Репутация: нет
Всего: нет
Цитата(Severyanin @ 3.7.2009, 10:20) |
Нет, это не доступ запрещен при использовании пароля YES, а «Доступ запрещен для пользователя [email protected] Используется ли пароль: да». То есть, либо имя пользователя неверно, либо пароль не так введен — строчные/прописные, раскладка и так далее — причин может быть много |
Пароль состоит из цифр (6 цифр) — в каждой строке один и тот же — это точно. Отключил Касперского, торрент, скайп, квип, даже проигрыватель и сам интернет отключал — все равно, ошибка та же.
Добавлено через 6 минут и 10 секунд
Вот что выдал Google переводчик:
«Настройки безопасности не могут быть применены к базе данных, так как соединение не удалось из-за ошибки.
Ошибка номер. 1045
Отказано в доступе для пользователей ‘корень’ @ ‘локальный’ (с помощью пароля: YES)
Если Personal Firewall работает на вашей машине, пожалуйста, убедитесь, что вы открыли TCP порт 3306 для соединения. В противном случае клиент не может подключиться к серверу. После того как вы открыли порт, пожалуйста, нажмите [Повтор] для применения настроек безопасности.
При повторной установке после того, как Вы только что удалили с MySQL сервером, пожалуйста, внимание на то, что данный каталог не был удален автоматически. Поэтому старый пароль от вашего последнего установки по-прежнему необходима для подключения к серверу. В этом случае, пожалуйста, выберите пропустить сейчас и повторно запустить мастер конфигурации из меню «Пуск».»
Сделал что сказано, запустил из пуска, удалил старую конфигурацию, ввел новый пароль — то же самый, все равно ошибка. Какой-то кошмар.
Профиль
Группа: Участник
Сообщений: 34
Регистрация: 8.2.2009
Репутация: нет
Всего: нет
Хахах, проблема решилась.
Решение до безобразия простое
Нужно удалить старый конфиг, а дальше см. скрин!
Это сообщение отредактировал(а) Ornik — 26.7.2009, 12:29
Присоединённый файл ( Кол-во скачиваний: 245 )
MySQL________.JPG 38,11 Kb
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 10.8.2009
Репутация: нет
Всего: нет
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 29.7.2010
Репутация: нет
Всего: нет
Добрый день!
Та же проблема.
Уже сижу второй день!
В самом конце выдается ошибка —
Если не справлюсь буду перестанавливать винду.
Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.5.2007
Репутация: нет
Всего: нет
Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.2.2011
Репутация: нет
Всего: нет
Код |
«MySQL server does not work correctly. Check whether other applications use the important port and terminate them. Moreover, check firewall settings and |
correctness the configuration files»
Я конечно попытался использовать порт 3307 всё, вроде, хорошо, но MySQL не видит сами базы
Это сообщение отредактировал(а) Hummer — 28.2.2011, 16:31
Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.2.2011
Репутация: нет
Всего: нет
Советчик
Профиль
Группа: Модератор
Сообщений: 20492
Регистрация: 8.4.2004
Где: Зеленоград
Репутация: 106
Всего: 453
О(б)суждение моих действий — в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция — Администрация форума.
Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.2.2011
Репутация: нет
Всего: нет
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.6.2011
Репутация: нет
Всего: нет
что еще можно сделать.
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.8.2011
Репутация: нет
Всего: нет
Это сообщение отредактировал(а) juriklight — 9.8.2011, 16:24
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.3.2013
Репутация: нет
Всего: нет
может кому-то поможет. переставлял Mysql, выдавало ошибку. дело в том, что информация об учетке хранится в documents and settings/all users/application data/mysql
эту папку может быть не видно, если ее попробовать найти
заходим в коммандую строку
«сd путьвапликейшндату»
далее
набираем rmdir /s mysql
все
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | MySQL | Следующая тема » |
[ Время генерации скрипта: 0.1501 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Источник
Как освободить порт 3306 windows 10
Ornik | |
Профиль Репутация: нет Здравствуйте! У меня возникла такая проблема, при конфигурировании MySQL 5.1, на последнем этапе, выводится ошибка (см. картинку). Указывает на то, что 3306 порт то ли занят, то ли еще что-то. Команда netstat -a, -o, -p не дала результатов, ни один сервис на этом порту не сидит. Зашел на онлайн сканер портов, там показало, что 3306 порт занят. В диспетчере задач при показе PID ничего не обнаружилось. Я отключил все сервисы, которые хоть как-то относятся к инету (антивирус, мессенджеры, файлокачалки и т.п.) — все равно ошибка сохранилась. Помогите пожалуйста, как этот порт очистить. Присоединённый файл ( Кол-во скачиваний: 105 ) |
|
Akella | ||
Творец Профиль Репутация: нет
|
||
Ornik | |
Профиль Репутация: нет |
|
Ornik | |
Профиль Репутация: нет |
|
Severyanin | |
Исследователь Профиль Репутация: 1 |
|
Ornik | ||
Профиль Репутация: нет
Пароль состоит из цифр (6 цифр) — в каждой строке один и тот же — это точно. Отключил Касперского, торрент, скайп, квип, даже проигрыватель и сам интернет отключал — все равно, ошибка та же. Добавлено через 6 минут и 10 секунд Сделал что сказано, запустил из пуска, удалил старую конфигурацию, ввел новый пароль — то же самый, все равно ошибка. Какой-то кошмар. |
||
Ornik | |
Профиль Репутация: нет Хахах, проблема решилась. Это сообщение отредактировал(а) Ornik — 26.7.2009, 12:29 Присоединённый файл ( Кол-во скачиваний: 245 ) |
|
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 10.8.2009
Репутация: нет
Всего: нет
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 29.7.2010
Репутация: нет
Всего: нет
Добрый день!
Та же проблема.
Уже сижу второй день!
В самом конце выдается ошибка —
Если не справлюсь буду перестанавливать винду.
Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.5.2007
Репутация: нет
Всего: нет
Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.2.2011
Репутация: нет
Всего: нет
Код |
«MySQL server does not work correctly. Check whether other applications use the important port and terminate them. Moreover, check firewall settings and |
correctness the configuration files»
Я конечно попытался использовать порт 3307 всё, вроде, хорошо, но MySQL не видит сами базы
Это сообщение отредактировал(а) Hummer — 28.2.2011, 16:31
Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.2.2011
Репутация: нет
Всего: нет
Советчик
Профиль
Группа: Модератор
Сообщений: 20492
Регистрация: 8.4.2004
Где: Зеленоград
Репутация: 106
Всего: 453
О(б)суждение моих действий — в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция — Администрация форума.
Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.2.2011
Репутация: нет
Всего: нет
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.6.2011
Репутация: нет
Всего: нет
Здравствуйте.
Все тоже самое
Винда 7. Ставлю MySql первый раз (точнее уже не сколько раз пыталась переставить, удаляя через панель управления и подчищая оставшиеся папки, старые конфиги и тд, но в первый раз было то же самое). На последнем шаге конфигурации на выполнении настроек безопасности выдает ошибку 1045. Проверила 3306 через netstat -aob, никаких процессов на порте не видно. На всякий случай через диспетчер задач поотрубала процессы по максимуму. Не помогло. Поставила прогу Port Detective (вроде так) — она говорит что порт 3306 заблокирован. Пробовала запустить мускул через другие порты — со всеми портами которые он предлагает при конфигурации (3307, 3308 и 3309 по-моему) — та же фигня, и прога port detective говорит, что и они заблокированы. На них через командную строку никаких процессов конечно тоже не видно.
что еще можно сделать.
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.8.2011
Репутация: нет
Всего: нет
скоко разговора а не кто так и не помог ) , вот вам решение у кого Windows 7 по умолчанию отключена встроенная учетная запись Administrator (Администратор), обладающая наивысшими правами. Это сделано для того, чтобы ограничить воздействие неопытных пользователей и вредоносных программ на системные процессы. Вобщем надо включить и зайти как администратор и Vertrigo будет нормально работать без всякой ошибки с портом 3306, включить очень проста ,мне заняло 5 минут,зайдите по этой силке http://www.wseven.info/administrator/ и следуйте инструкции . И неломайте себе болше голову
Это сообщение отредактировал(а) juriklight — 9.8.2011, 16:24
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.3.2013
Репутация: нет
Всего: нет
может кому-то поможет. переставлял Mysql, выдавало ошибку. дело в том, что информация об учетке хранится в documents and settings/all users/application data/mysql
эту папку может быть не видно, если ее попробовать найти
заходим в коммандую строку
«сd путьвапликейшндату»
далее
набираем rmdir /s mysql
все
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | MySQL | Следующая тема » |
[ Время генерации скрипта: 0.1501 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Чтобы открыть порт 3306 для MySQL на Windows 10, выполните следующие действия:
1. Откройте «Панель управления» и выберите «Система и безопасность».
2. Нажмите на «Дополнительные параметры системы».
3. Перейдите на вкладку «Дополнительно» и выберите «Параметры» во вкладке «Производительность».
4. Выберите вкладку «Исключения» в «Параметры безопасности».
5. Нажмите на кнопку «Добавить порт».
6. Введите имя порта «MySQL» и номер порта «3306».
7. Укажите тип порта «TCP».
8. Нажмите на кнопку «ОК» и сохраните изменения.
9. Если вы используете антивирусное программное обеспечение, добавьте соответствующее исключение для порта 3306.
Теперь порт 3306 для MySQL на Windows 10 должен быть открыт. Обратите внимание, что открытие порта может привести к угрозе безопасности, и следует быть осторожным при работе с открытыми портами. Настоятельно рекомендуется использовать парольную защиту и ограничивать доступ к базе данных только соединениями известных IP-адресов.
Кроме того, для обеспечения безопасности данных рекомендуется использовать SSL-шифрование при подключении к базе данных MySQL. Это позволит защитить передаваемые данные от прослушивания и перехвата со стороны злоумышленников.
Чтобы настроить SSL-шифрование для MySQL, необходимо сгенерировать SSL-сертификаты и ключи, а затем настроить MySQL на использование этих сертификатов при подключении. Для этого можно воспользоваться инструкцией по настройке SSL-шифрования для MySQL.
Важно отметить, что открытие порта 3306 для MySQL не является единственным шагом по настройке безопасности базы данных. Необходимо также убедиться, что пароль для доступа к базе данных достаточно сложный и надежный, а также ограничить доступ к базе данных только тем пользователям, которым это необходимо.
Кроме того, следует регулярно проверять журналы доступа к базе данных, чтобы выявлять любые попытки несанкционированного доступа или взлома системы. Если вы заметили подозрительную активность, немедленно принимайте меры по устранению уязвимостей и защите системы от потенциальных атак.
В целом, настройка безопасности базы данных MySQL является важной задачей, которая требует внимательного и профессионального подхода. Если вы не уверены в своих навыках, лучше обратиться к специалистам, которые помогут вам настроить базу данных таким образом, чтобы она была максимально защищена от возможных угроз.
Для нормальной работы программ работающих на MySql по сети, брандмауэры Windows на компьютерах клиента и сервера должны либо быть выключены, либо настроены соответствующим образом.
Ниже приведены скриншоты для настройки компьютеров сервера и клиента.
1. Настройка компьютера — сервера (компьютер на котором установлен сервер MySql и базы данных программ)
(Пример для Windows 7)
Далее необходимо создать правило для подключения других программ по сети к этому компьютеру. В нашем случае это программы которые подключаются по протоколу TCP/IP и порту 3306. Через порт 3306 у нас подключаются программы работающие с базой данных MySql.
Создаем правило для входящих подключений для подключения по протоколу TCP/IP и порту 3306.
Далее необходимо проверить включилось ли данное правило. Если правило не включилось автоматически, то его следует включить.
Настройка на стороне сервера выполнена. Теперь любой компьютер с программой на MySql будет свободно подключаться через брандмауэр.
2. Настройка брандмауэра на стороне клиента.
(Пример для Windows 10)
В результате проделанной работы мы настроили компьютер-сервер на операционной системе Windows 7, и компьютер-клиент на операционной системе Windows 10.
Аналогичные настройки можно применить, если клиент и сервер поменять местами. Суть настроек заключается в том, что на стороне сервера мы настраиваем правило, а на стороне клиента просто вносим нужную программу в список исключений для работы этой программы через брандмауэр Windows.
Статья о том, как узнать IP адрес своего компьютера находится здесь.
Ссылка на данный материал обязательна!
Подключаться к базам данных можно разными способами. Подключение, устанавливаемое с сервера, называется локальным. С помощью такого типа подключения можно работать с домашнего компьютера, при этом используя любые удобные приложения по управлению базами данных.
Я расскажу, как подключиться к удаленной базе данных MySQL, какие существуют способы, а также опишу некоторые типичные ошибки.
Подключение через панель управления TimeWeb
Чтобы подключиться удаленно к MySQL, необходимо для начала открыть сайт хостинга и авторизоваться в личном кабинете. В панели управления следует выбрать раздел «Базы данных MySQL», через него и будем проводить операции. В новом открывшемся окне находим ссылку «Добавить доступ» напротив того сервера, к которому планируется подключиться. Для разрешения доступа к подсети /24 меняем последний актет IP-адреса на знак %.
При установлении соединения используем имя сервера или его IP-адрес. Данная информация доступна на главной странице в разделе «Информация о сервере». Порт указываем 3306, имя пользователя будет тем же, что и название базы данных. Вводим пароль и устанавливаем соединение.
phpMyAdmin
phpMyAdmin – программное средство, предоставляющее веб-интерфейс для работы с сервером MySQL. Подключиться к базе можно, открыв раздел «Базы данных MySQL» в панели управления хостингом. Находим на странице ссылку «phpMyAdmin» и жмем по ней для подключения. Если она недоступна, значит, пользователем был превышен лимит доступных БД. Увеличить его можно сменой тарифа.
Входим в данный раздел, вбиваем все данные и подключаемся.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Соединение через SSH туннель
Данный тип подключения считается более безопасным, потому что все данные по SSH-туннелю передаются в зашифрованном виде, исключая возможность перехвата.
Подключение в Windows
В данной ОС соединение по SSH протоколу можно осуществить с помощью специальных программ для управления базами данных. Например, PuTTY (бесплатная программа) или SecureCRT (платное ПО, но с пробной версией на 30 дней).
Мы для работы выбрали PuTTY. Скачиваем установщик с официального сайта и устанавливаем приложение. Запускаем программу, затем переходим в раздел «Session». В поле «Host Name» вводим свой домен или указываем его IP-адрес.
Далее переходим в категорию «Connection», открываем вкладку «SSH», затем «Tunnels». В поле «Source Port» указываем значение 3306, в «Destination» вбиваем localhost:3306, потом жмем на кнопку «Add» для добавления порта в список. И только потом жмем кнопку «Open» для установления соединения с хостом.
Логин и пароль те же самые, которые используются для входа в панель управления. При подключении используем имя пользователя и пароль, выданные при создании базы данных. Адрес сервера — 127.0.0.1, порт для подключения 3306.
Предупреждаем, что если вы уже устанавливали сервер баз данных MySQL на своем компьютере, то соединение через порт 3306 будет недоступно. Надо будет указать другое значение, например 3307.
Подключение в Linux
В ОС Linux никакого дополнительного ПО устанавливать не придется, можно все провести через командную строку «Терминал». Перед тем как подключиться к MySQL удаленно, нужно создать SSH-туннель. Вводим вот такую команду:
ssh -L3306:localhost:3306 -n логин@site.com
Потом в конфигурационном файле MySQL потребуется изменить параметр, отвечающий за удаленное подключение. Открываем в «Терминале» файл, дав вот такую команду:
sudo nano /etc/mysql/my.cnf
Далее комментируем нужную нам строку. В итоге она должна выглядеть вот таким образом:
# bind-address = 127.0.0.1
Сохраняем изменения, потом перезапускаем MySQL вот такой командой:
sudo service mysql restart
Далее будет запрошен пароль для входа в панель управления хостингом, вводим его. Для подключения к удаленному серверу MySQL необходимо создать пользователя, и делается это вот такой командой:
GRANT ALL ON *.* TO имя_пользователя@127.0.0.1 IDENTIFIED BY 'пароль'
Так мы создадим пользователя с неограниченным доступом ко всем базам на указанном сервере. Потом проверяем подключение утилитой telnet. Если сервер запрос не отклонил, значит, пора приступать к подключению. Для этого можно задать команды вот таких типов:
mysql -u имя_пользователя –h 127.0.0.1 –p mysql -h наименование_хоста -u dbUser -p dbName
Как проверить соединение с базой данных MySQL
Для проверки подключения к базе данных MySQL во всех ОС используем утилиту telnet. Нужно просто открыть командную строку и набрать в ней вот такую команду:
telnet 127.0.0.1 3306
Если соединение установится, то настройка туннеля прошла успешно, можно приступать к подключению. Если нет, рекомендуем тщательно проверить все настройки.
Читайте также
Как подключиться к MySQL удаленно, если возникают какие-то ошибки? Трудности обычно возникают при наличии запрещающих правил. Проверить, существуют ли такие, можно вот таким запросом:
iptables-save
Если таковые обнаружатся, добавим разрешающее правило. Для этого надо ввести соответствующую команду, она должна выглядеть примерно вот так:
/sbin/iptables -A INPUT -i eth0 -p tcp —destination-port 3306 -j ACCEPT
Если при подключении возникает ошибка «Can’t connect to Mysql Server on ‘IP_адрес'(10061)», соединение заблокировал брандмауэр, firewall, outpost, антивирус и прочие программы. Для UFW, инструмента брандмауэра в Ubuntu, можно задать вот такую команду, разрешающую доступ с любого IP-адреса:
sudo ufw allow 3306/tcp
Есть еще возможность открыть доступ для определенного IP-адреса, и это куда более безопасный способ. Для этого потребуется ввести такой запрос:
sudo ufw allow from IP_адрес to any port 3306
Если же появляется ошибка типа «Client does not support autentification protocol request by server; consider upgrading MySQL client», это значит, что установленный клиент не поддерживает требуемый сервером протокол.
Эту ошибку можно исправить, установив пароль старого формата:
SET PASSWORD FOR user@host = OLD_PASSWORD('password')
Если при проверке выходит ошибка формата «ERROR 2003 (HY000): Can’t connect to MySQL server», это значит, что порт 3306 не открыт. Либо сервер MySQL не прослушивает указанный IP-адрес.
В случае, когда выходит сообщение «ERROR 1130 (HY000): Host ‘10.8.0.5’ is not allowed to connect to this MySQL server», указывается отсутствие прав доступа к удаленному серверу у пользователя.
Ошибка «1045 невозможно подключиться к серверу MySQL» возникает при попытке подключиться удаленно к базам данных через phpMyAdmin. Причиной тому может быть неправильно введенный логин или же отсутствие пароля у пользователя или его неправильная смена.
Заключение
MySQL – один из самых популярных серверов баз данных с открытым исходным кодом. Подключиться к нему можно разными способами, причем как локально, так и удаленно. Если в процессе соединения возникают нетипичные ошибки, рекомендуем связаться со службой технической поддержки.
Если вы работаете с База данных MySQL , значит, вы уже знаете о проблемах, с которыми вы сталкиваетесь при обеспечении безопасности своей базы данных. От попыток взлома базы данных с использованием SQL-инъекций до атак грубой силы-сложно обеспечить безопасность ваших данных, особенно если вы работаете с базой данных удаленно.
Есть способы настроить SQL-сервер для разрешения удаленных подключений. , но вам нужно быть осторожным, поскольку разрешение удаленных подключений к серверу MySQL может сделать вашу базу данных легкой мишенью для хакеров. Если вы хотите разрешить безопасные удаленные подключения к базе данных MySQL, вот что вам нужно знать.
Содержание
Перед тем, как начать
Прежде чем вносить какие-либо изменения в базу данных MySQL, важно, чтобы вы резервное копирование базы данных , особенно если вы работаете на производственном сервере (активно используемом сервере). Любые изменения, которые вы вносите в свою базу данных или сервер, на котором она размещена, могут привести к серьезной потере данных, если что-то пойдет не так.
Вы также можете обнаружить, что изменения в соединениях вашего сервера могут помешать вам получить к нему доступ впоследствии. В этом случае вам может потребоваться проконсультироваться с администратором сервера для получения дополнительной поддержки. Хорошая идея-протестировать любые изменения на локальном сервере MySQL, чтобы проверить, работают ли ваши изменения, прежде чем пробовать их удаленно.
Также вероятно, что если вы вносите изменения на удаленный сервер, вы: Вам понадобится безопасный способ подключения и внесения изменений. SSH (Secure Shell) часто является лучшим способом сделать это, поскольку он позволяет подключаться к удаленному серверу. Вы также можете использовать SSH для подключения к серверам в вашей локальной сети, таким как размещено на Raspberry Pi .
Это руководство проведет вас через шаги по настройке MySQL для разрешения удаленных подключений, но вам необходимо сначала убедиться, что у вас есть прямой или удаленный доступ к серверу, на котором размещен ваш сервер MySQL.
Предположим, у вас нет удаленного доступа к вашему серверу через SSH (например). В этом случае вы не сможете настроить свою базу данных MySQL для разрешения удаленных подключений напрямую, если только ваша учетная запись root 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 , позволяющая восстановить данные в экстренной ситуации.
Для нормальной работы программ работающих на MySql по сети, брандмауэры Windows на компьютерах клиента и сервера должны либо быть выключены, либо настроены соответствующим образом.
Ниже приведены скриншоты для настройки компьютеров сервера и клиента.
1. Настройка компьютера — сервера (компьютер на котором установлен сервер MySql и базы данных программ)
(Пример для Windows 7)
Далее необходимо создать правило для подключения других программ по сети к этому компьютеру. В нашем случае это программы которые подключаются по протоколу TCP/IP и порту 3306. Через порт 3306 у нас подключаются программы работающие с базой данных MySql.
Создаем правило для входящих подключений для подключения по протоколу TCP/IP и порту 3306.
Далее необходимо проверить включилось ли данное правило. Если правило не включилось автоматически, то его следует включить.
Настройка на стороне сервера выполнена. Теперь любой компьютер с программой на MySql будет свободно подключаться через брандмауэр.
2. Настройка брандмауэра на стороне клиента.
(Пример для Windows 10)
В результате проделанной работы мы настроили компьютер-сервер на операционной системе Windows 7, и компьютер-клиент на операционной системе Windows 10.
Аналогичные настройки можно применить, если клиент и сервер поменять местами. Суть настроек заключается в том, что на стороне сервера мы настраиваем правило, а на стороне клиента просто вносим нужную программу в список исключений для работы этой программы через брандмауэр Windows.
Статья о том, как узнать IP адрес своего компьютера находится здесь.
Ссылка на данный материал обязательна!
Introduction
It is not uncommon to host databases and web servers on the same local machine. However, many organizations are now moving to a more distributed environment.
A separate database server can improve security, hardware performance, and enable you to scale resources quickly. In such use cases, learning how to manage remote resources effectively is a priority.
This tutorial shows you how to enable remote connections to a MySQL database.
Prerequisites
- Access to a terminal window/command line
- Remote MySQL server
- Sudo or root privileges on local and remote machines
Note: If you do not have direct access to your MySQL server, you need to establish a secure SSH connection. In case you need assistance, we have prepared a comprehensive tutorial on how to use SSH to connect to a remote server. This article a must-read for anyone new to the process.
MySQL Server Remote Connection
Allowing connections to a remote MySQL server is set up in 3 steps:
1. Edit MySQL config file.
2. Configure firewall.
3. Connect to remote MySQL server.
Step 1: Edit MySQL Config File
1.1 Access mysqld.cnf File
Use your preferred text editor to open the mysqld.cnf file. This example uses the nano text editor in Ubuntu 18.04. Enter the following command in your command-line interface to access the MySQL server configuration file:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
The location of the file may vary based on the distribution and version in use. If the MySQL configuration file is not it its default location try using the Linux find
command to detect it.
1.2 Change Bind-Address IP
You now have access to the MySQL server configuration file. Scroll down to the bind-address line and change the IP address. The current default IP is set to 127.0.0.1. This IP limits MySQL connections to the local machine.
The new IP should match the address of the machine that needs to access the MySQL server remotely. For example, if you bind MySQL to 0.0.0.0, then any machine that reaches the MySQL server can also connect with it.
Once you make the necessary changes, save and exit the configuration file.
Note: Remote access is additionally verified by using the correct credentials and user parameters you have defined for your MySQL users.
1.3 Restart MySQL Service
Apply the changes made to the MySQL config file by restarting the MySQL service:
sudo systemctl restart mysql
Next, your current firewall settings need to be adjusted to allow traffic to the default MySQL port.
Step 2: Set up Firewall to Allow Remote MySQL Connection
While editing the configuration file, you probably observed that the default MySQL port is 3306.
If you have already configured a firewall on your MySQL server, you need to open traffic for this specific port. Follow the instructions below that correspond to your firewall service in use.
Option 1: UFW (Uncomplicated Firewall)
UFW is the default firewall tool in Ubuntu. In a terminal window, type the following command to allow traffic and match the IP and port:
sudo ufw allow from remote_ip_address to any port 3306
The system confirms that the rules were successfully updated.
Option 2: FirewallD
The firewalld management tool in CentOS uses zones to dictate what traffic is to be allowed.
Create a new zone to set the rules for the MySQL server traffic. The name of the zone in our example is mysqlrule, and we used the IP address from our previous example 133.155.44.103:
sudo firewall-cmd --new-zone=mysqlrule --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlrule --add-source=133.155.44.103
sudo firewall-cmd --permanent --zone=mysqlrule --add-port=3306/tcp
sudo firewall-cmd --reload
You have successfully opened port 3306 on your firewall.
Option 3: Open Port 3306 with iptables
The iptables utility is available on most Linux distributions by default. Type the following command to open MySQL port 3306 to unrestricted traffic:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
To limit access to a specific IP address, use the following command instead:
sudo iptables -A INPUT -p tcp -s 133.155.44.103 --dport 3306 -j ACCEPT
This command grants access to 133.155.44.103. You would need to substitute it with the IP for your remote connection.
It is necessary to save the changes made to the iptables rules. In an Ubuntu-based distribution type the following commands:
sudo netfilter-persistent save
sudo netfilter-persistent reload
Note: If the previous commands do not work, try installing the program with:
sudo apt-get install iptables-persistent
Type the ensuing command to save the new iptables rules in CentOS:
service iptables save
Step 3: Connect to Remote MySQL Server
Your remote server is now ready to accept connections. Use the following command to establish a connection with your remote MySQL server:
mysql -u username -h mysql_server_ip -p
The -u username
in the command represents your MySQL username. The -h mysql_server_ip
is the IP or the hostname of your MySQL server. The -p
option prompts you to enter the password for the MySQL username.
You should see an output similar to the one below:
Connection to mysql_server_ip 3306 port [tcp/mysql] succeeded!
How to Grant Remote Access to New MySQL Database?
If you do not have any databases yet, you can easily create a database by typing the following command in your MySQL shell:
CREATE DATABASE 'yourDB';
To grant remote user access to a specific database:
GRANT ALL PRIVILEGES ON yourDB.* TO [email protected]'133.155.44.103' IDENTIFIED BY 'password1';
The name of the database, the username, remote IP, and password need to match the information you want to use for the remote connection.
How to Grant Remote Access to Existing MySQL Database
Granting remote access to a user for an existing database requires a set of two commands:
update db set Host='133.155.44.103' where Db='yourDB';
update user set Host='133.155.44.103' where user='user1';
User1 is now able to access yourDB from a remote location identified by the IP 133.155.44.103.
Conclusion
In this article, you have gained valuable insight into the general principles of a remote MySQL connection.
With the appropriate credentials, a user originating from the specified IP address can now access your MySQL server from a remote machine.
I’m trying to start MySQL from XAMPP (under Windows Vista), but it’s saying that’s port 3306 is busy.
What would be the best way with check what application is using that port and how to free it?
Dharman♦
29.7k21 gold badges82 silver badges131 bronze badges
asked May 26, 2011 at 9:27
4
Just Open task manager and Kill MySql service.
answered Nov 25, 2014 at 14:36
asasasas
1811 silver badge2 bronze badges
In a command shell, run:
netstat -b -p TCP
or
netstat -an | grep -i listen | grep -E 3306
The first command will output a list that you will need to look through for the line that displays localhost:3306
in the second column. Below this is the application’s name using the port.
The secondary command will find find the exact port you are looking for and looks something like this:
<example-name>:user <example-name>$ netstat -an | grep -i listen | grep -E 3306
tcp46 0 0 *.3306 *.* LISTEN
hanorine
7,0043 gold badges13 silver badges18 bronze badges
answered May 26, 2011 at 9:33
Linus KleenLinus Kleen
33.6k11 gold badges90 silver badges99 bronze badges
2
I had the same problem and was stuck on this thing for a day and I couldn’t find a perfect answer anywhere.
So I gave it a shot on my own and it worked. This solution is for Windows users. I use Windows 7.
My xampp control panel was displaying an error that port 3306 is busy and in use by some file (name was specified).. say «filename.de».
Now follow the following steps:
- press Ctrl+Alt+Del and open Task Manager.
- Open the «Processes» list and Check for «show all processes» under the list of processes. If you don’t see any such option, don’t worry! as sometimes administrator permission is required to show some processes.
- Now, when you click on «show all processes» button, all the process will be displayed.
- Now, switch to «services» tab in the task manager, and a list of services will be displayed. Now look for a service named «filename.de» <— filename that was diplayed in the error message in xampp.
- When you find that service, ‘right-click’, and then click in option.. GoTo Process.
- You will be redirected to the «Processes» tab with focus on a process corresponding to that service. ‘Right-Click’ and then click on «end process tree».
- Now, the issue has been solved! But might have to do the same thing again when you restart your PC. So it is best to keep your PC in sleep-mode.
- Otherwise, to solve this issue permanently, open «msconfig» and uncheck that particular process from the services list and click on apply. and you can restart your system.
Nev
1,51922 silver badges18 bronze badges
answered Aug 18, 2013 at 19:09
PrabhatPrabhat
811 silver badge6 bronze badges
0
I’ve been having trouble for hours on this error. I was trying to run MySQL from XAMPP after quite some time. It gave errors, similar to yours, it said that port 3306 is in use. If you:
- are running on Windows 10
- are avoiding to change the port number of MySQL from 3306
- can’t see any program using the 3306 port from
netstat
- reinstalling and deleting everything yet it still give the same error
- are enabling and using Hyper-V
- all of the other solutions didn’t work
This is the solution that worked for me:
- Go to the most right of the taskbar and right-click the connection icon, click
Open Network & Internet settings
- Click
Change adapter options
- Right-click and Disable everything that relates to Hyper-V
I ran MySQL again at now it works.
answered Jan 11, 2021 at 12:36
rareguyrareguy
611 silver badge5 bronze badges
2
As Mentioned By @Segun Emmanuel Run the Following Command:
netstat -a -b
You will get a list of Applications that are using different PORTS. Press Ctrl + F
and write 3306 to find out which Application is using PORT 3306.
After this, Go to Task Manager via Search Bar or by pressing CTRL + ALT + DEL
. Then Under the Background Processes, find out mysqld.exe
, right-click on it and you will find an option to close it, namely «End Task
«.
Then go to your Xampp Control Panel and start the MySQL service.
answered Mar 28, 2020 at 6:19
Kashif IftikharKashif Iftikhar
2731 gold badge9 silver badges27 bronze badges
1
If mysql is not starting in xampp, it might be a port conflict issue. Mysql run by default on port 3306. you need to check if another application is occupying that port. use following command to check app occupying a port
Linux: netstat -tulpn | grep 3306
Window: netstat -a -b
Mac: lsof -nP -i4TCP:3306
if you find an application occupying that port, stop the application and restart xampp. As an alternative, you can go to php.ini file or click configure in the xampp for mysql and change the mysql port to 3307
answered Mar 9, 2019 at 12:35
ABODEABODE
8982 gold badges15 silver badges12 bronze badges
In my case it was javaw.exe which was starting on port 3306. This exe does not cause problem if I am logged in using single user in my Windows 10. But if I have multiple logins, it starts this exe for each user and blocks MySQL to start on 3306 port.
Going to task manager and killing this exe for the other user fixed the issue and MySQl could start.
answered Aug 18, 2017 at 11:29
Windows icon -> Open cmd.exe.
Type netstat -a -b
.
Find what’s using it. In my case it was this:
So, I went to task manager. There were no process called so. The I went to services and disabled these two:
Now everything works fine.
Azametzin
5,09312 gold badges29 silver badges43 bronze badges
answered Apr 14, 2020 at 13:20
I had this problem (slight variation as I was using MAMP)
I found this problem was due to having MySQL Workbench installed, MySQL Workbench started the mySQL service on bootup which in turn stopped MAMP being able to use the port.
To fix this I had 2 options,
- Uninstall MySQL Workbench
- Open Task, click services tab, kill the current MySQL service
This then allowed MAMP to use port 3306
Dharman♦
29.7k21 gold badges82 silver badges131 bronze badges
answered May 10, 2016 at 13:36
AndrewBramwellAndrewBramwell
4941 gold badge7 silver badges26 bronze badges
This error occurs if you have installed mysql two times. mysql by default uses the port 3306. If you have installed it twice then already there is a mysql at your port number 3306. So you will have to change your port.
If you are using xampp then you can easily change your port. Steps to change port:
Step 1: Open your xampp as administrator.
Step 2: Click on ‘Config’ at the top right corner of your xampp.
Step 3: Click on ‘Service and Port Settings’ and after that change the main port of mysql from 3306 to 3307 and the click on save.
Step 4: Then click on ‘config’ which is in front of mysql and open ‘my.ini’ file which will be a text file.
Step 5: Now wherever in the text file you see the port number mentioned as 3306 change it to 3307 and then save the file.
After doing this again start your mysql server and it will start running on port 3307.
This worked for me and I hope it will work for anyone else who encounters the same issue.
answered May 8, 2021 at 12:08
This command kills the existing mysql process and perhaps one can start it afresh
sudo pkill mysql
It has helped me solve this challenge most of times
1. Turn off the application which is using this port, open terminal and run "lsof -n -P -i | grep 3306" to figure out.
2. Use different ports, right click on the server -> Edit.
answered Apr 19, 2022 at 17:53
For this problem, a simpler way on Windows is:-
- Go to Task Manager
- Go to Services
- There will be a services named MySQl80 right click on it and then select
«Stop» - Try and start the MySQl module on XAMPP server again
answered Jul 19, 2019 at 7:22
If you where not able to find any application or process listening on port 3306
, you might need to check your network adapters.
-
Disable adapters you do not use.
-
Pay also attention to the Hyper-V generated network adapter, disable it if you don’t need it. Sometimes it can reserve some ports and commands like
netstat
will not be able to find it out
Dharman♦
29.7k21 gold badges82 silver badges131 bronze badges
answered Sep 18, 2020 at 12:47
WilliemWilliem
1,1211 gold badge11 silver badges19 bronze badges
- Run XAMPP with Administrator
- If you already installed MySQL Service, Uninstall it and install again. If you not already install it install MySQL Service.
answered Feb 18 at 16:33
Contents
- Finding the Defaults File
- Editing the Defaults File
- Granting User Connections From Remote Hosts
- Port 3306 is Configured in Firewall
- Caveats
Some MariaDB packages bind MariaDB to 127.0.0.1 (the loopback IP address) by default
as a security measure using the bind-address configuration directive. Old MySQL packages sometimes disabled TCP/IP networking altogether using the skip-networking directive. Before going in to how to configure these, let’s
explain what each of them actually does:
- skip-networking is fairly simple. It just tells MariaDB to run without any of the TCP/IP networking options.
- bind-address requires a little bit of background information. A given
server usually has at least two networking interfaces (although this is not
required) and can easily have more. The two most common are a Loopback
network device and a physical Network Interface Card (NIC) which allows
you to communicate with the network. MariaDB is bound to the loopback
interface by default because it makes it impossible to connect to the TCP
port on the server from a remote host (the bind-address must refer to a local
IP address, or you will receive a fatal error and MariaDB will not start).
This of course is not desirable if you want to use the TCP port from a remote
host, so you must remove this bind-address directive (MariaDB only supports
one bind-address, but binds to 0.0.0.0, or :: (every IP) if the bind-address
directive is left out).
If bind-address is bound to 127.0.0.1 (localhost), one can’t connect to the MariaDB server from other hosts or from the same host over TCP/IP on a different interface than the loopback (127.0.0.1). This for example will not work (connecting with a hostname that points to a local IP of the host):
(/my/maria-10.4) ./client/mysql --host=myhost --protocol=tcp --port=3306 test ERROR 2002 (HY000): Can't connect to MySQL server on 'myhost' (115) (/my/maria-10.4) telnet myhost 3306 Trying 192.168.0.11... telnet: connect to address 192.168.0.11: Connection refused
Using ‘localhost’ works when binding with bind_address
:
(my/maria-10.4) ./client/mysql --host=localhost --protocol=tcp --port=3306 test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MariaDB monitor. Commands end with ; or g. ...
Finding the Defaults File
To enable MariaDB to listen to remote connections, you need to edit your defaults
file. See Configuring MariaDB with my.cnf for more detail.
Common locations for defaults files:
* /etc/my.cnf (*nix/BSD) * $MYSQL_HOME/my.cnf (*nix/BSD) *Most Notably /etc/mysql/my.cnf * SYSCONFDIR/my.cnf (*nix/BSD) * DATADIRmy.ini (Windows)
You can see which defaults files are read and in which order by executing:
shell> mysqld --help --verbose ./sql/mysqld Ver 10.4.2-MariaDB-valgrind-max-debug for Linux on x86_64 (Source distribution) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Starts the MariaDB database server. Usage: ./sql/mysqld [OPTIONS] Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
The last line shows which defaults files are read.
Editing the Defaults File
Once you have located the defaults file, use a text editor to open the file and
try to find lines like this under the [mysqld] section:
[mysqld] ... skip-networking ... bind-address = <some ip-address> ...
(The lines may not be in this order, and the order doesn’t matter.)
If you are able to locate these lines, make sure they are both commented out
(prefaced with hash (#) characters), so that they look like this:
[mysqld] ... #skip-networking ... #bind-address = <some ip-address> ...
(Again, the order of these lines don’t matter)
Alternatively, just add the following lines at the end of your .my.cnf (notice that the file name starts with a dot) file in your home directory or alternative last in your /etc/my.cnf file.
[mysqld] skip-networking=0 skip-bind-address
This works as one can have any number of mysqld sections.
Save the file and restart the mysqld daemon or service (see Starting and Stopping MariaDB).
You can check the options mysqld is using by executing:
shell> ./sql/mysqld --print-defaults ./sql/mysqld would have been started with the following arguments: --bind-address=127.0.0.1 --innodb_file_per_table=ON --server-id=1 --skip-bind-address ...
It doesn’t matter if you have the original —bind-address left as the later —skip-bind-address will overwrite it.
Granting User Connections From Remote Hosts
Now that your MariaDB server installation is setup to accept connections from
remote hosts, we have to add a user that is allowed to connect from something
other than ‘localhost’ (Users in MariaDB are defined as ‘user’@’host’, so
‘chadmaynard’@’localhost’ and ‘chadmaynard’@’1.1.1.1’ (or
‘chadmaynard’@’server.domain.local’) are different users that can have
completely different permissions and/or passwords.
To create a new user:
- log into the mysql command line client (or your favorite graphical client if you wish)
Welcome to the MariaDB monitor. Commands end with ; or g. Your MariaDB connection id is 36 Server version: 5.5.28-MariaDB-mariadb1~lucid mariadb.org binary distribution Copyright (c) 2000, 2012, Oracle, Monty Program Ab and others. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. MariaDB [(none)]>
- if you are interested in viewing any existing remote users, issue the following SQL statement on the mysql.user table:
SELECT User, Host FROM mysql.user WHERE Host <> 'localhost'; +--------+-----------+ | User | Host | +--------+-----------+ | daniel | % | | root | 127.0.0.1 | | root | ::1 | | root | gandalf | +--------+-----------+ 4 rows in set (0.00 sec)
(If you have a fresh install, it is normal for no rows to be returned)
Now you have some decisions to make. At the heart of every grant statement you have these things:
- list of allowed privileges
- what database/tables these privileges apply to
- username
- host this user can connect from
- and optionally a password
It is common for people to want to create a «root» user that can connect from anywhere, so as an example, we’ll do just that, but to improve on it we’ll create
a root user that can connect from anywhere on my local area network (LAN), which
has addresses in the subnet 192.168.100.0/24. This is an improvement because
opening a MariaDB server up to the Internet and granting access to all
hosts is bad practice.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
(% is a wildcard)
For more information about how to use GRANT, please see the GRANT
page.
At this point we have accomplished our goal and we have a user ‘root’ that can
connect from anywhere on the 192.168.100.0/24 LAN.
Port 3306 is Configured in Firewall
One more point to consider whether the firwall is configured to allow incoming request from remote clients:
On RHEL and CentOS 7, it may be necessary to configure the firewall to allow TCP access to MySQL from remote hosts. To do so, execute both of these commands:
firewall-cmd --add-port=3306/tcp firewall-cmd --permanent --add-port=3306/tcp
Caveats
- If your system is running a software firewall (or behind a hardware firewall
or NAT) you must allow connections destined to TCP port that MariaDB runs on (by
default and almost always 3306). - To undo this change and not allow remote access anymore, simply remove the
skip-bind-address
line or uncomment the bind-address line in your defaults file. The end result should be that you should have in the output from./sql/mysqld --print-defaults
the option--bind-address=127.0.0.1
and no--skip-bind-address
.
По умолчанию сервер MySQL прослушивает соединения только с localhost, что означает, что к нему могут получить доступ только приложения, работающие на том же хосте.
Однако в некоторых ситуациях необходимо получить доступ к серверу MySQL из удаленного места. Например, если вы хотите подключиться к удаленному серверу MySQL из вашей локальной системы, или при использовании многосерверного развертывания, когда приложение выполняется на другом компьютере, чем сервер базы данных. Один из вариантов — получить доступ к серверу MySQL через туннель SSH, а другой — настроить сервер MySQL на прием удаленных подключений.
В этом руководстве мы рассмотрим шаги, необходимые для разрешения удаленных подключений к серверу MySQL. Те же инструкции применимы и для MariaDB.
Настройка сервера MySQL
Первый шаг — настроить сервер MySQL на прослушивание определенного IP-адреса или всех IP-адресов на машине.
Если сервер MySQL и клиенты могут связываться друг с другом через частную сеть, то лучшим вариантом будет настроить сервер MySQL на прослушивание только частного IP-адреса. В противном случае, если вы хотите подключиться к серверу через общедоступную сеть, настройте сервер MySQL на прослушивание всех IP-адресов на машине.
Для этого вам необходимо отредактировать файл конфигурации MySQL и добавить или изменить значение параметра bind-address
. Вы можете установить один IP-адрес и диапазоны IP-адресов. Если адрес 0.0.0.0
, сервер MySQL принимает соединения на всех интерфейсах хоста IPv4. Если в вашей системе настроен IPv6, то вместо 0.0.0.0
используйте ::
.
Расположение файла конфигурации MySQL отличается в зависимости от дистрибутива. В Ubuntu и Debian файл находится по адресу /etc/mysql/mysql.conf.d/mysqld.cnf
, а в дистрибутивах на основе Red Hat, таких как CentOS, файл находится по адресу /etc/my.cnf
.
Откройте файл в текстовом редакторе :
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Найдите строку, которая начинается с bind-address
и установите ее значение равным IP-адресу, который сервер MySQL должен прослушивать.
По умолчанию установлено значение 127.0.0.1
(прослушивается только на localhost).
В этом примере мы настроим сервер MySQL для прослушивания всех интерфейсов IPv4, изменив значение на 0.0.0.0
mysqld.cnf
bind-address = 0.0.0.0
# skip-networking
Если есть строка, содержащая skip-networking
, удалите ее или закомментируйте, добавив #
в начале строки.
В MySQL 8.0 и выше директива bind-address
может отсутствовать. В этом случае добавьте его в раздел [mysqld]
.
После этого перезапустите службу MySQL, чтобы изменения вступили в силу. Только root или пользователи с привилегиями sudo могут перезапускать службы.
Чтобы перезапустить службу MySQL в Debian или Ubuntu, введите:
sudo systemctl restart mysql
В дистрибутивах на основе RedHat, таких как CentOS, для перезапуска службы выполните:
sudo systemctl restart mysqld
Предоставление доступа пользователю с удаленного компьютера
Следующим шагом будет разрешение доступа к базе данных удаленному пользователю.
Войдите на сервер MySQL как пользователь root, набрав:
sudo mysql
Если вы используете старый собственный плагин аутентификации MySQL для входа в систему как root, выполните приведенную ниже команду и введите пароль при появлении запроса:
mysql -uroot -p
Изнутри оболочки MySQL используйте оператор GRANT
чтобы предоставить доступ удаленному пользователю.
GRANT ALL ON database_name.* TO [email protected]'ip_address' IDENTIFIED BY 'user_password';
Где:
database_name
— это имя базы данных, к которой будет подключаться пользователь.-
user_name
— это имя пользователя MySQL. -
ip_address
— это IP-адрес, с которого пользователь будет подключаться. Используйте%
чтобы разрешить пользователю подключаться с любого IP-адреса. -
user_password
— пароль пользователя.
Например, чтобы предоставить доступ к базе данных dbname
пользователю с именем foo
с паролем my_passwd
с клиентского компьютера с IP 10.8.0.5
, вы должны запустить:
GRANT ALL ON dbname.* TO [email protected]'10.8.0.5' IDENTIFIED BY 'my_passwd';
Настройка межсетевого экрана
Последний шаг — настроить брандмауэр, чтобы разрешить трафик на порт 3306
(порт по умолчанию MySQL) с удаленных машин.
Iptables
Если вы используете iptables в качестве брандмауэра, приведенная ниже команда разрешит доступ с любого IP-адреса в Интернете к порту MySQL. Это очень небезопасно.
sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
Разрешить доступ с определенного IP-адреса:
sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW
UFW — это брандмауэр по умолчанию в Ubuntu. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), запустите:
sudo ufw allow 3306/tcp
Разрешить доступ с определенного IP-адреса:
sudo ufw allow from 10.8.0.5 to any port 3306
БрандмауэрD
FirewallD — это инструмент управления брандмауэром по умолчанию в CentOS. Чтобы разрешить доступ с любого IP-адреса в Интернете (очень небезопасно), введите:
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
Чтобы разрешить доступ с определенного IP-адреса через определенный порт, вы можете создать новую зону FirewallD или использовать расширенное правило. Итак, создайте новую зону с именем mysqlzone
:
sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32
sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
sudo firewall-cmd --reload
Проверка изменений
Чтобы убедиться, что удаленный пользователь может подключиться к серверу MySQL, выполните следующую команду:
mysql -u user_name -h mysql_server_ip -p
Где user_name
— это имя пользователя, mysql_server_ip
вы предоставили доступ, а mysql_server_ip
— это IP-адрес хоста, на котором работает сервер MySQL.
Если все настроено правильно, вы сможете войти на удаленный сервер MySQL.
Если вы получаете сообщение об ошибке, подобное приведенному ниже, то либо порт 3306 не открыт , либо сервер MySQL не прослушивает IP-адрес .
ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"
Приведенная ниже ошибка указывает на то, что пользователь, которого вы пытаетесь войти в систему, не имеет разрешений на доступ к удаленному серверу MySQL.
"ERROR 1130 (HY000): Host ‘10.8.0.5’ is not allowed to connect to this MySQL server"
Выводы
MySQL, самый популярный сервер баз данных с открытым исходным кодом по умолчанию, прослушивает входящие соединения только на localhost.
Чтобы разрешить удаленные подключения к серверу MySQL, вам необходимо выполнить следующие шаги:
- Настройте сервер MySQL для прослушивания всего или определенного интерфейса.
- Разрешите доступ удаленному пользователю.
- Откройте порт MySQL в вашем брандмауэре.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.