0

0

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

看不見的法師

看不見的法師

发布时间:2025-09-03 13:31:01

|

1063人浏览过

|

来源于php中文网

原创

答案: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搜索配置文件的路径顺序。

Red Panda AI
Red Panda AI

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启动问题,保持冷静,一步步查看日志,分析错误信息。日志是你的朋友,它们会告诉你真相。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

652

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

244

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

280

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

513

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

250

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

384

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

522

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

594

2023.08.14

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Node.js 教程
Node.js 教程

共57课时 | 7.7万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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