在云服务器上安装配置 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 的主机访问数据库。

相关推荐
Zhen (Evan) Wang11 分钟前
SQL Server Service Broker启用详解以及常见问题
数据库·sqlserver
马克学长19 分钟前
SSM文创产品推荐系统设计与实现95ml5(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·高校学生管理数字化·ssm 框架应用·商品分类与信息管理
hzk的学习笔记26 分钟前
Redisson 的 Watchdog 机制
数据库·redis·分布式·缓存
罗光记35 分钟前
夜晚的梦
数据库·其他·百度·新浪微博·segmentfault
韩立学长39 分钟前
基于Springboot的智慧管网灌溉系统i1agupa7(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
一 乐39 分钟前
高校教务|教务管理|基于springboot+vue的高校教务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·教务管理
数字冰雹39 分钟前
重塑城市公共安全管理的“智慧之眼”
java·大数据·数据库
还是奇怪1 小时前
隐藏在字符编码中的陷阱:深入剖析宽字节注入
数据库·sql·安全·web安全
翻斗花园牛图图-1 小时前
MySQL——表的操作
数据库·mysql
August_._1 小时前
【MySQL】触发器、日志、锁机制 深度解析
java·大数据·数据库·人工智能·后端·mysql·青少年编程