CentOS如何安装MySQL_CentOS系统MySQL安装与配置教程

看不見的法師
发布: 2025-09-03 13:31:01
原创
1039人浏览过
答案:MySQL安装后需运行mysql_secure_installation脚本进行初始安全配置,包括设置root密码、移除匿名用户、禁止root远程登录、删除测试数据库并重载权限表。

centos如何安装mysql_centos系统mysql安装与配置教程

在CentOS系统上安装MySQL,核心流程通常是先添加MySQL官方的Yum仓库,然后通过

yum
登录后复制
dnf
登录后复制
包管理器安装MySQL服务器软件包,最后进行必要的初始化配置和安全设置。这个过程虽然看起来直接,但中间有些小细节和坑,如果不注意可能会让你抓狂。

解决方案

说实话,每次在新的CentOS机器上搞MySQL,我都会纠结一下是装Oracle官方的MySQL,还是社区版的MariaDB。但既然标题明确是MySQL,那咱们就走官方的路子。我个人觉得,官方源的MySQL在版本更新和功能支持上更有保障,虽然配置起来可能稍微多几步。

第一步:添加MySQL官方Yum仓库

CentOS自带的软件源里通常没有最新版的MySQL,或者只有MariaDB。所以,我们得手动添加MySQL的官方仓库。

  1. 下载仓库配置包: 去MySQL官网找对应的

    mysql-community-release-elX.rpm
    登录后复制
    包,其中
    X
    登录后复制
    代表你的CentOS版本(比如CentOS 7就是
    el7
    登录后复制
    ,CentOS 8就是
    el8
    登录后复制
    )。我这里以CentOS 7为例。

    # 如果你没有wget,先装一个
    # sudo yum install wget -y
    wget https://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm
    登录后复制

    这里我直接选了MySQL 8.0,这是目前比较主流的版本。如果你需要特定版本,比如5.7,那下载对应的

    mysql57-community-release-el7-*.rpm
    登录后复制

  2. 安装仓库配置包:

    sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm
    登录后复制

    这一步会把MySQL的仓库配置添加到你的系统里,通常是生成

    /etc/yum.repos.d/mysql-community.repo
    登录后复制
    文件。

  3. 检查仓库是否启用(可选但推荐): 有时候,默认可能启用了多个MySQL版本,这会导致安装时冲突。你可以编辑

    /etc/yum.repos.d/mysql-community.repo
    登录后复制
    文件,确保你只想安装的版本(比如
    mysql80-community
    登录后复制
    )是
    enabled=1
    登录后复制
    ,而其他版本是
    enabled=0
    登录后复制
    。 比如,如果你想装MySQL 8.0,就确保
    [mysql80-community]
    登录后复制
    下的
    enabled=1
    登录后复制
    ,而
    [mysql57-community]
    登录后复制
    等是
    enabled=0
    登录后复制

第二步:安装MySQL服务器

仓库配置好了,现在可以安装了。

sudo yum clean all # 清理一下yum缓存,确保拉取最新仓库信息
sudo yum install mysql-community-server -y
登录后复制

这个命令会安装MySQL服务器以及它所依赖的客户端工具和库。下载和安装过程可能需要一些时间,取决于你的网络速度。

第三步:启动MySQL服务并设置开机自启

安装完成后,MySQL服务默认是不会自动启动的。

sudo systemctl start mysqld # 启动MySQL服务
sudo systemctl enable mysqld # 设置开机自启
sudo systemctl status mysqld # 检查服务状态,确保它正在运行
登录后复制

看到

Active: active (running)
登录后复制
就说明服务起来了。如果没起来,那可能就得看日志排查问题了,这通常是新手最头疼的地方。

第四步:进行初始安全配置

