允许从任何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个回答

8
GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'

5

编辑文件:

/etc/mysql/percona-server.cnf

在文件中添加以下代码:

[mysqld] bind-address=0.0.0.0

创建远程访问用户。

$ mysql -u root -p      
mysql> GRANT ALL ON *.* to snippetbucketdotcom@'%' IDENTIFIED BY 'tejastank';   
mysql> FLUSH PRIVILEGES;    
mysql> exit

所有Linux服务器都适用

在MSWin中查找安装位置和文件路径的方法


[mysqld] 需要添加到文件中,否则无法正常工作。 - Tejas Tank

5
  • 使用管理员用户启动MYSQL
    • mysql -u admin-user -p(在提示符上输入密码)
  • 创建新用户:
    • CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';(% -> 任何主机)
  • 授予权限:
    • GRANT SELECT,DELETE,INSERT,UPDATE ON db_name.* TO 'newuser'@'%';
    • FLUSH PRIVILEGES;

如果您正在运行EC2实例,请不要忘记在安全组中添加MYSQL / Aurura的入站规则。


3

打开你的mysql控制台并执行以下命令(输入你的数据库名,用户名和密码):

GRANT ALL ON yourdatabasename.* TO admin@'%' IDENTIFIED BY 'yourRootPassword';

然后执行:

FLUSH PRIVILEGES;

打开命令行并使用具有root权限的任何编辑器打开文件/etc/mysql/mysql.conf.d/mysqld.cnf

例如:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

然后注释掉以下行:

bind-address = 127.0.0.1

使用以下命令重新启动mysql以反映更改:

sudo service mysql restart

请享受 ;)


3
只需在某个数据库中创建用户,例如 GRANT ALL PRIVILEGES ON <database_name>.* TO '<username>'@'%' IDENTIFIED BY '<password>' 然后转到sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf并将行bind-address = 127.0.0.1更改为bind-address = 0.0.0.0
之后,您可以从任何IP连接到该数据库。

2
你需要更改mysql配置文件:
开始编辑mysql配置文件。
vim /etc/mysql/my.cnf

添加:

bind-address = 0.0.0.0

1

请前往目录 "/etc/mysql/mysql.conf.d",然后编辑文件 "mysqld.cnf"。

$nano mysqld.cnf

bind-address            = 127.0.0.1

mysqlx-bind-address     = 127.0.0.1

edit to

bind-address            = 0.0.0.0

mysqlx-bind-address     = 0.0.0.0

1
在Ubuntu上起作用的方法是授予用户所有权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;

并在/etc/mysql/mysql.conf.d/mysqld.cnf中设置绑定地址:

bind-address            = 0.0.0.0

然后重新启动mysql守护进程:

service mysql restart

0
在网站面板中,例如cPanel,您可以在允许的主机名中添加一个单独的%(百分号)来访问您的MySQL数据库。
通过添加一个单独的%,您可以从任何IP地址或网站甚至桌面应用程序访问您的数据库。

请不要像面对一个明确的查询一样提及类似cPanel这样的事物,这样做永远不会给其他人展示出工作结果。 - Tobias Hagenbeek
@TobiasHagenbeek 谢谢您的反馈。这种方法/技巧不是我发明的(在互联网上很常见)。但我是这种方法的测试者之一,我发现这是最简单和有效的方法,所以我在这里发布了它。我知道这种方法存在一些安全风险,但可以忽略不计。 - Muhammad Saqib

0

例如在我的CentOS中

sudo gedit /etc/mysql/my.cnf

注释掉以下行

#bind-address = 127.0.0.1

然后执行

sudo service mysqld restart


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