CentOS安装MySQL:一步步教你搞定

CentOS 安装 MySQL:一步步教你搞定

MySQL 是一款流行的开源关系型数据库管理系统 (RDBMS),广泛应用于各种 Web 应用程序和服务器环境中。CentOS 作为一款稳定、可靠的企业级 Linux 发行版,是部署 MySQL 的理想选择。本文将详细介绍在 CentOS 上安装和配置 MySQL 的各个步骤,包括不同安装方式、安全性加固、基本管理等,力求让你全面掌握 CentOS 上 MySQL 的部署。

本文主要内容:

  1. 准备工作

    • 系统要求
    • 更新系统
    • 关闭 SELinux 和防火墙 (可选,建议按需配置)
  2. 安装 MySQL (三种方式)

    • 方式一:使用 YUM 包管理器 (推荐)
    • 方式二:使用 MySQL 官方 YUM 仓库
    • 方式三:从源码编译安装 (较复杂,适合高级用户)
  3. 启动和配置 MySQL

    • 启动 MySQL 服务
    • 设置开机自启动
    • 运行安全配置脚本 (mysql_secure_installation)
  4. MySQL 基本管理

    • 连接到 MySQL 服务器
    • 创建数据库和用户
    • 授权用户访问数据库
    • 导入和导出数据
    • 查看 MySQL 状态和日志
  5. MySQL 安全性加固 (进阶)

    • 修改 root 用户密码
    • 删除匿名用户
    • 禁用远程 root 登录
    • 限制特定 IP 地址访问
    • 配置 SSL/TLS 加密连接
  6. 常见问题及解决方案

    • 无法启动 MySQL 服务
    • 忘记 root 密码
    • 远程连接失败
    • 性能调优
  7. 总结


1. 准备工作

在开始安装 MySQL 之前,我们需要做一些准备工作,确保系统满足要求并处于最佳状态。

1.1 系统要求

  • CentOS 版本: 本文以 CentOS 7 和 CentOS 8 为例,其他版本可能略有差异。
  • 硬件要求: 建议至少 1GB 内存和 10GB 可用磁盘空间,具体取决于你的数据库规模。
  • 网络连接: 确保服务器可以访问互联网,以便下载软件包。

1.2 更新系统

在安装任何新软件之前,强烈建议更新系统到最新状态,以获取最新的安全补丁和软件包。

bash
sudo yum update -y

1.3 关闭 SELinux 和防火墙 (可选)

SELinux (Security-Enhanced Linux) 和防火墙是 CentOS 的安全机制,但在某些情况下可能会干扰 MySQL 的安装和运行。如果你不熟悉 SELinux 和防火墙的配置,可以暂时关闭它们 (生产环境中建议按需配置):

  • 关闭 SELinux:

    bash
    sudo setenforce 0 # 临时关闭
    sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 永久关闭 (需重启)

  • 关闭防火墙:

    ```bash

    CentOS 7

    sudo systemctl stop firewalld
    sudo systemctl disable firewalld

    CentOS 8

    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    或者bash
    sudo firewall-cmd --add-port=3306/tcp --permanent #如果需要开启3306端口,执行这个命令
    sudo firewall-cmd --reload #重新加载防火墙规则
    ```

注意: 在生产环境中,强烈建议配置 SELinux 和防火墙,只允许必要的流量通过,以提高服务器安全性。

2. 安装 MySQL (三种方式)

CentOS 上安装 MySQL 有多种方式,我们将介绍三种最常用的方法:

方式一:使用 YUM 包管理器 (推荐)

这是最简单快捷的方式,CentOS 的默认 YUM 仓库通常包含 MySQL 软件包。

  1. 安装 MySQL:

    ```bash

    CentOS 7

    sudo yum install mysql-server -y

    CentOS 8 (MySQL 8.0 默认在 AppStream 仓库中)

    sudo yum install @mysql -y
    ```

  2. 验证安装:

    bash
    mysql --version

    如果安装成功,将显示 MySQL 的版本信息。

方式二:使用 MySQL 官方 YUM 仓库

如果 CentOS 默认仓库中的 MySQL 版本较旧,或者你需要特定版本的 MySQL,可以使用 MySQL 官方提供的 YUM 仓库。

  1. 下载 MySQL YUM 仓库配置文件:

    ```bash

    CentOS 7

    wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
    sudo rpm -ivh mysql80-community-release-el7-7.noarch.rpm

    CentOS 8

    wget https://dev.mysql.com/get/mysql80-community-release-el8-7.noarch.rpm
    sudo rpm -ivh mysql80-community-release-el8-7.noarch.rpm
    ```

    你可以根据需要选择其他版本的 MySQL。

  2. 安装 MySQL:

    bash
    sudo yum install mysql-community-server -y

  3. 验证安装:

    bash
    mysql --version

方式三:从源码编译安装 (较复杂,适合高级用户)

