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

346

我知道这个命令:

GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';

但是它只允许我授予特定的IP地址访问这个远程MySQL数据库。如果我想让任何远程主机都可以访问这个MySQL数据库呢?我该怎么做?基本上我要把这个数据库公开,让每个人都能够访问它。


3
在进行此操作之前,请考虑安全影响:http://security.stackexchange.com/questions/63881/is-it-not-safe-to-open-mysqls-port-to-the-internet - e18r
23
并非每个系统都是生产系统,有些人需要它来进行开发。 - Conrad Jones
我可以从本地机器访问托管在cPanel上的远程数据库,但从另一个cPanel上无法访问。显示了这个错误:SequelizeConnectionRefusedError。 - undefined
24个回答

0

我看到有很多答案,但它们都相当冗长,除了被接受的答案之外,它相当简短且缺乏解释。由于我无法编辑它,因此我正在添加我的答案。Adit问:

将此数据库公开以便每个人都可以访问

GRANT ALL PRIVILEGES
ON database.*
TO 'username'@'remote_host'
IDENTIFIED BY 'password';

以上代码授予了来自给定远程主机的用户权限,您可以通过将TO 'username'@'yourremotehost'更改为TO 'username'@'%'来允许用户从任何远程主机连接到MySQL。

因此,授予用户从任何远程主机连接权限的纠正查询为:

GRANT ALL PRIVILEGES
ON database.*
TO 'username'@'%'
IDENTIFIED BY 'password';

0
如果您想从任何IP地址授予数据库远程访问权限,请运行mysql命令,然后运行以下命令。
GRANT ALL PRIVILEGES ON *.*
TO 'root'@'%' 
IDENTIFIED BY 'password' 
WITH GRANT OPTION;

-1
要允许从任何IP地址远程访问MySQL数据库,您可以按照以下步骤操作:
1. 使用MySQL客户端(如MySQL Workbench或MySQL命令行客户端)连接到您的MySQL服务器。 2. 运行以下命令以允许来自任何IP地址的访问:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

USERNAMEPASSWORD替换为您的MySQL用户名和密码。此命令将授予用户USERNAME来自任何IP地址的所有权限。
  1. 如果您想从特定的IP地址授予访问权限,请将%替换为您要授予访问权限的IP地址:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

1.2.3.4 替换为您想要授予访问权限的 IP 地址。
  1. 如果您想要从多个 IP 地址授予访问权限,可以多次运行该命令并使用不同的 IP 地址。

  2. 最后,运行以下命令来刷新权限:

FLUSH PRIVILEGES;

这将确保更改立即生效。
请注意,从任何IP地址授予访问权限可能存在安全风险,因此建议仅从您信任的特定IP地址授予访问权限。此外,您可能需要配置防火墙以允许远程机器对MySQL端口(默认为3306)进行传入连接[1]。
引用: [1] https://linuxize.com/post/mysql-remote-access/

2
你在这里的许多回答,包括一些你为某种原因创建了社区维基页面的回答,似乎很可能是完全或部分由人工智能(例如ChatGPT)编写的。请注意,在这里发布由人工智能生成的内容是不允许的(//meta.stackoverflow.com/q/421831)。如果你在任何回答中使用了人工智能工具进行辅助,请考虑删除它。谢谢! - NotTheDr01ds
1
读者应该仔细而批判地审查这个答案,因为由人工智能生成的信息往往包含基本错误和错误信息。如果您发现质量问题和/或有理由相信这个答案是由人工智能生成的,请相应地提供反馈。审核团队需要您的帮助来识别质量问题。 - NotTheDr01ds
这个回答看起来像是由人工智能(如ChatGPT)生成的,而不是由真正的人类生成的。你应该知道,在Stack Overflow上发布由AI生成的内容是被禁止。如果这个回答确实是由AI生成的,那么我强烈建议你在陷入更大麻烦之前删除它:我们在这里非常重视抄袭问题。请阅读:为什么目前不接受发布GPT和ChatGPT生成的回答 - tchrist

-11
你可以通过编辑 /etc/my.cnf 来禁用所有安全性:
skip-grant-tables

这将移除所有密码要求。 - kristopolous
5
请注意,在生产环境中不建议启用此选项,因为这会允许任何人在没有密码的情况下连接! - AStopher
2
然而,这非常适合开发环境。 - DMCoding
这会让人们在不使用密码的情况下侵入您的数据库。 - MilkyWay90
2
@DanielJames 即便是为了开发环境,这也是个糟糕的主意。 - Dragas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接