踩坑日记:MySQL 远程访问配置

我们在项目开发过程中,不可避免会使用到数据库,如果数据库部署在本地,当项目在别的机器上启动时就不能访问原来的数据库了,这对我们的开发带来了极大的不便,所以通常会将数据库部署在远程服务器上,便于在不同机器上都能访问数据库。

MySQL 作为常用数据库之一,其远程访问的配置有点坑,折腾了好久才配置成功,本文就记录下本次踩坑经历。

安装 MySQL

首先我们需要在服务器上安装 MySQL,我使用的服务器镜像为 Ubuntu 22.04.3 LTS

首先,更新一下软件包列表,便于安装较新的 MySQL。

1
sudo apt-get update

然后使用以下命令即可安装 mysql-server

1
sudo apt-get install mysql-server

安装过程中出现上述界面,直接回车选择 dbus.service 即可。

之后,MySQL 服务就安装完成并启动了,输入下列命令可以查看服务状态。

1
sudo systemctl status mysql

看到 active (running) 字样说明 MySQL 服务运行正常。

配置远程访问

创建用户

一般来说,不建议使用 root 用户作为远程访问的用户,可以单独创建一个用户。

首先,使用下列命令以 root 用户身份进入 MySQL 客户端

1
sudo mysql

然后创建一个新用户:

1
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';

@'%' 表示可以从任何地方连接,如果使用 @localhost 则只能从本机连接,也可以设置为 @'你的ip' 使得只能你的机器连接,从而确保数据库安全。

赋予用户权限

为了让用户有权限操作数据库,我们需要对用户赋予权限

1
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';

ON *.* 代表授予所有数据库完全的权限,你也可以指定数据库,只给用户特定的权限。

然后执行FLUSH PRIVILEGES命令来使权限更改生效:

1
FLUSH PRIVILEGES;

到这一步就结束了吗?

当然没有!

网上很多教程到这一步就结束了,然后当我们用这个用户去连接远程数据库时,却怎么也连接不上。

因为我们还缺失了最重要的一步。

修改配置文件

msyql 在配置文件中设置了 bind-address = 127.0.0.1,限制了只能本机连接。

打开 /etc/mysql/mysql.conf.d/mysqld.cnf 文件,可以看到 bind-address 被设置成了 127.0.0.1

我们将其修改成 bind-address = 0.0.0.0,即可远程访问数据库了。