Порт 3306 продолжает закрываться, нет доступа к mysql

Безопасное подключение через SSH-туннель

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

Подключение к БД MySQL с компьютера под управлением ОС MS Windows

Настройка SSH-туннеля

Установите на ваш компьютер программу putty. Это бесплатное программное обеспечение, скачать ее можно на официальном сайте.

В категории настроек «Session» в поле «Имя хоста» (Host Name) укажите домен вашего сайта.

Перейдите в категорию настроек Connection → SSH → Tunnels и в поле «Source port» укажите значение 3306, в поле «Destination» — localhost:3306.

После этого нажмите кнопку «Add».

После этого нажмите кнопку «Open». Установится соединение с вашим хостом.

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

Туннель установлен. Для соединения с базой данных используйте имя пользователя и пароль, заданные вами при создании базы данных в разделе Панели управления «Базы данных». В качестве адреса сервера используйте 127.0.0.1, порт для подключения 3306.

Пример подключения с помощью программы mysql (пароль будет запрошен при подключении):

mysql -P 3306 -h 127.0.0.1 -u mylogin_user -p mylogin_db

Внимание: если на вашем компьютере уже работает сервер баз данных MySQL, подключение удаленному серверу по порту 3306 будет невозможно. В этом случае при создании подключения в putty укажите другой порт в качестве «Source port», например, 3307

Используйте этот порт при подключении к базе данных.

Подключение к БД MySQL с компьютера под управлением ОС Linux

В командной строке выполните следующую команду:

ssh -L3306:localhost:3306 -n yourlogin@yourdomain.ru

  • 3306 (сразу после ключа -L) — порт на локальном компьютере, к которому вы сможете подключаться клиентом mysql;
  • yourlogin — имя вашего аккаунта (логин в Панели управления);
  • yourdomain.ru — имя вашего сайта.

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

Туннель установлен. Для соединения с базой данных используйте имя пользователя и пароль, заданные вами при создании базы данных в разделе Панели управления «Базы данных». В качестве адреса сервера используйте 127.0.0.1, порт для подключения 3306.

Пример подключения с помощью программы mysql (пароль будет запрошен при подключении):

mysql -P 3306 -h 127.0.0.1 -u mylogin_user -p mylogin_db

Внимание: если на вашем компьютере уже работает сервер баз данных MySQL, подключение удаленному серверу по порту 3306 будет невозможно. В этом случае при запуске ssh сразу после ключа -L укажите альтернативный порт, например, 3307

Используйте этот порт при подключении к базе данных.

Проверка соединения с БД MySQL

Проверить соединение с БД можно посредством утилиты telnet. Войдите в интерфейс командной строки (в ОС MS Windows: Пуск → Выполнить → cmd.exe), наберите команду:

telnet 127.0.0.1 3306

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

Главное меню » Базы данных » База данных MySQL » Как разрешить удаленные подключения к серверу базы данных MySQL

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

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

Установка MariaDB

  • в Debian 9;
  • в Ubuntu 18.04;
  • в Ubuntu 16.04;
  • в CentOS 7.

Установка в Debian 9

Произведем базовую установку MariaDB 10.3, рекомендованную поставщиком для Debian 9 Stretch:

sudo apt-get install -y software-properties-common dirmngr
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb  http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.3/debian stretch main'

sudo apt update
sudo apt install -y mariadb-server

Проверьте корректность установки, соединившись с MariaDB с помощью клиента командной строки:

mysql -uroot -e 'SELECT version();'

+---------------------------------------------+
| version()                                   |
+---------------------------------------------+
| 10.3.13-MariaDB-1:10.3.13+maria~stretch-log |
+---------------------------------------------+

Соединение работает, если вы получили вывод похожий на приведенный выше. Теперь, когда установка MariaDB завершена, можно к настройке кластера.

Установка в Ubuntu 18.04

Произведем базовую установку MariaDB 10.3, рекомендованную поставщиком для Ubuntu Linux 18.04:

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb  http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.3/ubuntu bionic main'

sudo apt update
sudo apt install -y mariadb-server

Проверьте корректность установки, соединившись с MariaDB с помощью клиента командной строки:

