Проблема подключения JDBC скрипта Google Apps - PullRequest
2 голосов
/ 04 апреля 2011

У меня проблема с подключением к любой базе данных mysql с использованием коннектора jdbc в скриптах приложений Google, я использую код учебника:

var conn = Jdbc.getConnection("jdbc:mysql://host(or ip):3306/database", "username", "password");

Но в каждом случае (я тестировал 4 разные базы данных на 4разные имена хостов) я получаю ту же ошибку:

Не удалось установить соединение с базой данных.Проверьте строку подключения, имя пользователя и пароль.(строка 2)

Мне нужна помощь, я понятия не имею, в чем может быть проблема; - (

ps. Имена пользователей / пароли в порядке. pps. Вкаждый удаленный доступ к базе данных работает (я тестировал с помощью telnet).

1 Ответ

1 голос
/ 28 июня 2017

Поскольку ваша проблема заключалась в удаленном доступе к базе данных 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!

Информация о ресурсе: Нажмите здесь!

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