前言

MySQL 是最流行的开源关系数据库之一,常用于开发与生产环境中。本文将详细介绍如何在云服务器(如阿里云)上安装 MySQL,并配置允许从远程主机(如本地电脑)进行访问。

环境准备

  • 操作系统: Ubuntu 18.04 或其他 Linux 发行版
  • 数据库版本: MySQL 5.7
  • 工具: Navicat(本地连接 MySQL 数据库的客户端)

1. 在云服务器上安装 MySQL

1.1 更新软件包列表

首先,更新系统中的软件包列表,确保获取到最新的版本:

sudo apt-get update
1.2 安装 MySQL

执行以下命令安装 MySQL:

sudo apt-get install mysql-server

安装完成后,MySQL 服务会自动启动。

1.3 验证 MySQL 安装

通过以下命令检查 MySQL 服务是否成功启动:

sudo systemctl status mysql

如果显示 active (running),则说明 MySQL 安装成功。


2. 启动并配置 MySQL 服务

MySQL 安装完成后,接下来我们需要启动 MySQL 服务,并设置 MySQL 随系统启动。确保服务正确启动是连接和配置 MySQL 的前提。

2.1 启动 MySQL 服务

执行以下命令来启动 MySQL 服务:

sudo systemctl start mysql
2.2 设置 MySQL 随系统启动

为了确保 MySQL 在每次系统重启时自动启动,可以使用以下命令:

sudo systemctl enable mysql

服务器时自动运行 MySQL 服务。


3. 运行安全配置向导

MySQL 安装完成后,建议运行 mysql_secure_installation 命令来进行一些安全配置,提升数据库的安全性。它将引导你完成一系列步骤,例如:

  • 设置 root 密码: 如果 root 用户没有密码,系统将提示你设置一个新的密码。
  • 禁用匿名用户: 匿名用户可能成为安全隐患,建议禁用。
  • 移除测试数据库: 测试数据库是默认存在的,但生产环境中不需要,建议删除。
  • 禁用远程 root 登录: 如果不需要通过远程登录 root 用户,建议禁用以提高安全性。

运行以下命令启动安全配置向导:

sudo mysql_secure_installation

配置完成后,你的 MySQL 实例将更加安全。


4. 配置 MySQL 允许远程访问

默认情况下,MySQL 只允许本地连接。我们需要进行一些配置,使其可以接受远程连接请求。

4.1 修改 MySQL 配置文件

打开 MySQL 的配置文件 mysqld.cnf

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

找到以下行:

bind-address = 127.0.0.1

如果你的 MySQL 没有监听所有网络接口,可以将其修改为:

bind-address = 0.0.0.0

这意味着 MySQL 将接受来自任意 IP 地址的连接请求。

保存并退出编辑器(Ctrl+OCtrl+X)。

4.2 重启 MySQL 服务

配置文件修改后,需要重启 MySQL 服务:

sudo systemctl restart mysql

5. 创建远程访问用户并设置权限

5.1 允许 root 用户远程访问

登录 MySQL 控制台:

mysql -u root -p

输入 root 密码后,执行以下命令,允许 root 用户从任意 IP 地址进行访问:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
.2 验证用户权限

执行以下命令,查看 root 用户的主机权限配置:

SELECT host, user FROM mysql.user WHERE user = 'root';

确保 host 字段中存在 %,这表示允许从任意 IP 地址访问。


6. 开放 3306 端口

MySQL 使用默认的 3306 端口来接受连接。确保服务器的防火墙和云提供商的安全组允许 3306 端口的入站访问。

6.1 配置本地防火墙

查看当前防火墙状态:

sudo ufw status

如果没有开放 3306 端口,可以使用以下命令开放:

sudo ufw allow 3306/tcp
6.2 配置阿里云安全组

在阿里云控制台,找到与实例相关的安全组,添加一条新的规则,允许 TCP 端口 3306 的入站流量:

  • 端口范围: 3306/3306
  • 授权对象: 0.0.0.0/0(允许任意 IP 地址)

7. 使用 Navicat 连接远程 MySQL

在本地电脑上打开 Navicat 或其他数据库客户端,输入云服务器的 IP 地址、MySQL 用户名 root 和密码,使用 3306 端口连接云服务器上的 MySQL。

  1. 连接名: 随意填写
  2. 主机: 云服务器的公网 IP
  3. 端口: 3306
  4. 用户名: root
  5. 密码: 安装时设置的 root 密码

点击 “测试连接”,如果一切配置正确,应该可以成功连接到云服务器上的 MySQL 数据库。


8. 总结

通过以上步骤,您已经成功在云服务器上安装并配置 MySQL,并允许从本地进行远程访问。关键步骤包括启动 MySQL 服务、修改绑定地址、授予远程用户权限,以及确保防火墙和安全组正确配置。此外,运行 mysql_secure_installation 来提升安全性,确保数据库运行在安全的环境中。


常见问题

1. 为什么连接时出现 Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server 错误?

这是因为该主机未被 MySQL 授权访问。请检查是否正确执行了 GRANT ALL PRIVILEGES 语句,并确保重启了 MySQL。

2. 如何只允许特定 IP 地址访问 MySQL?

您可以在 GRANT 语句中将 root 的主机设为特定 IP,如:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY 'your_password';

这将只允许 IP 地址为 192.168.1.100 的主机访问数据库。

09-18 19:28