凌峰创科服务平台

Linux服务器如何正确部署MySQL?

目录

  1. 第一步:环境准备
    • 更新系统包
    • 检查并卸载旧版 MySQL/MariaDB
  2. 第二步:安装 MySQL (CentOS/RHEL)
    • 添加官方 Yum 仓库
    • 安装 MySQL 服务器
    • 启动并设置开机自启
  3. 第三步:安装 MySQL (Ubuntu/Debian)
    • 添加官方 APT 仓库
    • 安装 MySQL 服务器
    • 启动并设置开机自启
  4. 第四步:安全配置向导 (至关重要)
    • 运行 mysql_secure_installation
    • 详细解释每一步
  5. 第五步:登录 MySQL 并进行基本操作
    • 首次登录
    • 修改 root 密码
    • 创建新用户和数据库
  6. 第六步:配置远程访问 (可选,不推荐)
    • 修改配置文件
    • 防火墙设置
    • 安全风险提示
  7. 第七步:常用管理命令
    • 服务管理
    • 日志查看
    • 数据库备份
  8. 总结与最佳实践

第一步:环境准备

在安装之前,请确保你的服务器满足以下基本要求:

Linux服务器如何正确部署MySQL?-图1
(图片来源网络,侵删)
  • 操作系统: CentOS 7/8, Ubuntu 20.04/22.04 或其他类似发行版。
  • 内存: 至少 2GB (推荐 4GB 或以上)。
  • CPU: 1 核或以上。
  • 权限: 需要 rootsudo 权限。

更新系统包

对于 CentOS/RHEL:

sudo yum update -y

对于 Ubuntu/Debian:

sudo apt update
sudo apt upgrade -y

检查并卸载旧版 MySQL/MariaDB

如果系统上已安装旧版本的 MySQL 或其分支 MariaDB,必须先卸载,否则会引发冲突。

检查是否已安装:

Linux服务器如何正确部署MySQL?-图2
(图片来源网络,侵删)
# CentOS
rpm -qa | grep -i "mysql\|mariadb"
# Ubuntu
dpkg -l | grep -i "mysql\|mariadb"

如果已安装,请卸载: 对于 CentOS:

sudo yum remove mysql-community-server mysql-community-client mysql-community-common mysql-community-libs -y
# 如果是 MariaDB
sudo yum remove mariadb-server mariadb-client -y

对于 Ubuntu:

sudo apt remove --purge mysql-server mysql-client mysql-common -y
# 如果是 MariaDB
sudo apt remove --purge mariadb-server mariadb-client -y

卸载后,最好清理一下残留的配置文件和目录:

# CentOS
sudo rm -rf /var/lib/mysql
# Ubuntu
sudo rm -rf /var/lib/mysql /etc/mysql

第二步:安装 MySQL (CentOS/RHEL)

添加官方 Yum 仓库

MySQL 官方提供了 Yum 仓库,方便我们安装最新、最稳定的版本。

Linux服务器如何正确部署MySQL?-图3
(图片来源网络,侵删)
# 下载并添加 MySQL 官方仓库
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm -y
# 如果是 CentOS 8, 使用 el8
# sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm -y
# 验证仓库是否添加成功
sudo yum repolist enabled "mysql*-community*"

安装 MySQL 服务器

sudo yum install mysql-community-server -y

启动并设置开机自启

# 启动 MySQL 服务
sudo systemctl start mysqld
# 设置开机自启
sudo systemctl enable mysqld
# 查看服务状态
sudo systemctl status mysqld

第三步:安装 MySQL (Ubuntu/Debian)

添加官方 APT 仓库

# 首先安装一些必要的工具
sudo apt install -y wget
# 下载 MySQL APT 仓库配置包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
# 安装下载的配置包 (过程中会弹窗选择版本,选择 "Ok" 即可)
sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb
# 更新 apt 包列表,使新仓库生效
sudo apt update

安装 MySQL 服务器

sudo apt install mysql-server -y

启动并设置开机自启

# 启动 MySQL 服务
sudo systemctl start mysql
# 设置开机自启
sudo systemctl enable mysql
# 查看服务状态
sudo systemctl status mysql

第四步:安全配置向导 (至关重要)

MySQL 提供了一个交互式的脚本 mysql_secure_installation,它会引导你完成一系列重要的安全设置。

运行脚本:

sudo mysql_secure_installation

这个脚本会按顺序执行以下步骤,并给出建议,通常选择 Y (是) 是最安全的选择。

  1. Securing the MySQL server deployment.

    • Press y|Y for Yes, any other key for No: Y
    • 继续。
  2. Would you like to set up VALIDATE PASSWORD plugin?

    • Press y|Y for Yes, any other key for No: Y
    • Please set the password for root here.

      设置一个强密码,脚本会评估密码强度。

    • There are three levels of password validation policy:
      • 0 = LOW (长度)
      • 1 = MEDIUM (长度 + 数字/小写/大写/特殊字符)
      • 2 = STRONG (长度 + 数字/小写/大写/特殊字符 + 字典检查)
      • Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1 (推荐选择 1)
    • 再次输入你设置的密码。
  3. Remove anonymous users?

    • Disallow root login remotely?
    • Remove test database and access to it?
    • Reload privilege tables now?
    • 对于以上所有问题,都回答 Y (是),这些操作会移除不安全的默认设置,增强服务器安全性。
  4. Success! All done!

    脚本执行完毕,你的 MySQL 实例现在已经非常安全了。


