Google Apps 脚本 JDBC 连接问题

2023-12-26

我在 google apps 脚本中使用 jdbc 连接器连接到任何 mysql 数据库时遇到问题,我正在使用教程代码:

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

但在每种情况下(我在 4 个不同的主机名上测试了 4 个不同的数据库)我都会得到相同的错误:

无法建立数据库连接。检查连接字符串、用户名和密码。 (第 2 行)

我正在寻求帮助,我不知道可能是什么问题;-(

附:用户名/密码没问题。 pps。在每个数据库中,远程访问都可以正常工作(我已经使用 telnet 进行了测试)。


由于您的问题是远程访问 MySQL 数据库,我将发布一些相关文档,以便像 TonyMiao 这样的未来查看者将有一个途径来解决他们自己的相关问题。

步骤#1:使用 SSH 登录(如果服务器位于您的数据中心之外)

首先,通过 ssh 登录远程 MySQL 数据库服务器。您可能需要以 root 用户身份登录 MySQL 服务器:

ssh [email protected] /cdn-cgi/l/email-protection

使用 su 或 sudo 以 root 身份登录

su

或使用须藤

sudo -i

或者如果允许,直接以 root 用户身份登录:

ssh [email protected] /cdn-cgi/l/email-protection

步骤#2:编辑 my.cnf 文件

连接后,您需要使用文本编辑器(例如 vi)编辑 MySQL 服务器配置文件 my.cnf:

如果您使用的是 Debian/Ubuntu Linux 文件位于/etc/mysql/my.cnf地点。

如果您使用的是 Red Hat Linux/Fedora/Centos Linux 文件位于/etc/my.cnf地点。

如果您使用 FreeBSD,则需要创建一个文件/var/db/mysql/my.cnf地点。

编辑/etc/my.cnf, run:

# 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
....
..
....

Where,

  • 绑定地址:要绑定的IP地址。
  • Skip-networking :根本不监听 TCP/IP 连接。全部 与 mysqld 的交互必须通过 Unix 套接字进行。这个选项是 强烈推荐用于仅允许本地请求的系统。 由于您需要允许远程连接,因此应删除此行 来自 my.cnf 或将其置于注释状态。

步骤#4 保存并关闭文件

如果您使用的是 Debian / Ubuntu Linux,请键入以下命令重新启动 mysql 服务器:

# /etc/init.d/mysql restart

OR

# systemctl restart mysql

如果您使用的是 RHEL / CentOS / Fedora / Scientific Linux,请键入以下命令重新启动 mysql 服务器:

# /etc/init.d/mysqld restart

OR

# systemctl restart mysqld

如果您使用的是 FreeBSD,请键入以下命令来重新启动 mysql 服务器:

# /usr/local/etc/rc.d/mysql-server restart

OR

# service mysql-server restart

步骤#5 授予对远程 IP 地址的访问权限

连接mysql服务器:

$ mysql -u root -p mysql

授予对新数据库的访问权限

如果你想为用户 bar 添加一个名为 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';

如何授予对现有数据库的访问权限?

假设您始终从名为 202.54.10.20 的远程 IP 与用户 webadmin 的名为 webdb 的数据库建立连接,要授予对此 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

键入 exit 命令注销 mysql:

mysql> exit

步骤#7:打开端口 3306

您需要使用 iptables 或 BSD pf 防火墙打开 TCP 端口 3306。

打开 LINUX IPTABLES 防火墙的 IPTABLES 规则示例

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

或者仅允许来自位于 10.5.1.3 的 Web 服务器的远程连接:

/sbin/iptables -A INPUT -i eth0 -s 10.5.1.3 -p tcp --destination-port 3306 -j ACCEPT

或者仅允许来自您的 LAN 子网 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 防火墙规则示例 ( /ETC/PF.CONF)

使用以下命令在基于 BSD 的系统上打开端口 # 3306:

pass in on $ext_if proto tcp from any to any port 3306

或者仅允许从位于 10.5.1.3 的 Web 服务器进行访问:

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

Where,

-u webadmin:webadmin是MySQL用户名 -h IP或主机名:65.55.55.2是MySQL服务器IP地址或主机名(FQDN) -p :提示输入密码 您还可以使用 telnet 或 nc 命令连接到端口 3306 进行测试:

$ echo X | telnet -e X 65.55.55.2 3306

OR

$ nc -z -w1 65.55.55.2 3306

输出示例:

Connection to 65.55.55.2 3306 port [tcp/mysql] succeeded!

资源信息:点击这里! https://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Apps 脚本 JDBC 连接问题 的相关文章

随机推荐

  • Fabric JS:鼠标按下时复制/粘贴对象

    我正在尝试创建一个块游戏 您可以从菜单中选择形状并将它们放置在画布上 有一个形状菜单 您可以将形状拖到画布上 我希望它在将克隆拖到画布上时将主要形状保留在菜单中 这可能吗 我创建了一个 jsfiddle 来提供帮助 JSFIDDLE htt
  • gfortran 不适用于 Mac OS X 10.9

    我将 Mac 更新到 OS X 10 9 GM 然后发现 gfortran 不起作用 构建任何程序时 它都会显示 ld library not found for lcrt1 10 5 o collect2 ld return 1 有谁知道
  • ReactJS - 即使从选择下拉列表中选择相同的选项也会触发事件

    当从 ReactJS 的下拉列表中选择一个选项时 如何触发事件 目前我正在使用onChange但即使再次选择相同的选项 我也需要触发一个事件 当前代码
  • java.net.ConnectException

    我看过一些关于这个主题的帖子 但我仍然不知道出了什么问题 以下是代码 import java sql public class SQL public static void main String args Connection conn
  • 从IP地址获取位置[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话
  • AttributeError:“float”对象没有属性“split”

    我正在调用这条线 lang modifiers keyw strip for keyw in row language modifiers split if not isinstance row language modifiers flo
  • android.view.Surface - OutOfResourcesException

    我有这个奇怪的错误 但没有找到任何可能的解决方案 在使用我的应用程序后 问题总是随机出现 该应用程序几乎可以在所有设备上完美运行 仍然存在此问题的设备之一正在运行 CM 7 1 0 我知道很多 CM7 用户都在抱怨类似的问题 不幸的是 我有
  • 如何有条件地在 JSP 页面中显示一个 div 的内容而不是另一个 div 的内容?

    我对JSP开发很陌生 我有以下疑问 如果进入 JSP 页面我有 2div像这样 div p SUCCESS p div div p FAILURE p div 我必须根据 a 的值仅显示这些 div 之一status变量放入Http会话只能
  • 比较文件内字母顺序的最佳方法?

    我有一个文件 其中有很多字母序列 其中一些序列可能是相同的 所以我想对它们进行全部比较 我正在做这样的事情 但这并不完全是我想要的 for line in fl line line split for elem in line if gt
  • Go HTTP 服务器性能问题

    我正在编写一个事件收集器http 服务器 该服务器将承受重负载 因此 在 http 处理程序中 我只是反序列化事件 然后在 goroutine 中的 http 请求 响应周期之外运行实际处理 由此 我发现如果我以每秒 400 个请求的速度访
  • Json反序列化,创建重复对象

    展示问题的模型比首先尝试解释它更容易 internal class Program private static void Main string args Class1 class1 new Class1 Name Scott Class
  • 有没有办法在调用构造函数之前设置属性?

    是的 我知道依赖项应该传递给构造函数 我不是在问编码风格或该做什么和不该做什么 我的应用程序中的许多类都与数据库驱动程序类的实例相关联 为此 我使用 PHP 的后期静态绑定创建了一个抽象工厂类 该类的唯一成员是保存驱动程序引用的属性 它看起
  • 目标 C:多名代表

    我很好奇是否以及如何使控制器成为两个不同对象的委托 这是允许的还是像 Java 中的多重继承 假设我想要一个控制器来响应
  • Openshift 上的 Scalatra 应用 - 设置 Jetty IP

    我正在尝试使用 DIY 盒在 Openshift 上部署一个最小的 Scalatra 应用程序 我已经成功让 SBT 正常工作 但是当涉及到container start 我收到错误 FAILED SelectChannelConn ema
  • 如何设置浮动 div 的宽度以占用剩余空间而不将其他 div 向下推?

    对于我想要制作的布局的一部分 我想使用三个 div 所有 div 都彼此相邻浮动 左侧和右侧有一个最大宽度设置 效果很好 但我希望中间的 div 扩大其宽度以填充剩余空间 澄清一下 左右 div 的宽度可以是从 0px 到最大宽度的任何位置
  • 枚举,在 switch case 中使用

    我定义了一个枚举 其中包含方法返回类型 如 String Float List Double 等 我将在 switch case 语句中使用它 例如我的枚举是 public enum MethodType DOUBLE LIST STRIN
  • 在多个故事板文件之间共享场景。 iPhone 与 iPad

    我正在使用故事板开发通用应用程序 我有 2 个故事板文件 一款适用于 iPhone 一款适用于 iPad 我将有一些场景想要在两者之间共享 并且我想使用故事板编辑器来设置它们 常见的是 UITableViewController 及其原型单
  • android:来自片段的菜单项单击事件

    我有一个带有操作栏的应用程序 并且菜单因主要活动而膨胀 我想拦截片段内的点击事件 但我不知道如何 你能帮我吗 主要活动 Override public boolean onCreateOptionsMenu Menu menu getMen
  • 如何使用预测和标准获得不同的结果

    我正在尝试使用 Grails 中的条件加载不同的父级 查询如下 Query def criteria Parent createCriteria results criteria list max params max offset par
  • Google Apps 脚本 JDBC 连接问题

    我在 google apps 脚本中使用 jdbc 连接器连接到任何 mysql 数据库时遇到问题 我正在使用教程代码 var conn Jdbc getConnection jdbc mysql host or ip 3306 datab