mysql -uroot -e 'SELECT version();'
+--------------------------------------------+
| version()                                  |
+--------------------------------------------+
| 10.3.13-MariaDB-1:10.3.13+maria~bionic-log |
+--------------------------------------------+

Соединение работает, если вы получили вывод похожий на приведенный выше. Теперь, когда установка MariaDB завершена, можно к настройке кластера.

Установка в Ubuntu 16.04

Произведем базовую установку MariaDB 10.3, рекомендованную поставщиком для Ubuntu Linux 16.04:

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb  http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.3/ubuntu xenial main'

sudo apt update
sudo apt install -y mariadb-server

Проверьте корректность установки, соединившись с MariaDB с помощью клиента командной строки:

mysql -uroot -e 'SELECT version();'
+--------------------------------------------+
| version()                                  |
+--------------------------------------------+
| 10.3.13-MariaDB-1:10.3.13+maria~xenial-log |
+--------------------------------------------+

Соединение работает, если вы получили вывод похожий на приведенный выше. Теперь, когда установка MariaDB завершена, можно к настройке кластера.

Установка в CentOS 7

Произведем базовую установку MariaDB 10.3, рекомендованную поставщиком для CentOS 7. Сначала необходимо добавить репозиторий пакетов MariaDB 10.3 в Yum:

sudo nano /etc/yum.repos.d/mariadb.repo

со следующим содержимым:

# MariaDB 10.3 CentOS repository list - created 2019-03-28 19:13 UTC
# http://downloads.mariadb.org/mariadb/repositories/

name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Теперь можно выполнить установку пакетов:

sudo yum install -y MariaDB-server MariaDB-client && 
      sudo systemctl enable mariadb && 
      sudo systemctl start mariadb

Проверьте корректность установки, соединившись с MariaDB с помощью клиента командной строки:

mysql -uroot -e 'SELECT version();'
+-----------------+
| version()       |
+-----------------+
| 10.3.13-MariaDB |
+-----------------+

Соединение работает, если вы получили вывод похожий на приведенный выше. Теперь, когда установка MariaDB завершена, можно к настройке кластера.

Настройка MySQL Server

Первый шаг – настроить сервер 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.

Откройте файл в текстовом редакторе :

Найдите строку, которая начинается с bind-address и установите в качестве значения IP-адрес, который должен прослушивать сервер MySQL.

По умолчанию установлено значение 127.0.0.1 (прослушивается только на локальном хосте).

В этом примере мы настроим сервер MySQL на прослушивание всех интерфейсов IPv4, изменив значение на 0.0.0.0 mysqld.cnf

Если есть строка, содержащая skip-networking, удалите ее или закомментируйте, добавив # в начале строки.

В MySQL 8.0 и выше директива bind-address может отсутствовать. В этом случае добавьте ее в разделе .

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

Чтобы перезапустить службу MySQL в Debian или Ubuntu, введите:

В дистрибутивах на основе RedHat, таких как CentOS, для перезапуска службы выполните:

11 ответов

162

Лучший ответ

Чтобы найти слушателя на порту, сделайте следующее:

Вы должны увидеть строку, которая выглядит так, если mysql действительно прослушивает этот порт.

Порт 3306 — это порт по умолчанию MySql.

Чтобы подключиться, вам просто нужно использовать любой клиент, который вам нужен, например, базовый клиент mysql.

Или URL, который интерпретируется кодом вашей библиотеки.

Ответ дал

03 май 2011, в 04:43
Поделиться

113

Использование клиента Mysql:

Ответ дал

20 янв. 2015, в 11:27
Поделиться

54

(по крайней мере, в debian/ubuntu работает)

или

Ответ дал

25 июль 2013, в 17:38
Поделиться

28

Он отобразит список, как показано ниже:

Использовать как root для всех деталей. Параметр ограничивает вывод на TCP-соединения, для прослушивания портов, показывает имя программы и показывает числовую версию порта вместо именованной версии.

Таким образом вы можете увидеть имя процесса и порт.

Ответ дал

23 окт. 2013, в 01:40
Поделиться

5

Оба URL неверны — должны быть

Я думал, что это само собой разумеется, но для подключения к базе данных с Java требуется драйвер JDBC. Вам понадобится MySQL JDBC драйвер.

