在CentOS系统上安装MySQL数据库是搭建Web应用、数据服务等环境的基础步骤之一,相较于直接下载源码包编译安装,使用官方的Yum仓库进行安装是最为推荐的方式,它不仅过程简洁,而且便于后续的版本管理和更新,本教程将详细介绍在CentOS 7/8系统上通过Yum仓库安装MySQL 8.0版本的全过程,并涵盖必要的初始安全配置。
前期准备工作
在开始安装之前,确保您的系统满足以下基本条件,并完成必要的清理工作,以避免潜在的冲突。
您需要拥有一台已联网的CentOS服务器,并且拥有一个具有sudo
权限的普通用户账户,不建议直接使用root
用户进行日常操作。
检查系统中是否已安装了MariaDB或MySQL的旧版本,CentOS 7的默认源中包含了MariaDB,它是MySQL的一个分支,但两者不能共存,如果已存在,必须先将其卸载,可以使用以下命令进行检查和卸载:
# 检查是否已安装mariadb rpm -qa | grep mariadb # 如果存在,则使用以下命令卸载 sudo yum remove mariadb-libs-*
执行完卸载操作后,系统就处于一个干净的状态,可以开始MySQL的正式安装了。
安装MySQL服务器
整个安装过程分为几个清晰的步骤:添加官方仓库、安装MySQL服务、启动服务并进行安全初始化。
第一步:添加MySQL官方Yum仓库
MySQL官方提供了针对不同Linux发行版的Yum仓库配置包,我们首先需要下载并安装这个配置包,这样yum
才能知道从哪里获取MySQL软件。
对于CentOS 7系统,下载并安装仓库配置包的命令如下:
sudo yum localinstall https://repo.mysql.com/mysql80-community-release-el7-5.noarch.rpm
对于CentOS 8系统,则应使用对应的版本包:
sudo yum localinstall https://repo.mysql.com/mysql80-community-release-el8-1.noarch.rpm
安装此包后,会在/etc/yum.repos.d/
目录下创建两个仓库文件:mysql-community.repo
和mysql-community-source.repo
。
第二步:安装MySQL社区服务器
添加好仓库后,就可以使用yum
命令来安装MySQL服务器了,执行以下命令:
sudo yum install mysql-community-server
在安装过程中,yum
可能会提示您导入MySQL的GPG公钥以验证软件包的完整性,这是正常的安全检查步骤,输入y
并回车确认即可。
第三步:启动MySQL服务并设置开机自启
安装完成后,MySQL服务并不会自动启动,我们需要使用systemctl
来手动启动它,并将其设置为开机自启动,确保服务器重启后数据库也能正常运行。
# 启动MySQL服务 sudo systemctl start mysqld # 设置MySQL服务开机自启 sudo systemctl enable mysqld
您可以使用sudo systemctl status mysqld
来检查服务的运行状态,确保其显示为active (running)
。
初始安全配置
MySQL 8.0在首次启动时会为root
用户生成一个临时的随机密码,并记录在日志文件中,我们需要找到这个密码,然后通过安全配置脚本来进行一系列重要的安全设置。
第一步:获取临时密码
临时密码保存在/var/log/mysqld.log
文件中,可以使用以下命令快速查询:
sudo grep 'temporary password' /var/log/mysqld.log
命令的输出结果中,最后一行冒号后面的字符串就是初始密码,请务必记录下来,稍后使用。
第二步:运行安全配置脚本
MySQL提供了一个交互式的安全配置脚本mysql_secure_installation
,它能帮助我们快速提升数据库的安全性。
sudo mysql_secure_installation
运行脚本后,它会依次询问您以下几个关键问题:
- 验证密码组件:询问是否启用密码强度验证策略(
Validate Password
组件),建议选择y
启用,并可以根据需求选择密码强度等级(0-低,1-中,2-高)。 - 更改root密码:输入之前获取的临时密码登录,然后设置一个新的
root
用户密码,新密码必须符合您之前设置的密码策略。 - 移除匿名用户:询问是否移除匿名用户账户,为了安全,选择
y
。 - 禁止root远程登录:询问是否禁止
root
用户从远程主机登录,通常建议选择y
,以防止暴力破解,如果确实需要远程管理,也可以选择n
,但必须确保密码足够强壮。 - 移除测试数据库:询问是否移除默认的
test
数据库,该数据库对所有用户开放,存在安全风险,选择y
移除。 - 重新加载权限表:询问是否立即应用以上所有更改,选择
y
使配置生效。
完成以上步骤后,MySQL的安装和基础安全配置就全部完成了,您现在可以使用新设置的密码通过mysql -u root -p
命令登录数据库了。
防火墙配置
如果您的服务器开启了防火墙(默认通常是开启的),并且需要从其他机器远程访问MySQL数据库,那么必须开放MySQL的默认端口3306
。
# 开放3306端口(临时) sudo firewall-cmd --add-port=3306/tcp # 开放3306端口(永久) sudo firewall-cmd --add-port=3306/tcp --permanent # 重载防火墙配置使永久规则生效 sudo firewall-cmd --reload
至此,一个功能完整且相对安全的MySQL环境已在您的CentOS系统上部署完毕。
相关问答FAQs
问题1:如何更改MySQL的默认数据目录?
答:更改MySQL的默认数据目录(通常为/var/lib/mysql
)是一个常见的需求,特别是当数据盘空间不足时,操作步骤如下:
- 停止MySQL服务:
sudo systemctl stop mysqld
。 - 创建新目录并迁移数据:假设新目录为
/data/mysql
,首先创建它:sudo mkdir -p /data/mysql
,将原目录下的所有文件复制过去:sudo cp -a /var/lib/mysql/* /data/mysql/
(使用-a
参数可以保留权限和所有者信息)。 - 修改配置文件:编辑MySQL的配置文件
/etc/my.cnf
,找到[mysqld]
部分,将datadir=/var/lib/mysql
修改为datadir=/data/mysql
,同时修改socket
路径(如果需要)。 - 设置SELinux上下文:这是CentOS系统至关重要的一步,如果未正确设置,MySQL将无法访问新目录,执行:
sudo semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"
,然后运行sudo restorecon -Rv /data/mysql
以应用新的安全上下文。 - 启动服务并验证:
sudo systemctl start mysqld
,服务启动后,登录MySQL检查@@datadir
变量是否已更新:SHOW VARIABLES LIKE 'datadir';
。
问题2:我忘记了MySQL的root密码,如何重置?
答:忘记root密码时,可以通过特殊模式重置,步骤如下:
- 停止MySQL服务:
sudo systemctl stop mysqld
。 - 以跳过权限验证模式启动MySQL:执行命令
sudo mysqld_safe --skip-grant-tables &
,这会以一个不检查权限的模式启动MySQL服务。 - 无密码登录:此时可以直接使用
mysql -u root
命令登录,无需密码。 - 重置密码:在MySQL命令行中依次执行:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
(注意:MySQL 8.0中必须使用ALTER USER
命令,并且新密码要符合密码策略)。 - 恢复正常模式:退出MySQL,然后关闭跳过权限验证的进程(通常可以用
sudo pkill mysqld
),最后正常启动MySQL服务:sudo systemctl start mysqld
,现在您就可以用新密码登录了。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复