这是安装完MySQL后非常关键的一步,它会帮你设置root密码、移除匿名用户、禁止root远程登录等。

  1. 获取临时root密码: MySQL 8.0在安装时会生成一个临时root密码,并保存在日志文件里。

    sudo grep 'temporary password' /var/log/mysqld.log
    登录后复制

    你会看到类似

    root@localhost: <一串字符>
    登录后复制
    这样的输出,这串字符就是你的临时密码。把它记下来。

  2. 运行安全配置脚本:

    mysql_secure_installation
    登录后复制

    它会提示你输入临时密码。输入后,它会问你一系列问题:

    • VALIDATE PASSWORD COMPONENT? (是否启用密码强度验证插件?) 我个人建议启用,但如果你只是测试环境,或者有自己的密码管理策略,也可以选N。如果选Y,它会让你选择密码策略级别。
    • Change the password for root? (是否修改root密码?) 强烈建议修改,并设置一个强密码。
    • Remove anonymous users? (是否移除匿名用户?) 选Y。
    • Disallow root login remotely? (是否禁止root用户远程登录?) 生产环境强烈建议选Y,开发环境可以根据需要。
    • Remove test database and access to it? (是否移除test数据库?) 选Y。
    • Reload privilege tables now? (是否立即重新加载权限表?) 选Y。

    一步步跟着提示走,基本上就搞定了。

第五步:验证安装

最后,尝试用新设置的root密码登录MySQL,确保一切正常。

mysql -u root -p
登录后复制

输入你刚刚设置的新密码,如果能成功进入MySQL命令行,恭喜你,MySQL已经成功安装并配置好了!

MySQL安装后,如何进行初始安全配置?

这真的是个老生常谈,但又极其容易被忽视的问题。很多人装完MySQL,一看到服务跑起来了,就觉得万事大吉,直接开始用。殊不知,默认安装的MySQL安全配置非常薄弱,简直是给黑客敞开了大门。我每次都强调,

mysql_secure_installation
登录后复制
这个脚本不是摆设,它是第一道防线。

这个脚本主要做了几件事,每件都至关重要:

  1. 修改root用户密码: 默认的root用户密码要么是空的,要么是一个临时密码(MySQL 8.0是临时密码)。这就像你买了个新房子,开发商给你的万能钥匙,你肯定得换成自己的锁。通过
    mysql_secure_installation
    登录后复制
    ,你可以设置一个足够复杂的密码,这是防止未授权访问的第一步。
  2. 移除匿名用户: MySQL默认会创建一个匿名用户,允许任何人无需密码连接到数据库。这在测试环境可能方便,但在生产环境简直是灾难。移除这些匿名用户,确保只有经过授权的用户才能访问。
  3. 禁止root用户远程登录: 默认情况下,root用户可能可以从任何地方远程登录。这非常危险,一旦root密码泄露,整个数据库就暴露无遗。通常,我们只需要root用户在本地(
    localhost
    登录后复制
    )管理数据库,远程管理应该创建专门的用户并赋予特定权限。禁止root远程登录,能大幅降低风险。
  4. 移除测试数据库: MySQL会自带一个名为
    test
    登录后复制
    的数据库,任何人都可以访问。虽然它本身没什么敏感数据,但它提供了一个攻击者可以测试漏洞的环境。移除它,能消除一个潜在的攻击面。
  5. 重新加载权限表: 所有这些安全设置的更改,都需要MySQL重新加载权限表才能生效。脚本最后会提示你做这一步,确保你的所有修改立即生效。

我见过不少因为偷懒没跑这个脚本,结果数据库被入侵的案例。所以,哪怕再着急,也请务必花几分钟完成这个步骤。它能帮你省去未来无数的麻烦。

CentOS上MySQL的配置文件在哪里?如何优化?

MySQL的配置文件在CentOS上通常是

my.cnf
登录后复制
,它通常位于
/etc/my.cnf
登录后复制
/etc/mysql/my.cnf
登录后复制
。不过,更常见的情况是,
/etc/my.cnf
登录后复制
是一个符号链接或者包含其他目录下的配置文件,比如
/etc/my.cnf.d/
登录后复制
目录下的
.cnf
登录后复制
文件。MySQL会按特定顺序加载这些配置文件,优先级通常是:
/etc/my.cnf
登录后复制
->
/etc/mysql/my.cnf
登录后复制
->
/usr/my.cnf
登录后复制
->
~/.my.cnf
登录后复制
。实际操作中,我们主要关注
/etc/my.cnf
登录后复制
及其包含的目录。

