我试图允许在我的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和我的开发计算机。
答案 0 :(得分:2)
如果您想使用通过PuTTY
连接和隧道
看看这个答案的底部
我假设你有一个mysql管理工具 以下内容将取决于使用linux或其他工具,但工作方式相同。
登录并进入用户管理。
如果您安装了普通的Mysql,那么应该只有没有主机的root用户。
从您创建localhost的那一刻起,Mysql就会假设您要管理多个主机。
创建现有主机。您的网络中存在计算机名称。这里root@dxxxxx-p
。这应该在root
用户下创建。
现在还不是全部你仍然拥有所有表授予权限
此处pricelist
没有分配权限
但样本具有所有权限
例如,有多个主机管理。
具有两个可访问名称的计算机
如果您现在使用" mysql -h localhost -u root ....连接到同一台计算机上。"您将获得已分配给localhost的权限。
您可能会认为localhost
和myComp1
是同一台计算机
现在,myComp1
自动拥有与localhost
相同的权限
但事实并非如此。所以要小心。
当您使用PuTTY连接时,上述所有内容都不是必需的。
使用隧道,您可以在ubuntu服务器上以root @ localhost身份进行连接。
Localhost在这里有点误导,因为它与您的Windows计算机无关,而是与ubuntu服务器上的localhost有关。
通过SSH远程访问MySQL服务器
所以你的网络服务器上有MySQL,但出于安全原因,默认情况下只打开本地端口。
如果您想从MySQL Query Browser
或 Netbeans 等客户端工具访问您的数据库,通常您必须从本地IP地址打开访问权限...但这不是安全。
相反,我们只是通过SSH隧道使用端口转发,因此您的MySQL客户端认为它连接到您的localhost机器,但它实际上是通过隧道连接到其他服务器。
转到SSH->隧道
点击Save
确保Windows计算机上的MySQL服务器已关闭
我正在使用MySQL System Tray Monitor
。
点击右键,我会看到所有选项。
点击Open
如果你已经在ubuntu上完成了SSH
的所有设置,那么这应该出现在这里。 (如果不在网上搜索Ubuntu SSH和Putty)
不要忘记:既然您已经登录了ubuntu服务器,那么您可以在服务器本身拥有root @ localhost,因为root @ localhost拥有所有权限,您无需创建主机并创建权限模式
现在在您的Windows计算机上打开MySql Query Browser
现在连接到localhost(记住这个localhost意味着ubuntu上的localhost)
您可以在Netbeans中使用相同的设置连接到Ubuntu上的Mysql
打开Mysql查询浏览器,您可以在UBUNTU上使用您的数据库
关闭New Connection Wizard
后
在Mysql Ubuntu上创建所有数据库的新连接。
答案 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