在云服务器上安装配置 MySQL 并开启远程访问(详细教程)

前言

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

环境准备

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

1. 在云服务器上安装 MySQL

1.1 更新软件包列表

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

bash 复制代码
sudo apt-get update
1.2 安装 MySQL

执行以下命令安装 MySQL:

bash 复制代码
sudo apt-get install mysql-server

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

1.3 验证 MySQL 安装

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

bash 复制代码
sudo systemctl status mysql

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


2. 启动并配置 MySQL 服务

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

2.1 启动 MySQL 服务

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

bash 复制代码
sudo systemctl start mysql
2.2 设置 MySQL 随系统启动

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

bash 复制代码
sudo systemctl enable mysql

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


3. 运行安全配置向导

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

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

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

bash 复制代码
sudo mysql_secure_installation

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


4. 配置 MySQL 允许远程访问

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

4.1 修改 MySQL 配置文件

打开 MySQL 的配置文件 mysqld.cnf

bash 复制代码
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

找到以下行:

bash 复制代码
bind-address = 127.0.0.1

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

bash 复制代码
bind-address = 0.0.0.0

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

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

4.2 重启 MySQL 服务

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

bash 复制代码
sudo systemctl restart mysql

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

5.1 允许 root 用户远程访问

登录 MySQL 控制台:

bash 复制代码
mysql -u root -p

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

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

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

bash 复制代码
SELECT host, user FROM mysql.user WHERE user = 'root';

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


6. 开放 3306 端口

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

6.1 配置本地防火墙

查看当前防火墙状态:

bash 复制代码
sudo ufw status

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

bash 复制代码
sudo ufw allow 3306/tcp
6.2 配置阿里云安全组

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

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

在本地电脑上打开 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,如:

bash 复制代码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY 'your_password';

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

相关推荐
苹果醋31 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
了一li1 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
码农君莫笑2 小时前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
别致的影分身2 小时前
使用C语言连接MySQL
数据库·mysql
过过过呀Glik2 小时前
在 Ubuntu 上安装 MySQL 的详细指南
mysql·ubuntu
京东零售技术4 小时前
“慢”增长时代的企业数据体系建设:超越数据中台
数据库
sdaxue.com4 小时前
帝国CMS:如何去掉帝国CMS登录界面的认证码登录
数据库·github·网站·帝国cms·认证码
o(╥﹏╥)5 小时前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
阿里嘎多学长5 小时前
docker怎么部署高斯数据库
运维·数据库·docker·容器
Yuan_o_5 小时前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端