要找到实际生效的配置文件,你可以用这个命令:

mysql --help | grep "Default options" -A 1
登录后复制

它会告诉你MySQL搜索配置文件的路径顺序。

帮衣帮-AI服装设计
帮衣帮-AI服装设计

AI服装设计神器,AI生成印花、虚拟试衣、面料替换

帮衣帮-AI服装设计 106
查看详情 帮衣帮-AI服装设计

如何优化? 优化MySQL配置是一门大学问,没有一劳永逸的方案,它需要根据你的服务器硬件、数据库大小、并发量和业务类型来调整。但有一些通用的参数,我个人觉得是每次安装后都值得关注的:

  1. innodb_buffer_pool_size
    登录后复制
    这是InnoDB存储引擎最重要的参数,它决定了MySQL缓存索引和数据的内存大小。如果你的数据库主要使用InnoDB,并且服务器内存充足,这个值应该设置得尽可能大,通常是物理内存的50%到70%。比如,你有8GB内存,可以考虑设置为4G或6G。

    innodb_buffer_pool_size = 4G
    登录后复制

    如果这个值设置得太小,MySQL会频繁地从磁盘读取数据,性能会急剧下降。

  2. max_connections
    登录后复制
    最大连接数。这个参数决定了MySQL服务器允许的最大并发连接数。默认值通常是151,对于高并发应用来说可能不够。但也不是越大越好,每个连接都会消耗一定的内存。你需要根据实际应用的需求和服务器的负载能力来调整。

    max_connections = 500
    登录后复制

    调整这个值后,记得测试你的应用,看看是否会出现连接池耗尽或者服务器内存不足的问题。

  3. character_set_server
    登录后复制
    collation_server
    登录后复制
    字符集设置。为了避免乱码问题,我通常会把服务器的字符集设置为
    utf8mb4
    登录后复制
    ,这是MySQL推荐的,能支持更广泛的字符(包括Emoji表情)。

    character_set_server = utf8mb4
    collation_server = utf8mb4_unicode_ci
    登录后复制

    同时,也要确保你的客户端连接字符集与服务器一致。

  4. query_cache_size
    登录后复制
    query_cache_type
    登录后复制
    查询缓存。在MySQL 5.7及更早版本中,查询缓存可以提高重复查询的性能。但在MySQL 8.0中,查询缓存已经被移除了,因为它在高并发场景下可能会导致性能瓶颈。如果你还在用5.7,可以考虑启用并设置大小,但对于8.0,就不用考虑了。

  5. log_error
    登录后复制
    错误日志路径。明确错误日志的路径,方便排查问题。

    log_error = /var/log/mysqld.log
    登录后复制

修改配置后: 修改

my.cnf
登录后复制
文件后,你必须重启MySQL服务才能让更改生效:

sudo systemctl restart mysqld
登录后复制

我个人习惯是,每次修改完配置,都先用

mysqld --verbose --help | grep -A 1 "Default options"
登录后复制
或者
mysqladmin variables -u root -p
登录后复制
确认一下新的配置是否真的被加载了。毕竟,有时候配置文件路径不对,或者语法有误,MySQL可能根本没读你的新配置。

MySQL服务无法启动,如何排查问题?

