2013-02-08 5 views
196

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

Как я могу это сделать?

+1

возможно дубликат [Включить удаленное подключение к MySQL] (http://stackoverflow.com/questions/8380797/enable-remote-mysql-connection) – user

+0

Не используйте форматирование кода для текста, который не является кодом. Не по теме. – EJP

ответ

469

Это разрешено по умолчанию для MySQL.

Что по умолчанию отключено root доступ. Если вы хотите, чтобы включить эту функцию, выполните команду SQL локально:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; 
FLUSH PRIVILEGES; 

А затем найти следующую строку и закоментируйте в вашем my.cnf файл, который обычно живет на /etc/mysql/my.cnf на системах Unix/OSX. В некоторых случаях местом для файла является /etc/mysql/mysql.conf.d/mysqld.cnf).

Если это система Windows, вы можете найти ее в каталоге установки MySQL, обычно что-то вроде C:\Program Files\MySQL\MySQL Server 5.5\, а имя файла будет my.ini.

Изменение линии

bind-address = 127.0.0.1 

в

#bind-address = 127.0.0.1 

и перезапустить сервер MySQL (Unix/OSX и Windows) для того, чтобы изменения вступили в силу.

+0

Я сделал это (предоставил привилегии), но до сих пор не могу подключиться. и я использую windows os Я не могу найти my.cnf – Leo

+0

Обновлен ответ, чтобы отразить расположение файла my.cnf в Windows. – mjuarez

+3

Итак, я добавил binnd-address = 127.0.0.1 в конце файла, и я попытался подключиться с помощью navicat от внешнего хоста, и я получаю ошибку 10060. – Leo

4

Если ваш серверный процесс MySQL прослушивает 127.0.0.1 или :: 1, то вы не сможете подключиться удаленно. Если у вас есть bind-address в /etc/my.cnf, это может быть источником проблемы.

Вам также нужно будет добавить привилегии для пользователя не localhost.

+0

Странно, как ваш сервер мог «прослушивать» другой IP-адрес помимо «127.0.0.1'? – Pacerier

+2

@Pacerier 127.0.0.1 привязан только к интерфейсу loopback. Внешние соединения не будут работать. Система часто будет иметь несколько сетевых интерфейсов, каждая из которых должна быть привязана к определенному адресу, или вы можете использовать адрес 0.0.0.0 для привязки. – tadman

16

В моем случае я пытался подключиться к удаленному серверу mysql на основе ОС. После прохождения большого количества решений (предоставление всех привилегий, удаление привязок ip, создание сетей) проблема все еще не решена.

Как оказалось, при просмотре различных решений я столкнулся с iptables, что заставило меня понять, что порт 3306 mysql не принимает соединения.

Вот небольшая заметка о том, как я проверил и разрешил эту проблему.

  • Проверка, если порт принимает подключения:
telnet (mysql server ip) [portNo]
  • Добавление правила IP таблицы, чтобы разрешить соединения на порт:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
  • бы не рекомендовал этот для производственной среды, но если ваши iptables настроены неправильно, добавив, что правила могут еще не решить проблему.В этом случае необходимо сделать следующее:
service iptables stop

Надеется, что это помогает.

+0

, вы только что сохранили мою задницу – JafarAlali92

26

После выполнения всех вышеперечисленных я до сих пор не смог войти в систему как root удаленно, но Telnetting в порт 3306 подтвердил, что MySQL принимает соединения.

Я начал смотреть на пользователей в MySQL и заметил, что есть multiple root users с разными паролями.

select user, host, password from mysql.user; 

Так MySQL я set all the passwords for root снова, и я мог наконец войти удаленно root.

use mysql; 
update user set password=PASSWORD("NEWPASSWORD") where User='root'; 
flush privileges; 
+3

Это верно. Выполняя следующие шаги в других ответах, создается учетная запись пользователя с пустым паролем. Поэтому вам нужно добавить пароли для них. – chhantyal

+1

Я провел пару часов после всех других советов, но только этот, наконец, работал. – luizs81

+0

Удивительный ответ! простой для выполнения и исправления моей проблемы – RLaaa

1

Для кого это необходимо, проверьте, что порт 3306 межсетевого экрана также открыт, если служба брандмауэра запущена.

1

Just FYI Я вытащил волосы с этой проблемой часами. Наконец, я позвонил своему провайдеру хостинга и обнаружил, что в моем случае с использованием облачного сервера, который на панели управления для 1 и 1 у них есть дополнительный брандмауэр, который у вас есть клонировать и добавлять порт 3306. После добавления я получил прямо в.

+0

Это звучит очень специфично для вашей ситуации. Я не бесконечный источник знаний о сети, но уверены ли вы, что это решение хорошо подходит к этой проблеме? –

+0

У меня тоже была эта проблема. Общее с облачными серверами, –

1

И для людей OS X следует знать, что параметр bind-address обычно задается в плагине запуска, а не в файле my.ini. Поэтому в моем случае я удалил <string>--bind-address=127.0.0.1</string> с /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist.

+0

Альтернативное расположение файла plist: '~/Library/LaunchAgents' –

3

Если вы установили MySQL с brew, он действительно выполняет только прослушивание по локальному интерфейсу по умолчанию. Чтобы исправить это, вам нужно отредактировать /usr/local/etc/my.cnf и сменить команду bind-address с 127.0.0.1 на номер *.

Затем запустить brew services restart mysql.

10

Просто замечание из моего опыта, вы можете найти файл конфигурации по этому пути /etc/mysql/mysql.conf.d/mysqld.cnf.

(я борюсь за некоторое время, чтобы найти этот путь)

1

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

(1) Открыть cmd.

(2) перейти к пути C: \ Program Files \ MySQL \ MySQL Server 5.X \ bin и выполнить эту команду.

MySQL -u -p корень

(3) Введите пароль суперпользователя.

(4) Для предоставления разрешения выполните следующую команду.

ГРАНТ ВСЕ ПРИВИЛЕГИИ НА . TO 'USERNAME' @ 'IP' ИДЕНТИФИЦИРОВАНО 'PASSWORD';

USERNAME: Имя пользователя, которое вы хотите подключиться к серверу MySQL.

IP: общедоступный IP-адрес, откуда вы хотите разрешить доступ к MySQL серверу.

PASSWORD: Пароль пользователя.

IP может быть заменен на%, чтобы пользователь мог подключиться с любого IP-адреса .

(5) Промыть прелюдии следующей командой и выходом.

FLUSH PRIVILEGES;

выход;

enter image description here

+0

После этого у моего корня все еще есть доступ. Что я пропустил? – teapeng

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