Удаленный доступ к Mysql - PullRequest
1 голос
/ 11 ноября 2009

У меня проблема с подключением удаленной локальной сети MYSQL. При попытке выполнить следующие команды отображается следующая ошибка.

$ mysql -u root -h 192.168.1.15 -p
mysql> GRANT ALL test. * TO root'192.168.1.15 'IDENTIFIED BY' ';
ОШИБКА 2003 (HY000): Невозможно подключиться к серверу MySQL на 192.168.1.15 (10060)

Ответы [ 6 ]

8 голосов
/ 08 июля 2011

Если у вас есть полный доступ к вашему серверу (требуются права суперпользователя):

Шаг 1: отредактируйте my.cnf (обычно находится в / etc)

Найдите следующую строку: [mysqld] и убедитесь, что строка skip-networking закомментирована (или удалите строку) и добавьте следующую строку:

bind-address=YOUR-SERVER-IP

Например, если IP-адрес сервера MySQL равен 66.166.170.28, то весь блок должен выглядеть следующим образом:

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
language        = /usr/share/mysql/English
bind-address    = 66.166.170.28
# skip-networking
.......

Где

  • bind-address : IP-адрес для привязки.
  • пропуск сети : вообще не слушайте соединения TCP / IP. Все взаимодействие с mysqld должно осуществляться через сокеты Unix. Этот параметр настоятельно рекомендуется для систем, где разрешены только локальные запросы. Поскольку вам необходимо разрешить удаленное подключение, эту строку следует удалить из my.cnf или перевести в состояние комментария.

Шаг 2: Предоставить доступ всем хостам

Запустите монитор MySQL с помощью этой команды: mysql или /usr/local/mysql/bin/mysql. Ваше приглашение оболочки теперь должно выглядеть так: mysql>. Запустите эту команду:

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

Где:

  • ИМЯ ПОЛЬЗОВАТЕЛЯ - это имя пользователя, которое вы используете при подключении с использованием вашего php-скрипта.
  • ПАРОЛЬ - это пароль, который вы используете при подключении.

Теперь вы должны сбросить привилегии MySQL. Запустите эту команду:

FLUSH PRIVILEGES;

Запустите эту команду для выхода из MySQL:

exit;

Шаг 3: перезапустите mysql deamon

/etc/init.d/mysqld restart

или

/etc/init.d/mysql restart

в зависимости от того, какой дистрибутив Linux работает на вашем сервере.

6 голосов
/ 11 ноября 2009

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

В вашем конфигурационном файле MySQL (my.cnf) вам нужно как минимум следующее:

port         = 3306          # Port MySQL listens on
bind-address = 192.168.1.15  # IP address of your server
# skip-networking            # This should be commented out to enable networking

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

Вы также можете настроить адрес привязки на 0.0.0.0, что означает, что он будет привязан ко всем IP-адресам на сервере.

И, наконец, проверьте конфигурацию брандмауэра, чтобы разрешить порт 3306.

2 голосов
/ 11 ноября 2009
GRANT ALL ON test.* TO 'root'@'192.168.1.15' IDENTIFIED BY '';
1 голос
/ 08 июля 2011

Прокомментируйте строку ниже в файле /etc/mysql/my.cnf

# bind-address = 127.0.0.1

И добавьте (любое) разрешение хоста для входа в систему (возможно, root) на сервере MySQL.

Трудный путь: вам нужно вставить в таблицу mysql.host ...

Простой способ: использовать MySQL Administrator -> Администрирование пользователя-> Выбрать пользователя -> (Щелкните правой кнопкой мыши) Добавить хост-> Выбрать «Любой хост»

Наконец, перезапустите сервер:

/etc/init.d/mysql restart

PS: Способность установки по умолчанию

mysql версия: MySQL 5.1.57-1 ~ dotdeb.0

Linux Debian 6 Squeeze

0 голосов
/ 04 июня 2013

Просто подумал, что я добавлю еще одно предложение ...

Некоторые инструменты MySQL GUI ( Sequel Pro для Mac и EMS SQL Manager для Windows) разрешают подключения MySQL через SSH туннелирование . Это означает, что вам не нужно предоставлять дополнительные привилегии. Я обнаружил, что это самый быстрый способ получить удаленный доступ к базам данных MySQL, которые я администрирую.

0 голосов
/ 31 января 2012

Как и выше, необходимо избавиться от «пропуска сети» в my.cnf.

Однако в некоторых конфигурациях это переопределяется SKIP = "- skip-network" в файле запуска, например, rc.mysqld. Так что убери это тоже.

В любом случае hosts.allow разрешает одному компьютеру общаться с другим?

И оставьте нас не забывать фактическую документацию .

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