MySQL服务无法启动,这简直是运维的家常便饭,但每次遇到都挺让人头疼的。我个人经验是,排查这类问题,最关键的就是看日志,日志,还是日志!

  1. 检查服务状态和系统日志: 首先,别瞎猜,直接问问系统发生了什么。

    sudo systemctl status mysqld.service
    登录后复制

    如果服务是

    inactive (dead)
    登录后复制
    或者
    failed
    登录后复制
    ,它通常会给你一个大致的错误信息。更详细的,你需要看
    journalctl
    登录后复制

    sudo journalctl -xe | grep mysqld
    登录后复制

    这个命令会显示最近的系统日志,并过滤出与

    mysqld
    登录后复制
    相关的条目。很多时候,这里就能直接看到导致服务启动失败的根本原因,比如端口被占用、配置文件错误、权限问题等。

  2. 查看MySQL自身的错误日志: MySQL有自己的错误日志文件,通常位于

    /var/log/mysqld.log
    登录后复制
    。这是排查MySQL启动问题的核心。

    sudo tail -f /var/log/mysqld.log
    登录后复制

    或者直接

    cat
    登录后复制
    查看全部内容。 这里会记录MySQL启动时的所有详细信息,包括加载配置文件、初始化存储引擎、遇到的任何警告或错误。例如,如果你的
    my.cnf
    登录后复制
    配置有语法错误,或者某个参数设置不合理,通常会在这个日志里找到明确的提示。

  3. 常见问题及排查方向:

    • 配置文件错误: 这是最常见的。比如

      my.cnf
      登录后复制
      里写错了参数名,或者值不合法。错误日志会明确指出哪一行有问题。检查最近修改过的配置。

      # 尝试用mysqld命令检查配置文件的语法
      mysqld --verbose --help | grep -A 1 "Default options"
      登录后复制

      这个命令本身不会启动服务,但可以帮你检查配置文件路径和一些默认参数。

    • 数据目录权限问题: MySQL服务需要对数据目录(通常是

      /var/lib/mysql
      登录后复制
      )有读写权限。如果权限不正确,服务可能无法启动。

      sudo chown -R mysql:mysql /var/lib/mysql
      sudo chmod -R 755 /var/lib/mysql # 或者根据实际需要调整权限
      登录后复制

      特别是在手动迁移数据目录后,很容易出现权限问题。

    • 磁盘空间不足: 如果数据目录所在的磁盘空间满了,MySQL也可能无法启动。

      df -h
      登录后复制

      检查磁盘使用情况。

    • 端口冲突: 默认端口3306可能被其他程序占用。

      sudo netstat -tulnp | grep 3306
      登录后复制

      如果发现有其他进程占用了3306端口,你需要找到并停止那个进程,或者修改MySQL的端口。

    • SELinux或防火墙: CentOS默认开启SELinux,它可能会阻止MySQL访问某些目录或端口。

      • SELinux: 检查SELinux状态
        sestatus
        登录后复制
        。如果SELinux是Enforcing模式,并且日志里有
        denied
        登录后复制
        的字样,你可能需要调整SELinux策略或者暂时将其设置为Permissive模式进行测试(不推荐长期使用Permissive)。
        sudo setenforce 0 # 临时设置为Permissive模式
        登录后复制

        如果MySQL能启动,说明是SELinux的问题,你需要为MySQL设置正确的SELinux上下文。

      • 防火墙(firewalld): 如果你尝试从外部连接,但服务无法启动,可能是防火墙阻止了连接。
        sudo systemctl status firewalld
        sudo firewall-cmd --list-all # 查看防火墙规则
        # 允许3306端口(如果你需要远程访问)
        # sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
        # sudo firewall-cmd --reload
        登录后复制
    • MySQL初始化失败: 特别是MySQL 8.0,在第一次启动前需要进行数据目录初始化。如果这一步没有正确完成,服务也会启动失败。通常,安装包会自动处理,但如果你手动删除了

      /var/lib/mysql
      登录后复制
      下的数据,可能需要手动初始化:

      sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql
      登录后复制

      注意:这个命令会创建一个新的数据目录并生成临时root密码,会覆盖现有数据,请谨慎使用。

总之,遇到MySQL启动问题,保持冷静,一步步查看日志,分析错误信息。日志是你的朋友,它们会告诉你真相。

以上就是CentOS如何安装MySQL_CentOS系统MySQL安装与配置教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号