当我们在分布式环境中工作时,需要远程连接。本教程是一个分步指南,介绍如何使用命令行连接远程 MySQL 数据库。
使用命令行连接远程 MySQL 数据库
在继续之前,有必要先做几件事——访问命令行或终端窗口以及在另一个位置(远程 MySQL 服务器)上运行的 MySQL 服务器。
我们还需要远程和本地机器上的 root 或 sudo 权限。如果你无法直接访问 MySQL 服务器,也可以使用 ssh 进行远程连接。
如果你想使用 ssh 进行连接,你可以使用 this article。
本教程将指导你使用命令行与 MySQL 数据库建立远程连接。它包括以下步骤。
编辑 MySQL config 文件配置防火墙允许远程连接允许 root 远程登录连接到远程 MySQL 服务器
以下是每个步骤的详细信息。
编辑 MySQL config 文件
使用以下命令在文本编辑器中打开 config 文件。我们使用 nano 文本编辑器,但你可以使用任何你觉得舒服的文本编辑器。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
假设我们忘记或不知道 config 文件的路径,那么我们可以使用 find 命令知道 config 文件的位置。打开 config 文件后,搜索 [mysqld] 部分。
在 [mysqld] 部分下,找到 bind-address 并将其值从 127.0.0.1 更改为 0.0.0.0 或使用 # 符号注释此行。
更新 bind-address 选项的原因是什么?由于默认设置,我们可以使用 IP 地址为 127.0.0.1 的本地计算机连接到该服务器。
我们允许所有机器远程连接此服务器,方法是使用 # 符号评论此选项或将其值替换为 0.0.0.0。
如果我们只想远程连接一台机器,我们可以写我们主机的 IP 地址而不是 0.0.0.0。完成更改后,保存并退出文件。
要应用更新,请使用以下命令重新启动 MySQL 服务器。
sudo systemctl restart mysql
配置防火墙以允许远程连接
在 config 文件中配置 bind-address 时,你可能已经观察到默认 MySQL 端口是 3306。在这里,我们将调整设置以允许远程流量到 MySQL 的默认端口,即 3306。
在打开流量之前,我们必须正确【配置防火墙】。完成后,我们可以使用下面给出的命令打开此特定端口的流量。
由于我们使用的是 Ubuntu 20.04,我们将使用 ufw(简单的防火墙)。
sudo ufw allow from your_remote_ip_address to any port 3306
只要我们按下Enter,我们就会看到规则更新成功了。
允许 Root 远程登录
由于其默认设置,我们可以使用本地计算机连接到 root。我们需要进行一些更改以允许远程机器以 root 身份连接。
为此,请使用以下命令。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
mysql> UPDATE mysql.user SET host='%' WHERE user='root';
然后,使用 systemctl 重新启动 MySQL 服务器,如下所示。
sudo systemctl restart mysql
连接到远程 MySQL 服务器
一旦远程 MySQL 服务器准备好接受远程连接,我们可以使用以下命令与我们的远程 MySQL 服务器建立连接。
mysql -u your_username -h your_mysql_server_ip -p
在这里,将 your_username 替换为你的用户名,将 your_mysql_server_ip 替换为你的 IP。你也可以使用你的 MySQL 服务器的 hostname。
-p 将要求你输入你在上面给出的命令中使用的用户名的密码。
如果你已正确完成所有操作,你将最终连接到远程 MySQL 服务器。要授予对数据库的远程访问权限,我们可以执行以下查询。
mysql> update db set Host='ip_address' where
-> Db='yourDB_name';
mysql> update user set Host='ip_address' where
-> user='username';
将 username、Host 和 Db 替换为你指定的值。之后,你现在可以从远程位置访问指定的数据库。