gpt4 book ai didi

jdbc - Google Apps Script JDBC 连接问题

转载 作者:行者123 更新时间:2023-11-29 15:28:54 29 4
gpt4 key购买 nike

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

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

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

Failed to establish a database connection. Check connection string, username and password. (line 2)



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

附言。用户名/密码没问题。
pps。在每个数据库中,远程访问都有效(我已经使用 telnet 进行了测试)。

最佳答案

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

第 1 步:使用 SSH 登录(如果服务器在您的数据中心之外)

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

ssh user@server1.cyberciti.biz

使用 su 或 sudo 以 root 身份登录
su

或使用须藤
sudo -i

或者,如果允许,直接以 root 用户身份登录:
ssh root@server1.cyberciti.biz

第 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 , 运行:
# 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:要绑定(bind)的 IP 地址。
  • skip-networking :根本不监听 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

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

    如果要为用户 bar 和远程 IP 202.54.10.20 添加一个名为 foo 的新数据库,则需要在 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

    或者只允许从您的局域网子网 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

    在哪里,

    -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

    要么
    $ nc -z -w1 65.55.55.2 3306

    示例输出:
    Connection to 65.55.55.2 3306 port [tcp/mysql] succeeded!

    资源信息: Click Here!

    关于jdbc - Google Apps Script JDBC 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58888160/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com