2012-02-28 3 views
1

Я пытаюсь подключиться к удаленному серверу, который я буду называть машину A. Я создал пользователя, следуя инструкциям hereПодключение к удаленному серверу MySQL Проблема

CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; 
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' 
     WITH GRANT OPTION; 
CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; 
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' 
     WITH GRANT OPTION; 

на машине AI может выполнить команду

mysql -u monty -h website.com -p 

Это соединение с sql без проблем. Однако, при попытке сделать это с какой-то машины BI получить ошибку:

 
ERROR 2003 (HY000): Can't connect to MySQL server on 'website.com' (113) 

Я также закомментировать следующую строку:

# bind-address  = 127.0.0.1 

в файле /etc/mysql/my.cnf , По-прежнему не удастся подключиться к удаленному соединению. Какие-нибудь очевидные вещи, которые я могу пропустить? Любая обратная связь, как всегда, очень ценится.

+0

Является ли сервер прослушиванием порта 3306? Вы можете проверить, выполнив 'netstat -ln'. Посмотрите, включен ли 3306. Если да, проверьте, какой IP-адрес он прослушивает. Если это не так, вы знаете, что проблема заключается в том, что он не прослушивает вообще или на другом порту. – Crashspeeder

+0

После запуска netstat -ln порт 3306 указан как: tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN любая обратная связь о том, что это означает? –

+0

Это означает, что он прослушивает все сетевые интерфейсы. Предполагая, что 'website.com' указывает на IP-адрес, соответствующий этому серверу, у вас не должно быть никаких проблем. Убедитесь, что вы сбросили привилегии, также попробуйте проверить журнал ошибок mysql для любых других намеков на то, что может быть неправильным. – Crashspeeder

ответ

3

Я думаю, что это ваш ГРАНТ, который нуждается в исправлении.

GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' 

Может нужно быть

GRANT ALL PRIVILEGES ON *.* TO 'monty'@'website.com' 

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

+0

Ну в соответствии с учебным пособием вы должны сделать то и другое: «Необходимо иметь обе учетные записи для monty, чтобы иметь возможность подключаться из любого места в качестве monty. Без учетной записи localhost учетная запись анонимного пользователя для localhost, созданная mysql_install_db будет иметь приоритет, когда monty будет подключаться к локальному хосту. В результате monty будет рассматриваться как анонимный пользователь. Причина этого в том, что учетная запись анонимного пользователя имеет более конкретное значение столбца Host, чем значение 'monty' @ ' % 'и, таким образом, выполняется раньше в порядке сортировки таблиц пользователей. " –

+0

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

+1

Ну ладно, так что если вы используете общедоступный хостинг, у них может быть немного заблокировано. Один из способов обеспечить безопасность - это сделать API, к которому может подключиться ваше приложение, и затем этот API будет подключаться к базе данных локально.Это не спасет вас от всего, но это позволит вам немного лучше контролировать его. –

0

Похоже адрес «website.com» не может быть решен с машиной B. Пожалуйста, попробуйте подключиться к серверу MySQL, используя IP-адрес машины А, то есть:

mysql -u monty -h x.x.x.x -p 

Если он будет работать , убедитесь, что вы правильно сопоставили IP-адрес машины A с именем «website.com».

+0

Не повезло и здесь. Очевидно, что на машине A: mysql -u monty -h x.x.x.x -p работает, но на машине B. У меня все та же проблема. Какие-либо предложения? –

+0

Можете ли вы проверить, что машина A доступна с машины B вообще? То есть попробуйте ** ping x.x.x.x **, где x.x.x.x - это IP-адрес A. Также, вы перезапустили MySQL после внесения изменений в файл ** my.cnf **? –

+0

Я действительно не запустил MySQL после изменения файла my.cnf, но не получил никакого ответа при отправке моего сервера с удаленной машины. Есть ли какая-то модификация, которую я могу сделать для моей машины A, чтобы ответить на эти пинги? –