如何允许通过互联网连接MySQL?

时间:2018-09-22 19:26:30

标签: java mysql sql database jdbc

我有一个通过Java JDBC访问的MySQL数据库,它在我的本地网络中正常工作(使用localhost192.168.*.*本地地址)。但是我也想从Internet远程访问它,当我使用全局地址176.214.186.243连接到它时(它是dynamyc地址,但在我尝试尝试的两天内保持静止),我遇到下一个错误com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 在MySQL工作台中,我在Picture上显示了特权(所有特权。 但是我仍然无法使用全局IP连接到数据库。

我在做什么错了?

2 个答案:

答案 0 :(得分:0)

您应授予指定的用户访问特定IP地址的权限,例如:

  

将schema.table上的[特权|所有特权]授予“用户名” @“主机名”       由“密码”标识
      可以选择;   冲洗特权;

  • 特权可以是选择,删除和...之类的操作名称,或者如果您想将所有特权授予用户集“ ALL PRIVILEGES”
  • schema.table可以只指定一个表,也可以是之类的东西,以支持所有模式和表。
  • 用户名(也称为角色)是显而易见的,但是可以%授予所有用户给定的特权。
  • 主机名可以是ip或主机名,也可以像用户名一样,可以是%,以向指定用户授予给定特权。

有关更多信息,请使用https://dev.mysql.com/doc/refman/8.0/en/grant.htmlhttps://stackoverflow.com/a/6239145/2137378

更喜欢mysql文档。检查您的mysql版本,并继续关于mysql的确切版本文档。

当然,以上描述是为了让mysql引擎知道其远程用户,并且这两者之间是否存在障碍,例如应该以某种方式解决防火墙。例如如果您使用的是ubuntu,则可以使用以下方法将其禁用来检查防火墙是否是主要问题:

sudo ufw disable

在禁用防火墙并授予特权之后,可以进行远程访问,那么您就知道防火墙是问题所在。如果使用则启用:

sudo ufw enable

答案 1 :(得分:0)

mysql限制对用户,表和远程地址的任何组合的访问。在您的情况下,用户很可能可以在本地访问所有内容,但不能从外部访问(例如,对于root用户来说这是一件好事)。可以通过以下方式更改:

GRANT ALL ON <database>.* TO 'client'@'%.%.%.%' IDENTIFIED BY '<a password for external usage>';
FLUSH PRIVILEGES;
  • <database>.*授予对<database>中alle表的访问权限
  • 我已经添加了您的用户名,该用户名似乎是client
  • %.%.%.%表示1.-4处的任何IP地址。数字可以是任何东西
    • 也许您可以限制IP的范围或改用FQDN
  • <a password for external usage>仅用于此连接,可以是其他连接。

更多信息here