2014-02-07 3 views
7

У нас есть сервер MySQL на одной из удаленных виртуальных машин (Windows Server 2008). До вчерашнего дня мы могли подключиться к серверу MySQL с помощью рабочего места, установленного на нашей локальной машине.MySQL не может подключиться к удаленному серверу

Вчера произошел перезапуск машины, на которой установлена ​​виртуальная машина. После этого мы не можем подключиться к MYSQL. Хотя я могу пинговать и удаленно подключать эту конкретную виртуальную машину. Я даже могу выполнить запросы внутри инструментария, установленного в виртуальной машине.

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

Ошибка:

Попытка подключения не удалась для пользователя 'корень' от хоста к серверу на ABC: 3306: Не удается подключиться к серверу MySQL на 'ABC' (10060)

+0

ли MYSQL служба работает? Есть ли erros в журналах (Event Viewer)? – nightlyop

+0

Hi nightlyop это было решено ... В номере порта произошла ошибка. Спасибо – TBA

ответ

18

Действительно это может быть величина возможных причин, мы надеемся, что это начало:

Проверка основной сети

С виртуальной машины MySQL откройте командную строку и введите IPCONFIG /ALL. Это покажет вам все IP-адреса, привязанные к различным сетевым адаптерам.

Проверьте, что IP-адрес, к которому вы подключены, указан там, у виртуальной машины может быть новый IP-адрес от DHCP, а не после статического IP-адреса после его перезапуска.

Hostname против IP

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

MySQL конфигурационный файл

Вы сказали, что вы работаете в MySQL на Windows, это было принято переименовать my.cnf в my.ini. Файл конфигурации для более старых версий MySQL, предшествующих 4.1.5, обычно хранился либо в c:\my.ini, либо в c:\windows\my.ini. Для версий после этого по умолчанию используется каталог установки, обычно %PROGRAMDATA%\MySQL\MySQL Server xxx.

Когда вы разместили файл конфигурации, пожалуйста, откройте его в блокноте (или аналогичный текстовый редактор), найдите раздел [mysqld] и убедитесь, что port= порт, который вы пытаетесь подключиться и bind-address= IP-адрес, который вы пытаетесь для подключения.

портов сервера

От виртуального сервера MySQL откройте командную строку и введите netstat –ano, это покажет вам список процессов, и то, что IP-адреса/портов они прослушивают. Сервер MySQL должен быть указан здесь и должен прослушивать тот же порт и IP, что и файл конфигурации.

брандмауэра Windows

Вы должны иметь правила брандмауэра, чтобы разрешить MySQL, следующий будет добавить один порт по умолчанию 3306

netsh advfirewall firewall add rule name="MySQL Server" action=allow protocol=TCP dir=in localport=3306 

Определить, если это машина специфический

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

+0

@TBA 4-дневная радио-тишина - вам удалось решить вашу проблему? – Steve

+0

В самом деле, это было решено :) И извините за поздний ответ. port = имел другой порт. Спасибо, что она решена. – TBA

8

Администратор mysql вашей базы данных должен разрешать удаленное подключение к серверу mysql. изменить это в my.cnf:

bind-address = 127.0.0.1 # this shoul be your mysql server ip 

и комментарии это:

# skip-networking 
+0

Дорогой Волкан, где я могу это найти.cnf – TBA

+0

Если вы используете файл Debian Linux, находится по адресу /etc/mysql/my.cnf. Если вы используете файл Red Hat Linux/Fedora/Centos Linux, он находится в каталоге /etc/my.cnf. Если вы используете FreeBSD, вам нужно создать файл /var/db/mysql/my.cnf. –

+0

Я использую Windows Server 2008 R2 – TBA

2

Вы пытались проверить, что если кто-либо дополнительной безопасности на указанный вами порт т.е. 3306.

6

Шансы, что ваша конфигурация была создана для IP, который изменился. По умолчанию MySQL не позволит вам подключиться с удаленных хостов, если явно не дают разрешения для конкретного пользователя по конкретной схеме или группы схем, например, если вы сделали что-то вроде этого:

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; 

Может быть, что вы на самом деле сделали это, чтобы установить грант на свой собственный IP-адрес, то есть адрес вашего локального компьютера, и если ваш локальный компьютер (а не удаленный сервер) изменил его IP-адрес, то mysql не позволит вам подключиться, если у вас нет «1.2.3.4» IP-адрес, который, очевидно, вам больше не нужен, если у вас есть динамический IP-адрес (общий для DSL/кабельных соединений)

Так подключайтесь через SSH или Telnet или что угодно, что вы используете на своем сервере Windows и перейти к MySQL как корень и сделать это:

SELECT * from information_schema.user_privileges; 

Это покажет вам гранты на всех пользователей, и как они могут подключаться. Если вы не видите ваш локальный IP-адрес в списке есть или символа замены (который позволит вам подключиться с любого удаленного компьютера на сервер), то вы должны настроить его так:

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; 

Где USERNAME из курс - ваш пользователь. Посмотрите, что после этого есть подстановочный знак/точка/подстановочный знак, что означает, что вы хотите, чтобы этот пользователь мог подключиться к любой схеме (базе данных для mysql) от любого пользователя из любой сети. Но я бы рекомендовал вам предоставить только грант для пользователя для конкретной схемы, к которой вам нужно подключиться.

Тогда после этого, если вы на самом деле имели правильную информацию и до сих пор не может подключиться, чем использовать сканер портов, как nmap или что-то подобное, чтобы сделать сканирование портов и посмотреть, если MySQL является:

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

Если 1 верно, то проверить 2, потому что, возможно, есть расконфигурация порта. Но если какой-либо из этих двух точек работает, то это звучит определенно не как сетевая конфигурация, а пользовательская настройка или что-то еще.

1
GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY 'password'; 

Эта команда должна делать трюк для всех пользователей @Gustavo Rubio уже дал правильное объяснение.

Чтобы гарантировать, что порты открыты, выполните cmd в виртуальной машине и введите.

netstat -a 

TCP 127.0.0.1:3360  Hostname:3360 LISTENING 

my.cnf находится Mysql-установки-путь \ MySQL \ MySQL Server ххх убедитесь, что вы резервное копирование оригинала перед изменением

Can't connect to [local] MySQL server

Testing The MySQL Server Installation on Microsoft Windows

MySQL Workbench: Manage MySQL on Windows Servers the Windows way

0

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

Чтобы отключить межсетевой экран на каждом хосте в вашем кластере, выполните следующие шаги на каждом хосте.

1. Сохраните существующий набор правил iptables.

iptables-save > /root/firewall.rules 

2. Отключить Iptables.

Для RHEL, CentOS, Oracle, и Debian:

chkconfig iptables off 

и

/etc/init.d/iptables stop 

Для SLES:

chkconfig SuSEfirewall2_setup off 

и

rcSuSEfirewall2 stop 

Для Ubuntu:

service ufw stop 

https://www.cloudera.com/documentation/enterprise/5-7-x/topics/install_cdh_disable_iptables.html

Смежные вопросы