Возможно, вы можете подключиться через сокет через TCP/IP. Ознакомьтесь с Документами MySQL.

См. http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html

ОБНОВЛЕНИЕ:

Я попытался подключиться к telnet в MySQL (), но он не работает:

Я думаю, это то, что вы имели в виду.

Ответ дал

03 май 2011, в 02:00
Поделиться

4

Попробуйте использовать параметр ():

Замените вашими «именем пользователя» и «паролем»

Ответ дал

07 дек. 2016, в 20:31
Поделиться

4

3306 — это порт по умолчанию для mysql. Проверьте это:

он должен дать этот результат:

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

Ответ дал

04 сен. 2015, в 09:58
Поделиться

4

Более простой подход для некоторых: если вы просто хотите проверить, находится ли MySQL на определенном порту, вы можете использовать следующую команду в терминале. Проверено на mac. 3306 — порт по умолчанию.

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

Ответ дал

08 дек. 2014, в 17:37
Поделиться

3

вы можете использовать

Ответ дал

28 апр. 2016, в 05:32
Поделиться

Если вы находитесь в системе, где недоступен (например, RHEL 7 и более поздние версии Debian), вы можете использовать , как показано ниже:

И вы получите для вывода что-то вроде следующего:

Четвертый столбец . Поэтому в этом случае Mysql прослушивает порт 3306 по умолчанию.

Ответ дал

15 сен. 2017, в 19:31
Поделиться

Я согласен с решением @bortunac. my.conf специфичен для mysql, в то время как netstat предоставит вам все порты прослушивания.

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

Мой клиент использует CentOS 6.6, и я нашел файл my.conf под /etc/, поэтому я использовал:

(CentOS 6.6)

Ответ дал

04 июнь 2015, в 12:33
Поделиться

Ещё вопросы

  • 1050UTF-8 полностью
  • 193ошибка: «Не удается подключиться к локальному серверу MySQL через сокет» /var/run/mysqld/mysqld.sock ‘(2)’ — Отсутствует /var/run/mysqld/mysqld.sock
  • 472Потерянный файл httpd.conf находится в Apache
  • 227настроить устройство для разработки (???????????? нет разрешений)
  • 215Команде Docker не удается подключиться к демону Docker
  • 158Добавить пользователя в Docker Container
  • 144Как я могу установить и запустить PhantomJS в Ubuntu?
  • 134ОШИБКА 1045 (28000): доступ запрещен для пользователя ‘root’ @ ‘localhost’ (с использованием пароля: ДА)
  • 133Окно появляется за пределами экрана на Ubuntu
  • 115Как сбросить или изменить пароль root MySQL?

Шаг 2. Настройка кластера MariaDB в режиме Master — Master

Если одностороннего режима копирования данных нам недостаточно, продолжаем настройку.

Настройка на сервере Slave

На втором сервере откроем конфигурационный файл MariaDB:

# vi /etc/my.cnf.d/server.cnf

и допишем в него следующее:

log_bin=mysql-bin
log_error=mysql-bin.err
binlog-ignore-db=information_schema,mysql,test

Перезагрузим демон для применения настроек:

# systemctl restart mariadb

Теперь подключимся к MariaDB:

# mysql -uroot -p

и создадим учетную запись для репликации с первого сервера:

MariaDB > GRANT replication slave ON *.* TO «replmy»@»192.168.166.155» IDENTIFIED BY «password»;

* replmy: имя учетной записи (можно использовать любое). 192.168.166.155: IP-адрес первого сервера, с которым будем реплицировать данные. password: пароль для учетной записи (желательно, сложный).

Выведем состояние работы мастера:

MariaDB > show master status\G

Как и при настройке первого сервера, запомните или запишите значения для File и Position.

Настройка на сервере Master

Теперь подключитесь к первому серверу.

И зайдем в командную оболочку MariaDB:

# mysql -uroot -p

введем такую команду:

MariaDB > change master to master_host = «192.168.166.156», master_user = «replmy», master_password = «password», master_log_file = «mysql-bin.000003», master_log_pos = 245;

