允许远程访问MySQL,Ubuntu

时间:2014-12-18 15:29:08

标签: mysql ubuntu netbeans

我试图允许在我的Ubuntu服务器(VPS)上远程加入MySQL。

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

  

无法建立连接   JDBC:MySQL的://xx.xxx.xxx.xxx:3306 / XXXXXX zeroDateTimeBehavior = convertToNull   使用com.mysql.jdbc.Driver(null,来自服务器的消息:" Host   ' xx.xxx.xxx.xxx'不允许连接到这个MySQL服务器")

我尝试通过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文件中不存在绑定地址。

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地址" out"我从以下网站上网:http://whatismyipaddress.com/

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

修改: 问题是,如果我在my.cnf中绑定,我只能绑定一个IP。我需要对运行在vps上的实时网站进行localhost访问,也可以从我的开发计算机访问(此线程正在瞄准)。我的想法是删除my.cnf中的bind以允许所有,然后通过我的防火墙UFW授予访问localhost和我的开发计算机。

3 个答案:

答案 0 :(得分:2)

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


我假设你有一个mysql管理工具 以下内容将取决于使用linux或其他工具,但工作方式相同。

登录并进入用户管理。

enter image description here

如果您安装了普通的Mysql,那么应该只有没有主机的root用户。

从您创建localhost的那一刻起,Mysql就会假设您要管理多个主机。

enter image description here

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

现在还不是全部你仍然拥有所有表授予权限 此处pricelist没有分配权限

enter image description here

但样本具有所有权限

enter image description here

例如,有多个主机管理。

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

  • myComp1:IP 192.168.0.101
  • localhost:IP 127.0.0.1

如果您现在使用" mysql -h localhost -u root ....连接到同一台计算机上。"您将获得已分配给localhost的权限。

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

通过`PuTTY`和tunnel

连接

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

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

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

通过SSH远程访问MySQL服务器

所以你的网络服务器上有MySQL,但出于安全原因,默认情况下只打开本地端口。

如果您想从MySQL Query Browser Netbeans 等客户端工具访问您的数据库,通常您必须从本地IP地址打开访问权限...但这不是安全。

相反,我们只是通过SSH隧道使用端口转发,因此您的MySQL客户端认为它连接到您的localhost机器,但它实际上是通过隧道连接到其他服务器。

enter image description here

转到SSH->隧道

enter image description here

点击Save

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

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

enter image description here

点击Open

enter image description here

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

enter image description here

不要忘记:既然您已经登录了ubuntu服务器,那么您可以在服务器本身拥有root @ localhost,因为root @ localhost拥有所有权限,您无需创建主机并创建权限模式

enter image description here

现在在您的Windows计算机上打开MySql Query Browser

enter image description here

现在连接到localhost(记住这个localhost意味着ubuntu上的localhost)
您可以在Netbeans中使用相同的设置连接到Ubuntu上的Mysql

enter image description here

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

enter image description here

Netbeans的

enter image description here

关闭New Connection Wizard后 在Mysql Ubuntu上创建所有数据库的新连接。

enter image description here

答案 1 :(得分:0)

更改

bind-address = 127.0.0.1

bind-address = YOUR-IP-ADDRESS*

答案 2 :(得分:0)

您需要授予对该数据库的访问权限:

GRANT ALL ON foo.* TO bar@xxx.xxx.xxx.xxx IDENTIFIED BY 'PASSWORD';

并且还更新了防火墙规则:

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