0


如何设置 MySQL 允许远程访问

设置远程 MySQL 数据库

许多网站和应用程序最初都是将其 Web 服务器和数据库后端托管在同一台机器上。然而,随着时间的推移,这样的设置可能变得繁琐且难以扩展。一个常见的解决方案是通过设置远程数据库来分离这些功能,允许服务器和数据库在各自的机器上以自己的速度增长。

当用户尝试设置远程 MySQL 数据库时,他们经常遇到的一个常见问题是他们的 MySQL 实例只配置为监听本地连接。这是 MySQL 的默认设置,但对于远程数据库设置来说是行不通的,因为 MySQL 必须能够监听服务器可以访问的 外部 IP 地址。要启用此功能,请打开您的

mysqld.cnf

文件:

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

导航到以

bind-address

指令开头的行。它看起来像这样:

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# 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
. . .

默认情况下,此值设置为

127.0.0.1

,这意味着服务器只会寻找本地连接。您需要将此指令更改为引用外部 IP 地址。为了进行故障排除,您可以将此指令设置为通配符 IP 地址,即

*

::

0.0.0.0

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0
. . .

更改此行后,保存并关闭文件(如果您使用

nano

进行编辑,则按

CTRL + X

,然后输入

Y

,最后按

ENTER

)。

然后重新启动 MySQL 服务以使您对

mysqld.cnf

所做的更改生效:

sudo systemctl restart mysql

如果您有一个现有的 MySQL 用户帐户,您计划使用它从远程主机连接到数据库,您需要重新配置该帐户,以便从远程服务器而不是 localhost 连接。为此,请以您的 root MySQL 用户或其他特权用户帐户打开 MySQL 客户端:

sudo mysql

如果您已为 root 启用了密码验证,则需要使用以下命令访问 MySQL shell:

mysql -u root -p

要更改用户的主机,您可以使用 MySQL 的

RENAME USER

命令。运行以下命令,确保将

sammy

更改为您的 MySQL 用户帐户的名称,将

remote_server_ip

更改为您的远程服务器的 IP 地址:

RENAME USER 'sammy'@'localhost' TO 'sammy'@'remote_server_ip';

或者,您可以使用以下命令创建一个新的用户帐户,该帐户将仅从远程主机连接:

CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED BY 'password';

然后为新用户授予适合您特定需求的适当权限。以下示例为用户授予全局权限,以

CREATE

ALTER

DROP

数据库、表和用户,以及在服务器上的任何表中使用

INSERT

UPDATE

DELETE

数据的权限。它还授予用户使用

SELECT

查询数据,使用

REFERENCES

关键字创建外键,以及使用

RELOAD

权限执行

FLUSH

操作的能力。但是,您应该只授予用户他们需要的权限,因此请根据需要自行调整您自己用户的权限。

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'remote_server_ip' WITH GRANT OPTION;

完成后,最好运行

FLUSH PRIVILEGES

命令。这将释放由前面的

CREATE USER

GRANT

语句缓存的服务器内存:

FLUSH PRIVILEGES;

然后您可以退出 MySQL 客户端:

exit

最后,假设您在数据库服务器上配置了防火墙,您还需要打开端口

3306

—— MySQL 的默认端口 —— 以允许流量访问 MySQL。

如果您只计划从一台特定的机器访问数据库服务器,您可以使用以下命令授予该机器专属权限以远程连接到数据库。确保将

remote_IP_address

替换为您计划连接的机器的实际 IP 地址:

sudo ufw allow from remote_IP_address to any port 3306

如果将来需要从其他机器访问数据库,您可以使用以下命令根据需要临时授予它们访问权限。只需记住包括它们各自的 IP 地址。

或者,您可以使用以下命令允许从 任何 IP 地址连接到您的 MySQL 数据库:

sudo ufw allow 3306

完成后,尝试从另一台机器远程访问您的数据库:

[environment second]
mysql -u user -h database_server_ip -p

如果您能够访问您的数据库,则确认您配置文件中的

bind-address

指令是问题所在。请注意,将

bind-address

设置为

0.0.0.0

是不安全的,因为它允许从任何 IP 地址连接到您的服务器。另一方面,如果您仍然无法远程访问数据库,则可能是其他原因导致的问题。

标签: mysql 数据库

本文转载自: https://blog.csdn.net/xuanunix/article/details/135770119
版权归原作者 张无忌打怪兽 所有, 如有侵权,请联系我们删除。

“如何设置 MySQL 允许远程访问”的评论:

还没有评论