* 192.168.166.156: IP-адрес моего второго сервера. replmy: учетная запись для репликации, которая была создана на втором сервере. password: пароль для учетной записи, также был сделан на втором сервере. mysql-bin.000003: имя файла, которое мы должны были записать или запомнить (у вас может быть другим). 245: номер позиции, с которой необходимо начать репликацию (также должны были записать или запомнить ранее).

Теперь запустим вторичный сервер для репликации:

MariaDB > start slave;

И проверим состояние репликации:

MariaDB > SHOW SLAVE STATUS\G

Отключитесь от СУРБД:

MariaDB > \q

Настройка кластера в режиме Master — Master закончена.

Теперь остается окончательно убедиться, что репликация работает. Внесите изменения на первом сервере — они должны попасть на второй. И наоборот, при внесении изменений на втором сервере, они должны попадать на первый.

MySQL Enterprise Backup Ports

Table 3.9 MySQL Enterprise Backup Ports

Default Port/Protocol Description SSL or other Encryption Required Direction
3306/TCP Communication with the local instance Yes Optional. Can connect with TCP, socket, pipe, or memory. To the local instance
3306/TCP For InnoDB cluster/Group Replication Yes Required for InnoDB cluster Backup To members of the cluster/group
443/TCP Oracle Object Store Yes Optional From MySQL Enterprise Backup to Object Store
443/TCP Amazon S3 Yes Optional From MySQL Enterprise Backup to Amazon S3
Varies. Refer to your media management system documentation. Backup to Media Management System (MMS) through System Backup to Tape
(SBT)
Vendor dependent Optional From the memory management library to the media management server. Refer
to your media management system documentation.

Client — Server Connection Ports

Port 3306 is the default port for the MySQL Protocol
(), which is used by the
mysql client, MySQL Connectors, and utilities
such as mysqldump and
mysqlpump. The port for X Protocol
(), supported by
clients such as MySQL Shell, MySQL Connectors and MySQL Router, is
calculated by multiplying the port used for MySQL Protocol by 10.
For example if the MySQL Protocol port is the default value of
3306 then the X Protocol port is 33060.

Table 3.1 Client — Server Connection Ports

Default Port/Protocol Description SSL or other Encryption Required Direction
3306/TCP MySQL clients to the MySQL server (MySQL Protocol) Yes Yes, unless you are only using port 33060 From the MySQL client to the MySQL server
33060/TCP MySQL clients to the MySQL server (X Protocol) Yes Yes, unless you are only using port 3306 From the MySQL client to the MySQL server

To verify the value of these ports on MySQL server, issue:

Проверка репликации данных

На одном из узлов создадим базу данных, таблицу и вставим данные в нее:

$ mysql -uroot 

MariaDB > create database test;
Query OK, 1 row affected (0.121 sec)

MariaDB > create table test.test (id INT PRIMARY KEY, name VARCHAR(32));
Query OK, 0 rows affected (0.195 sec)

MariaDB > insert into test.test values(1, "name");
Query OK, 1 row affected (0.003 sec)

Убедимся, что репликация произошла на оставшиеся узлы, выполнив на каждом из них команду запроса данных:

$ mysql -uroot -e 'select * from test.test;'
+----+------+
| id | name |
+----+------+
|  1 | name |
+----+------+

Аналогичным образом вы можете осуществить проверку и для других операций.

Разделение операций чтения/записи с помощью HAProxy

HAProxy как балансировщик нагрузки MySQL работает на уровне TCP. Он не понимает запросы MySQL, которые работают на более высоком уровне и пересылаются серверам MySQL. В связи с этим HAProxy пользуется особой популярностью в рамках установок с репликацией multi-master, таких как Galera Cluster и MySQL Cluster, где все бэкенд-серверы MySQL равнодоступны. Все серверы MySQL могут обрабатывать перенаправленные операции чтения/записи. Работа на транспортном уровне также требует меньше вычислительных затрат по сравнению с балансировкой нагрузки обратным прокси, понимающим запросы SQL, таким как MaxScale или ProxySQL.

Все же это не означает, что HAProxy не подходит для установок с репликацией master-slave. Однако, распределение операций в этом случае происходит сложнее. Операции записи направляются только на Master, в то время как операции чтения могут быть направлены любому узлу, пока узел не начинает отставать.

