gpt4 book ai didi

mysql - 允许远程访问 MySQL、Ubuntu

转载 作者:可可西里 更新时间:2023-11-01 08:30:53 25 4
gpt4 key购买 nike

我正在尝试允许远程访问我的 Ubuntu 服务器 (VPS) 上的 MySQL。

我试图通过在 Netbeans 中构建的 Java 应用程序访问数据库。尝试连接时,Netbeans 会弹出以下错误消息:

Cannot establish a connection to jdbc:mysql://xx.xxx.xxx.xxx:3306/xxxxxx?zeroDateTimeBehavior=convertToNull using com.mysql.jdbc.Driver (null, message from server: "Host 'xx.xxx.xxx.xxx' is not allowed to connect to this MySQL server")

在尝试通过 Netbeans 连接到我的 MySQL 服务器时,我遵循了这个指南:https://www.youtube.com/watch?v=Fk2EkBs-Oq4

MySQL

MySQL 在标准端口 3306 上运行。在/etc/mysql/my.cnf 中,我注释掉了以下行:

bind-address = 127.0.0.1

所以我的 my.cnf 文件中不存在绑定(bind)地址。

UFW

我的服务器上安装了 UFW。 ufw 状态编号看起来像这样:

     To                         Action      From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] Anywhere ALLOW IN MY-IP-ADDRESS*
[ 4] 3306/tcp ALLOW IN Anywhere
[ 5] 3306/tcp ALLOW IN MY-IP-ADDRESS*
[ 6] 22 (v6) ALLOW IN Anywhere (v6)
[ 7] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 8] 3306/tcp (v6) ALLOW IN Anywhere (v6)

*MY-IP-ADDRESS = 我“出”到互联网的 IP 地址,我从中收到:http://whatismyipaddress.com/

我做错了什么,为什么我无法连接?

编辑:问题是,如果我在 my.cnf 中绑定(bind),我只能绑定(bind)一个 IP。我需要对在 vps 上运行的实时网站进行本地主机访问,还需要从我的开发计算机(该线程的目标)进行访问。我的想法是删除 my.cnf 中的绑定(bind)以允许所有内容,然后通过我的防火墙 UFW 向本地主机和我的开发计算机授予访问权限。

最佳答案

如果您想使用通过PuTTY 和隧道连接
看看这个答案的底部


我假设你有一个 mysql 管理工具。
下面将根据使用的工具 linux 或其他工具进行查看,但工作相同。

在那里登录并进入用户管理。

enter image description here

如果你安装的是普通的Mysql,那么应该只有root没有host。

从你创建本地主机的那一刻起,Mysql就假定你要管理多个主机。

enter image description here

创建现有主机。您的网络中存在计算机名称。这里 root@dxxxxx-p。这应该在 root 用户下创建。

这还不是全部,您仍然拥有所有表的授予权限。
这里 pricelist 没有分配权限

enter image description here

但是样本拥有所有权限

enter image description here

以多主机管理为例。

具有两个可访问名称的计算机

  • myComp1 : IP 192.168.0.101
  • 本地主机:IP 127.0.0.1

如果您现在使用“mysql -h localhost -u root ...”连接到同一台计算机,您将获得分配给本地主机的权限。

您可能会认为因为 localhostmyComp1 是同一台计算机。
现在 myComp1 自动拥有与 localhost 相同的权限。
但事实并非如此。所以要小心。

通过 `PuTTY` 和隧道连接

当您使用 PuTTY 连接时,上述所有内容都不是必需的。

使用隧道,您可以在 ubuntu 服务器上以 root@localhost 身份连接。

Localhost 在这里有些误导,因为它与您的 windows 计算机无关,而是与 ubuntu 服务器上的 localhost 相关。

通过 SSH 远程访问您的 MySQL 服务器

您的 Web 服务器上安装了 MySQL,但出于安全原因,它默认仅对本地端口开放。

如果您想从客户端工具(如 MySQL Query BrowserNetbeans)访问您的数据库,通常您必须从您的本地 IP 地址打开访问权限……但这几乎没有那么安全。

因此,我们将仅通过 SSH 隧道使用端口转发,因此您的 MySQL 客户端认为它正在连接到您的本地主机,但它实际上是通过隧道连接到其他服务器。

enter image description here

转到SSH->隧道

enter image description here

点击保存

确保 MySQL 服务器在 Windows 计算机上已关闭。
我正在使用 MySQL System Tray Monitor

右键单击,我会看到所有选项。

enter image description here

点击打开

enter image description here

如果您已经在 ubuntu 上正确完成了 SSH 的所有设置,那应该会出现在这里。 (如果不是在网络上搜索 Ubuntu SSH 和 Putty)

enter image description here

不要忘记:既然你已经登录了 ubuntu 服务器,你就拥有服务器本身的所有权限,因为 root@localhost 拥有所有权限,你不需要创建主机和创建模式权限

enter image description here

现在在你的 windows 电脑上打开 MySql Query Browser

enter image description here

现在连接到本地主机(记住这个本地主机是指 ubuntu 上的本地主机)
您可以在 Netbeans 中使用相同的设置连接到 Ubuntu 上的 Mysql

enter image description here

Mysql 查询浏览器打开,您可以在 UBUNTU 上处理您的数据库

enter image description here

Netbeans

enter image description here

关闭新建连接向导
与 Mysql Ubuntu 上的所有数据库创建一个新连接。

enter image description here

关于mysql - 允许远程访问 MySQL、Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27550082/

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