CentOS服务器安装MySQL数据库教程

CentOS 服务器安装 MySQL 数据库详细教程

本文将详细介绍在 CentOS 服务器上安装 MySQL 数据库的步骤,涵盖了从准备环境到配置安全性的整个过程。我们将使用 YUM 包管理器进行安装,这是 CentOS 上最常用的方法。本文以 CentOS 7 和 CentOS 8 为例,并指出两者之间的细微差别。

一、 准备工作

  1. 服务器环境: 确保你的 CentOS 服务器已连接到互联网,并且具有 root 用户权限或 sudo 权限。

  2. 更新系统: 在开始安装之前,建议更新系统软件包到最新版本,以确保获得最新的安全补丁和功能:

    bash
    sudo yum update -y

  3. 检查是否已安装MySQL (可选): 如果你不确定服务器上是否已经安装了MySQL,可以使用以下命令检查:

    bash
    rpm -qa | grep mysql

    如果没有任何输出,说明没有安装。如果有输出,表示已经安装了某个版本的MySQL,你可以选择卸载旧版本或进行版本升级(本文不涉及升级步骤)。

二、 安装 MySQL (CentOS 7)

CentOS 7 默认的 YUM 仓库中可能包含较旧的 MySQL 版本。为了安装较新的版本(如 MySQL 8.0),我们需要先添加 MySQL 的官方 YUM 仓库。

  1. 添加 MySQL YUM 仓库:

    • 下载仓库配置文件:

      bash
      sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

      (注意:el7-7 中的数字可能会根据最新版本而变化,请访问 MySQL YUM Repository 页面获取最新的下载链接。)

    • 验证仓库包:

      sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

  2. 安装 MySQL 服务器:

    bash
    sudo yum install mysql-community-server -y

  3. 启动 MySQL 服务:

    bash
    sudo systemctl start mysqld

  4. 设置开机自启动:

    bash
    sudo systemctl enable mysqld

  5. 检查 MySQL 服务状态:

    bash
    sudo systemctl status mysqld

    如果看到 "active (running)",则表示 MySQL 服务已成功启动。

三、 安装 MySQL (CentOS 8)

CentOS 8 的 AppStream 仓库中已经包含了 MySQL 8.0,因此安装过程相对简单。

  1. 安装 MySQL 服务器:

    bash
    sudo yum install @mysql -y

    或者
    bash
    sudo dnf install @mysql -y

    @mysql 是一个模块流,它包含了 MySQL 及其相关组件。

  2. 启动 MySQL 服务:

    bash
    sudo systemctl start mysqld

  3. 设置开机自启动:

    bash
    sudo systemctl enable mysqld

  4. 检查 MySQL 服务状态:

    bash
    sudo systemctl status mysqld

四、 安全配置 MySQL

安装完成后,MySQL 的默认配置并不安全。我们需要运行 mysql_secure_installation 脚本来进行安全设置。

  1. 运行安全配置脚本:

    bash
    sudo mysql_secure_installation

  2. 脚本会询问一系列问题,以增强安全性:

    • VALIDATE PASSWORD PLUGIN (CentOS 8, 可选): 是否启用密码强度验证插件?建议启用,输入 y 并选择密码强度级别(0-LOW, 1-MEDIUM, 2-STRONG)。CentOS 7 上没有这个选项。
    • Set root password? 设置 root 用户的密码。输入 y 并设置一个强密码(包含大小写字母、数字和特殊字符)。请务必记住这个密码!
    • Remove anonymous users? 移除匿名用户?输入 y
    • Disallow root login remotely? 禁止 root 用户远程登录? 出于安全考虑,建议输入 y。如果需要远程管理,可以创建一个具有特定权限的非 root 用户。
    • Remove test database and access to it? 移除测试数据库和对它的访问权限?输入 y
    • Reload privilege tables now? 立即重新加载权限表?输入 y

五、 登录 MySQL

现在,你可以使用新设置的 root 密码登录 MySQL 了:

bash
mysql -u root -p

系统会提示你输入密码,输入你刚刚设置的 root 密码即可。

成功登录后,你会看到 MySQL 的提示符:

mysql>

六、 基本 MySQL 命令 (示例)

登录 MySQL 后,你可以执行各种 SQL 命令来管理数据库。以下是一些常用的命令:

  • 显示所有数据库:

    sql
    SHOW DATABASES;

  • 创建数据库:

    sql
    CREATE DATABASE mydatabase;

  • 使用数据库:

    sql
    USE mydatabase;

  • 创建表:

    sql
    CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL
    );

  • 插入数据:

    sql
    INSERT INTO users (username, password) VALUES ('john_doe', 'secure_password');

  • 查询数据:

    sql
    SELECT * FROM users;

  • 退出 MySQL:

    sql
    EXIT;

七、 远程连接 MySQL (可选)

如果你允许了 root 用户远程登录 (不推荐),或者创建了具有远程访问权限的其他用户,你需要进行以下配置才能从其他机器连接到 MySQL 服务器:

  1. 修改 MySQL 配置文件:

    打开 MySQL 的配置文件(通常位于 /etc/my.cnf/etc/mysql/my.cnf)。
    找到 bind-address 这一行。默认情况下,它可能被设置为 127.0.0.1,这意味着 MySQL 只监听本地连接。
    将其注释掉(在行首添加 #)或者将其改为服务器的 IP 地址:

    ```

    bind-address = 127.0.0.1

    bind-address = 你的服务器IP地址
    ```

  2. 重启 MySQL 服务:

    bash
    sudo systemctl restart mysqld

  3. 防火墙设置(重要):
    如果你的服务器启用了防火墙(例如 firewalld 或 iptables),你需要允许外部访问 MySQL 的默认端口(3306):

  4. firewalld:

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

  5. iptables (如果使用iptables而不是firewalld):
    sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
    sudo service iptables save #CentOS 7
    sudo iptables-save > /etc/sysconfig/iptables # CentOS 7, 更持久的保存
    sudo systemctl restart iptables #CentOS 7

    或者对于CentOS8:
    sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
    sudo dnf install iptables-services # 如果还没有安装
    sudo systemctl enable --now iptables
    sudo iptables-save > /etc/iptables/rules.v4 #IPv4 rules
    sudo iptables-save > /etc/iptables/rules.v6 #IPv6 rules (如果需要)

  6. 授权远程用户:

登录到 MySQL,并执行以下命令(将 'your_user''your_password''your_client_ip' 替换为实际值):

sql
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'your_client_ip' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;

* 'your_user':你要创建的用户名。
* 'your_password':用户的密码。
* 'your_client_ip':允许连接的客户端 IP 地址。可以使用 % 通配符表示允许所有 IP 地址连接(非常不安全!强烈建议指定具体的 IP 地址)。

八、 总结

至此,你已经在 CentOS 服务器上成功安装并配置了 MySQL 数据库。请务必牢记 root 用户的密码,并根据实际需求创建其他用户和数据库。 强烈建议阅读MySQL官方文档,以了解更多高级配置和安全最佳实践。 希望本教程对你有所帮助!

THE END