通过yum方式安装MySQL数据库的全过程
MySQL是广泛使用的开源关系型数据库管理系统,在CentOS、RHEL等基于Red Hat的Linux发行版中,通过yum包管理器可以便捷地完成MySQL的安装、配置与启动。下面将详细介绍完整的操作流程。
一、环境准备
操作前需要确认当前系统环境符合要求:
系统为CentOS 7及以上版本,或RHEL 7及以上版本
拥有root权限或者可使用sudo执行命令的普通用户权限
服务器可以正常访问外网,或者使用本地yum源
二、添加MySQL官方yum源
系统默认的yum源中可能不包含最新版本的MySQL,因此建议先添加MySQL官方提供的yum源仓库。以MySQL 8.0版本为例,操作步骤如下:
首先下载对应系统的MySQL yum源rpm包,执行以下命令:
wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
下载完成后,安装该rpm包,将MySQL源添加到系统的yum仓库列表中:
sudo rpm -ivh mysql80-community-release-el7-5.noarch.rpm
安装完成后,可以通过以下命令查看当前yum源中可用的MySQL仓库:
yum repolist enabled | grep mysql
如果输出中包含mysql80-community相关内容,说明MySQL 8.0的yum源已经添加成功。
三、安装MySQL服务
确认yum源可用后,执行以下命令安装MySQL服务器:
sudo yum install -y mysql-community-server
该命令会自动下载并安装MySQL服务及其所有依赖组件,等待安装过程完成即可。安装过程中如果提示是否确认安装,输入y并回车即可继续。
四、启动MySQL服务并设置开机自启
安装完成后,需要启动MySQL服务,并设置为开机自动启动,避免服务器重启后MySQL服务需要手动启动。
启动MySQL服务:
sudo systemctl start mysqld
设置开机自启:
sudo systemctl enable mysqld
可以通过以下命令查看MySQL服务的运行状态,确认服务是否正常启动:
sudo systemctl status mysqld
如果输出中显示active (running),说明MySQL服务已经正常运行。
五、获取初始临时密码并登录
MySQL在安装完成后,会为root用户生成一个初始的临时密码,该密码存储在系统的日志文件中。执行以下命令查看临时密码:
sudo grep 'temporary password' /var/log/mysqld.log
命令输出的末尾即为root用户的初始临时密码,例如输出可能为:2024-01-01T00:00:00.000000Z 1 [Note] A temporary password is generated for root@localhost: Abc123!@#,其中Abc123!@#就是临时密码。
使用临时密码登录MySQL:
mysql -u root -p
输入上述命令后,按提示输入临时密码,即可进入MySQL的命令行交互界面。
六、修改root用户密码
首次登录MySQL后,必须先修改root用户的密码,否则无法执行其他操作。执行以下SQL语句修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass@123';
注意MySQL 8.0默认启用了密码强度校验插件,密码需要包含大小写字母、数字和特殊字符,长度不低于8位,否则会修改失败。如果不需要严格的密码强度校验,可以先修改密码策略,再设置简单密码,生产环境不建议设置简单密码。
修改完成后,刷新权限使配置生效:
FLUSH PRIVILEGES;
七、验证安装结果
可以执行以下SQL语句查看当前MySQL的版本信息,确认安装是否成功:
SELECT VERSION();
如果返回对应的MySQL版本号,说明MySQL数据库已经成功安装并可以正常使用。
八、常见问题处理
1. 安装时提示GPG密钥验证失败:可以导入MySQL的GPG公钥后重新安装,执行命令:sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022,再重新执行安装命令即可。
2. 忘记root密码:可以停止MySQL服务,以跳过权限验证的方式启动MySQL,然后重置密码,具体操作可参考MySQL官方文档。
3. 远程连接失败:默认情况下MySQL的root用户只允许本地登录,如果需要远程连接,需要创建允许远程登录的用户并授权,例如执行以下SQL语句创建远程用户:
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'RemotePass@123'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
同时需要确认服务器防火墙已经开放3306端口,或者关闭防火墙(生产环境不建议关闭防火墙,仅开放对应端口即可)。