为了账号安全,请及时绑定邮箱和手机立即绑定

允许从任何IP地址远程访问MySQL数据库

允许从任何IP地址远程访问MySQL数据库

元芳怎么了 2019-07-03 13:58:18
允许从任何IP地址远程访问MySQL数据库我知道这一命令:GRANT ALL PRIVILEGESON database.*TO 'user'@'yourremotehost'IDENTIFIED BY 'newpassword';但是它只允许我授予一个特定的IP地址来访问这个远程MySQL数据库。如果我需要它,以便任何远程主机都可以访问这个MySQL数据库,该怎么办?我该怎么做?基本上,我把这个数据库公之于众,这样每个人都可以访问它。
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

如果您试图从远程计算机连接到MySQL服务器,并遇到如下所示的错误,那么请启用远程访问(Grant)Home/tutorials/mysql/EnableRemoteAccess(GRANT),本文是为您准备的。

错误1130(HY000):主机‘1.2.3.4’不允许连接到此MySQL服务器

更改MySQL配置

从编辑MySQL配置文件开始

vim /etc/mysql/my.cnf

注释掉以下几行。

#bind-address           = 127.0.0.1#skip-networking

如果您没有找到跳转网络线路,添加它并注释掉它。

重新启动MySQL服务器。

~ /etc/init.d/mysql restart

更改授予特权

您可能会惊讶地看到,即使在上述更改之后,您也没有获得远程访问或访问,但并不能访问所有数据库。

默认情况下,允许您使用MySQL用户名和密码在本地访问MySQL-服务器。所以需要更新特权。

运行下面的命令从所有机器访问。(替换USERNAMEPASSWORD)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

运行下面的命令,从特定的IP提供访问权限。(替换USERNAMEPASSWORD)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

您可以用您的IP替换1.2.3.4。您可以多次运行以上命令来授予来自多个IP的访问权限。

您还可以指定一个单独的USERNAME & PASSWORD远程访问。

您可以通过以下方式检查最终结果:

SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";

最后,还可能需要运行:

mysql> FLUSH PRIVILEGES;

试验连接

从终端/命令行:

mysql -h HOST -u USERNAME -pPASSWORD

如果获得MySQLshell,请不要忘记运行Show数据库;检查您是否拥有来自远程计算机的正确权限。

奖励-提示:撤销访问权限

如果您不小心将访问权限授予用户,那么最好在方便的情况下使用撤消选项。

以下将从所有机器中撤消用户名的所有选项:

mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';Following will revoke all options for USERNAME from particular IP:mysql>
 REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
 Its better to check information_schema.user_privileges table after running REVOKE command.

如果在运行REVOKE命令后看到使用特权,则可以。这和没有特权一样好。我不知道是否可以撤销。


查看完整回答
反对 回复 2019-07-03
?
当年话下

TA贡献1890条经验 获得超9个赞

假设上述步骤已经完成,MySQL端口3306可以远程访问;不要忘记绑定MySQL配置文件中的公共IP地址。

例如,在我的ubuntu服务器上:

#nano /etc/mysql/my.cnf

在文件中,搜索[米舍尔德]块并添加新的绑定地址,在本例中为192.168.0.116。它看起来会像这样

......    .....    
# Instead of skip-networking the default is now to listen only on# localhost which is more compatible and is not less secure.bind-address  
      = 127.0.0.1    bind-address        = 192.168.0.116.....    ......

如果您选择的话,您可以删除此localhost(127.0.0.1)绑定,但是您必须指定一个IP地址来访问本地机器上的服务器。

最后一步是重新启动MySQL服务器(在ubuntu上)

stop mysqlstart mysql

#/etc/init.d/mysql restart其他系统

现在,可以通过以下方式远程访问MySQL数据库:

mysql -u username -h 192.168.0.116 -p


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 990 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信