Поскольку ваша проблема заключалась в удаленном доступе к базе данных MySQL, я опубликую некоторую соответствующую документацию, чтобы у будущих зрителей, таких как TonyMiao, была возможность решить свои собственные проблемы.
Шаг # 1: Вход в систему с использованием SSH (если сервер находится за пределами вашего центра обработки данных)
Сначала войдите через ssh на удаленный сервер базы данных MySQL.Вам может потребоваться войти на сервер MySQL от имени пользователя root:
ssh user@server1.cyberciti.biz
войти в систему как пользователь root с помощью su или sudo
su
или использовать sudo
sudo -i
ИЛИ напрямую войдите в систему как пользователь root, если это разрешено:
ssh root@server1.cyberciti.biz
Шаг № 2: Отредактируйте файл my.cnf
После подключения вам необходимо отредактировать файл конфигурации сервера MySQL my.cnfс помощью текстового редактора, например vi:
Если вы используете Debian / Ubuntu Linux, файл находится в папке /etc/mysql/my.cnf
.
Если вы используете Red Hat Linux / Fedora / Centos Linux, файлнаходится в /etc/my.cnf
location.
Если вы используете FreeBSD, вам нужно создать файл /var/db/mysql/my.cnf
location.
Редактировать /etc/my.cnf
, запустить:
# vi /etc/my.cnf
Шаг № 3: После открытия файла найдите строку, которая выглядит следующим образом
[mysqld]
Make sure line skip-networking is commented (or remove line) and add following line
bind-address=YOUR-SERVER-IP
For example, if your MySQL server IP is 65.55.55.2 then entire block should be look like as follows:
[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 = 65.55.55.2
# skip-networking
....
..
....
Где,
- bind-address: IP-адрес для привязки.
- пропуск сети: вообще не слушайте соединения TCP / IP.Все взаимодействие с mysqld должно осуществляться через сокеты Unix.Этот параметр настоятельно рекомендуется для систем, где разрешены только локальные запросы.Поскольку вам необходимо разрешить удаленное подключение, эту строку следует удалить из my.cnf или перевести в состояние комментария.
Шаг № 4 Сохраните и закройте файл
Если вы используетеDebian / Ubuntu Linux, введите следующую команду для перезапуска сервера mysql:
# /etc/init.d/mysql restart
ИЛИ
# systemctl restart mysql
Если вы используете RHEL / CentOS / Fedora / Scientific Linux, введите следующую командукоманда для перезапуска сервера mysql:
# /etc/init.d/mysqld restart
ИЛИ
# systemctl restart mysqld
Если вы используете FreeBSD, введите следующую команду для перезапуска сервера mysql:
# /usr/local/etc/rc.d/mysql-server restart
ИЛИ
# service mysql-server restart
Шаг № 5 Предоставить доступ к удаленному IP-адресу
Подключиться к серверу MySQL:
$ mysql -u root -p mysql
Предоставить доступ к новой базе данных
Если вы хотите добавить новую базу данных с именем foo для панели пользователя и удаленного IP-адреса 202.54.10.20, то вам нужно ввести следующие команды в приглашении mysql>:
mysql> CREATE DATABASE foo;
mysql> GRANT ALL ON foo.* TO bar@'202.54.10.20' IDENTIFIED BY 'PASSWORD';
КАК Я ПРЕДОСТАВИТЬ ДОСТУП КСУЩЕСТВУЮЩАЯ БАЗА ДАННЫХ?
Допустим, вы всегда делаете cпри подключении с удаленного IP-адреса 202.54.10.20 для базы данных с именем webdb для пользователя webadmin. Чтобы предоставить доступ к этому IP-адресу, введите следующую команду. В приглашении mysql> для существующей базы данных введите:
mysql> update db set Host='202.54.10.20' where Db='webdb';
mysql> update user set Host='202.54.10.20' where user='webadmin';
Шаг № 6:Выход из MySQL
Введите команду выхода для выхода из системы mysql:
mysql> exit
Шаг # 7: Откройте порт 3306
Вам необходимо открыть TCP-порт 3306, используя iptables или BSD pfбрандмауэр.
ОБРАЗЕЦ ОБРАЗЦОВ IPTABLES ДЛЯ ОТКРЫТИЯ FIREWALL LINT IPTABLES
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
ИЛИ разрешается только удаленное подключение с веб-сервера, расположенного по адресу 10.5.1.3:
/sbin/iptables -A INPUT -i eth0 -s 10.5.1.3 -p tcp --destination-port 3306 -j ACCEPT
ИЛИ разрешите только удаленное подключение из вашей локальной сети. 192.168.1.0/24:
/sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT
Наконец сохраните все правила (специфичная команда RHEL / CentOS):
# service iptables save
ОБРАЗЕЦ FREEBSD / OPENBSD/ NETBSD PF FIREWALL RULE (/ETC/PF.CONF)
Используйте следующую команду, чтобы открыть порт # 3306 в системах на базе BSD:
pass in on $ext_if proto tcp from any to any port 3306
ИЛИ разрешите доступ только с вашего веб-серверанаходится по адресу 10.5.1.3:
pass in on $ext_if proto tcp from 10.5.1.3 to any port 3306 flags S/SA synproxy state
Шаг № 8: Проверьте его
В удаленной системе или на рабочем столе введите следующую команду:
$ mysql -u webadmin -h 65.55.55.2 -p
Где,
-u webadmin: webadmin - имя пользователя MySQL -h IP или имя хоста: 65.55.55.2 - это IP-адрес или имя хоста (FQDN) сервера MySQL. -p: Запрос пароля. Вы также можете использовать команду telnet или nc для подключения к порту 3306 с целью тестирования:
$ echo X | telnet -e X 65.55.55.2 3306
ИЛИ
$ nc -z -w1 65.55.55.2 3306
Примеры выходных данных:
Connection to 65.55.55.2 3306 port [tcp/mysql] succeeded!
Информация о ресурсе: Нажмите здесь!