如果你需要自定义 MySQL 的编译选项,或者需要安装特定版本的 MySQL 而官方 YUM 仓库没有提供,可以从源码编译安装。

  1. 安装编译所需的依赖:

    bash
    sudo yum install -y gcc gcc-c++ make cmake bison ncurses ncurses-devel

  2. 下载 MySQL 源码包:

    bash
    wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz # 替换为你需要的版本
    tar -xzf mysql-8.0.33.tar.gz
    cd mysql-8.0.33

  3. 配置编译选项:

    bash
    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci

    这些选项可以根据你的需求进行调整。

  4. 编译和安装:

    bash
    make
    sudo make install

    编译过程可能需要较长时间。

  5. 创建 MySQL 用户和组:

    bash
    sudo groupadd mysql
    sudo useradd -g mysql mysql

  6. 初始化 MySQL 数据目录:

    bash
    sudo chown -R mysql:mysql /usr/local/mysql/data
    sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

    初始化完成后,会生成一个临时 root 密码,请记录下来。

  7. 创建 MySQL 配置文件:

    bash
    sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    sudo chmod +x /etc/init.d/mysql

    编辑 /etc/my.cnf 文件,配置 MySQL 的基本参数。

  8. 启动 MySQL 服务:

    bash
    sudo service mysql start

    之后步骤与 YUM 安装方式类似。

3. 启动和配置 MySQL

安装完成后,我们需要启动 MySQL 服务,并进行一些基本的配置。

3.1 启动 MySQL 服务

```bash

CentOS 7

sudo systemctl start mysql

CentOS 8

sudo systemctl start mysqld
```

3.2 设置开机自启动

```bash

CentOS 7

sudo systemctl enable mysql

CentOS 8

sudo systemctl enable mysqld
```

3.3 运行安全配置脚本 (mysql_secure_installation)

MySQL 提供了一个安全配置脚本,用于设置 root 密码、删除匿名用户、禁用远程 root 登录等,强烈建议运行此脚本。

bash
sudo mysql_secure_installation

脚本会提示你进行以下操作:

  • 设置 root 密码: 输入并确认新的 root 密码。
  • 删除匿名用户: 建议删除。
  • 禁用远程 root 登录: 建议禁用,提高安全性。
  • 删除 test 数据库: 建议删除。
  • 重新加载权限表: 使配置生效。

4. MySQL 基本管理

现在,我们可以开始使用 MySQL 了。

4.1 连接到 MySQL 服务器

bash
mysql -u root -p

输入之前设置的 root 密码,即可登录到 MySQL 服务器。

4.2 创建数据库和用户

```sql
-- 创建数据库
CREATE DATABASE mydatabase;

-- 创建用户
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';

-- 授权用户访问数据库
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;
```

  • mydatabase:数据库名称。
  • myuser:用户名。
  • localhost:允许连接的主机 (可以是特定 IP 地址或 % 表示所有主机)。
  • mypassword:用户密码。

4.3 导入和导出数据

  • 导出数据:

    bash
    mysqldump -u root -p mydatabase > mydatabase_backup.sql

  • 导入数据:

    bash
    mysql -u root -p mydatabase < mydatabase_backup.sql

4.4 查看 MySQL 状态和日志

  • 查看 MySQL 状态:

    bash
    sudo systemctl status mysql # CentOS 7
    sudo systemctl status mysqld # CentOS 8

  • 查看 MySQL 错误日志:

    bash
    tail -f /var/log/mysqld.log # CentOS 7
    tail -f /var/log/mysql/error.log # CentOS 8 (或根据你的配置)

5. MySQL 安全性加固 (进阶)

为了提高 MySQL 服务器的安全性,建议采取以下措施:

5.1 修改 root 用户密码

sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_strong_password';
FLUSH PRIVILEGES;

5.2 删除匿名用户

sql
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;

5.3 禁用远程 root 登录

编辑 /etc/my.cnf 文件,添加或修改以下行:

ini
[mysqld]
bind-address = 127.0.0.1

重启 MySQL 服务使配置生效。

5.4 限制特定 IP 地址访问

```sql
-- 允许特定 IP 地址访问
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'192.168.1.100' IDENTIFIED BY 'mypassword';

-- 拒绝其他 IP 地址访问
REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'myuser'@'%';

FLUSH PRIVILEGES;
```

5.5 配置 SSL/TLS 加密连接

MySQL 支持 SSL/TLS 加密连接,可以提高数据传输的安全性。具体配置步骤较为复杂,请参考 MySQL 官方文档。

6. 常见问题及解决方案

6.1 无法启动 MySQL 服务

  • 检查错误日志,查看具体错误信息。
  • 检查端口是否被占用。
  • 检查配置文件是否正确。

6.2 忘记 root 密码

  1. 停止 MySQL 服务。
  2. 以跳过权限检查的方式启动 MySQL:
    CentOS 7: sudo mysqld_safe --skip-grant-tables &
    CentOS8: 首先创建一个文件比如 /tmp/mysql_init 并在其中写入:

    sql
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

    然后运行:
    bash
    sudo mysqld --init-file=/tmp/mysql_init &

    3. 连接到 MySQL,修改 root 密码。
    4. 重新启动 MySQL 服务。

6.3 远程连接失败

  • 检查防火墙是否允许 3306 端口的流量。
  • 检查 MySQL 是否绑定到正确的 IP 地址 (bind-address)。
  • 检查用户是否有远程访问权限。

6.4 性能调优

  • 调整 MySQL 配置文件中的参数 (如 innodb_buffer_pool_size)。
  • 优化查询语句。
  • 使用索引。

7. 总结

本文详细介绍了在 CentOS 上安装和配置 MySQL 的各个步骤,包括不同安装方式、安全性加固、基本管理等。希望通过本文,你能够成功在 CentOS 上部署和管理 MySQL 数据库,为你的应用程序提供稳定可靠的数据存储服务。记住,安全性和性能优化是数据库管理的重要方面,需要持续关注和改进。

希望这篇文章对你有帮助!如果有任何问题,请随时提问。

THE END