Чтобы HAProxy мог обрабатывать операции чтения и записи по отдельности, необходимо:

  • Настроить проверку на доступность и роль сервера MySQL. Скрипт проверки должен:
    • сообщить о роли в репликации (master, slave или none);
    • сообщить об отставании узла slave (если есть slave);
    • должен быть доступен через HAProxy (настраивается через xinetd или порт пересылки).
  • Создать два обработчика HAProxy, один для чтения и один для записи:
    • обработчик операций чтения служит для передачи всем узлам запросов чтения;
    • обработчик операций записи служит для передачи операций записи единственному Master.
  • Модифицировать приложение, для поддержки отправки операции чтения и записи соответствующему обработчику:
    • создайте/измените приложение, чтобы отправлять операции чтения и записи соответствующим обработчикам;
    • используйте коннектор приложения, который поддерживает встроенное разделение для операций чтения/записи. Для Java можно использовать Connector/J, для PHP — php-mysqlnd для master-slave. Это сведет к минимуму изменения на стороне приложения.

Снаружи или внутриOutside vs inside

В случае подключения к Базе данных SQL Azure сначала нужно узнать, запускается ли клиентская программа за пределами или в пределах границ облака Azure.For connections to Azure SQL Database, we must first ask whether your client program runs outside or inside the Azure cloud boundary. В подразделах рассматриваются два типичных сценария.The subsections discuss two common scenarios.

Внутренняя программа. Клиент работает в AzureInside: Client runs on Azure

При запуске внутри границ облака Azure для взаимодействия с сервером Базы данных SQL клиент использует то, что можно назвать прямым маршрутом .When your client runs inside the Azure cloud boundary, it uses what we can call a direct route to interact with the SQL Database server. После установления подключения дальнейшее взаимодействие между клиентом и базой данных не включает в себя шлюз Базы данных SQL Azure.After a connection is established, further interactions between the client and database involve no Azure SQL Database Gateway.

Последовательность выглядит так:The sequence is as follows:

  1. ADO.NET 4.5 (или более поздней версии) инициирует краткое взаимодействие с облаком Azure и получает динамически указанный номер порта.ADO.NET 4.5 (or later) initiates a brief interaction with the Azure cloud, and receives a dynamically identified port number.

    Динамически идентифицируемый номер порта находится в диапазоне 11000-11999.The dynamically identified port number is in the range of 11000-11999.

  2. Затем ADO.NET подключается к серверу Базы данных SQL напрямую, без промежуточного слоя.ADO.NET then connects to the SQL Database server directly, with no middleware in between.

  3. Запросы отправляются непосредственно в базу данных, а результаты возвращаются клиенту.Queries are sent directly to the database, and results are returned directly to the client.

Убедитесь, что диапазоны портов 11000-11999 на клиентском компьютере Azure доступны для взаимодействия клиента ADO.NET 4,5 с базой данных SQL.Ensure that the port ranges of 11000-11999 on your Azure client machine are left available for ADO.NET 4.5 client interactions with SQL Database.

  • В частности, порты в этом диапазоне должны оставаться свободными от других исходящих ошибок.In particular, ports in the range must be free of any other outbound blockers.

  • На виртуальной машине Azure параметрами порта управляет брандмауэр Windows в режиме повышенной безопасности .On your Azure VM, the Windows Firewall with Advanced Security controls the port settings.

    С помощью пользовательского интерфейса брандмауэра можно добавить правило, для которого указывается протокол TCP, а также диапазон портов, используя следующий синтаксис: 11000–11999.You can use the firewall’s user interface to add a rule for which you specify the TCP protocol along with a port range with the syntax like 11000-11999.

MySQL Administrative Connection Port

As of MySQL 8.0.14, the server permits a TCP/IP port to be
configured specifically for administrative connections. This
provides an alternative to the single administrative connection
that is permitted on the network interfaces used for ordinary
connections. For more information, see
.

Table 3.2 MySQL Administrative Connection Port

Default Port/Protocol Description SSL or other Encryption Required Direction
33062/TCP (default) A port configured specifically for MySQL administrative connections
(MySQL Protocol)
Yes No From the MySQL client to the MySQL server

To verify the value of this port on MySQL server, issue:

Ссылка на основную публикацию