使用命令行连接远程 MySQL 数据库
当我们在分布式环境中工作时,需要远程连接。本教程是一个分步指南,介绍如何使用命令行连接远程 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
替换为你指定的值。之后,你现在可以从远程位置访问指定的数据库。