第五步:登录 MySQL 并进行基本操作

首次登录

在完成安全配置后,你可以使用以下命令登录 MySQL,注意,在 CentOS 8+ 和一些新版本中,首次登录可能需要使用 auth_socket 插件,所以不需要密码。

sudo mysql

如果提示输入密码,可以直接按回车,因为你是以 root 用户通过 sudo 登录的。

修改 root 密码 (可选)

如果你忘记了密码,或者想更改密码,可以这样做:

-- 退出 MySQL
exit;
-- 停止 MySQL 服务
sudo systemctl stop mysqld
-- 以安全模式启动,跳过权限表
sudo mysqld_safe --skip-grant-tables &
-- 登录 MySQL (此时不需要密码)
mysql -u root
-- 在 MySQL 命令行中执行以下命令
-- 注意:如果你的 MySQL 版本是 8.0+,需要使用 'authentication_string' 字段
UPDATE mysql.user SET authentication_string=PASSWORD('你的新密码') WHERE User='root';
FLUSH PRIVILEGES;
exit;
-- 重启 MySQL 服务,使其加载新的权限表
sudo systemctl restart mysqld

创建新用户和数据库

强烈建议不要直接使用 root 用户进行日常操作!

-- 登录 MySQL
sudo mysql -u root -p
-- 创建一个新数据库
CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建一个新用户,并允许其从任何主机访问 ('%' 表示任何主机)
CREATE USER 'myapp_user'@'%' IDENTIFIED BY '一个强密码';
-- 给新用户授予对数据库的所有权限
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'%';
-- 刷新权限,使更改生效
FLUSH PRIVILEGES;
-- 退出
exit;

第六步:配置远程访问 (可选,不推荐)

出于安全考虑,默认情况下 MySQL 只允许 localhost (本机) 访问,如果你需要从其他机器连接到这台 MySQL 服务器,需要进行如下配置。

⚠️ 安全警告: 开启远程访问会增加服务器的攻击面,请确保你的数据库密码足够强大,并且只允许受信任的 IP 地址访问。

修改配置文件

# 编辑 MySQL 主配置文件
sudo vi /etc/my.cnf  # CentOS
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf # Ubuntu

找到 bind-address = 127.0.0.1 这一行,将其注释掉或修改为 0.0.0,表示监听所有网络接口。

# 将这行
# bind-address = 127.0.0.1
# 修改为
bind-address = 0.0.0.0

保存并退出 (wq)。

防火墙设置

你需要开放 MySQL 的默认端口 3306

对于 CentOS (使用 firewalld):

sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

对于 Ubuntu (使用 ufw):

sudo ufw allow 3306/tcp

重启 MySQL 服务

sudo systemctl restart mysqld

你可以从其他机器使用 myapp_user 和你设置的密码连接到这台 MySQL 服务器了。


第七步:常用管理命令

服务管理

# 启动
sudo systemctl start mysqld
# 停止
sudo systemctl stop mysqld
# 重启
sudo systemctl restart mysqld
# 查看状态
sudo systemctl status mysqld
# 查看开机自启状态
sudo systemctl is-enabled mysqld

日志查看

MySQL 的错误日志通常位于 /var/log/ 目录下。

# CentOS
sudo tail -f /var/log/mysqld.log
# Ubuntu
sudo tail -f /var/log/mysql/error.log

数据库备份

使用 mysqldump 工具进行备份。

# 备份单个数据库
mysqldump -u [用户名] -p [数据库名] > backup.sql
# 备份所有数据库
mysqldump -u [用户名] -p --all-databases > all_backup.sql
# 示例:备份我们创建的 myapp_db
mysqldump -u myapp_user -p myapp_db > myapp_db_backup.sql

执行后会提示输入密码。


第八步:总结与最佳实践

恭喜!你已经成功在 Linux 服务器上部署并配置了 MySQL。

回顾一下关键点:

  1. 使用官方仓库:确保安装的是稳定、安全的官方版本。
  2. 安全配置向导mysql_secure_installation 是新部署的必经之路,请务必运行。
  3. 创建专用用户:永远不要在生产环境中使用 root 用户连接应用数据库。
  4. 强密码策略:为所有用户设置复杂且唯一的密码。
  5. 谨慎开放远程访问:如果必须开放,请严格限制 IP,并使用防火墙。
  6. 定期备份:制定并执行定期的数据库备份计划,这是数据安全的最后一道防线。

遵循这些步骤和最佳实践,你的 MySQL 数据库将拥有一个坚实、安全的基础。

分享:
扫描分享到社交APP
上一篇
下一篇