Linux/Centos7离线安装并配置MySQL 5.7
Linux/Centos7离线安装并配置MySQL 5.7超详细教程
- 一、环境准备
- 1. 下载MySQL 5.7离线包
- 2. 使用rpm工具卸载MariaDB(避免冲突)
- 3. 创建系统级别的MySQL专用用户
- 二、安装与配置
- 1. 解压并重命名MySQL目录
- 2. 创建数据目录和配置文件
- 3. 设置目录权限
- 4. 初始化MySQL
- 5. 配置启动脚本
- 6. 配置环境变量
- 三、启动与验证
- 1. 启动MySQL服务
- 2. 获取初始密码
- 3. 登录并修改密码
- 4. 允许远程访问
- 5. 关闭防火墙和SELinux
- 四、常见问题解决
- 1. 启动失败:`Starting MySQL... ERROR!`
- 2. 初始化报错:`FATAL ERROR: Could not find my-default.cnf`
- 3. 远程连接被拒绝
- 五、扩展配置
- 1. 设置开机自启
- 2. 数据目录迁移
- 六、总结
一、环境准备
1. 下载MySQL 5.7离线包
- 操作:从MySQL官网下载对应版本的压缩包(如
mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
)。 - 原因:离线安装需提前获取完整安装包,确保与系统架构(x86_64)匹配。
2. 使用rpm工具卸载MariaDB(避免冲突)
-
rpm
是Red Hat及其衍生系统(如CentOS、Fedora)中的包管理工具,用于安装、查询、验证、更新和删除软件包。-qa
是rpm的一个选项,其中-q
表示查询,a
表示所有已安装的包;|
为管道符,将前一个命令的输出传递给后一个命令处理;grep
(Global Regular Expression Print,全局正则表达式打印),grep mariadb
为过滤出包含 mariadb 关键字的行。# 检查已安装的MariaDB(MySQL的替代品,可能引发兼容性问题,“-q”表示查询,“a”表示所有已安装的包) # (grep为全局正则表达式输出,"|"为管道符,将前一个命令的输出传递给后一个命令处理) rpm -qa | grep mariadb # 强制卸载mariadb("-e"为删除,"--nodeps"为忽略依赖检查,避免因依赖关系中断卸载) rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 # 使用rm命令删除残留配置文件(防止旧配置影响新MySQL实例,"-f"为强制删除参数) rm -f /etc/my.cnf
3. 创建系统级别的MySQL专用用户
以独立用户运行MySQL服务,避免使用root权限,降低安全风险。
# groupadd 用于在 Linux 系统中创建一个新的名叫“mysql”的用户组(用于隔离权限,提升安全性)
groupadd mysql
# 创建mysql用户并加入mysql用户组(-g指定组)
useradd -g mysql mysql
# 设置mysql用户的密码(生产环境建议使用复杂密码)
passwd mysql
# 输入密码(如123456)
二、安装与配置
1. 解压并重命名MySQL目录
-
-使用
优盘或SFTP工具
将下载好的mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
压缩包上传到Linux/Centos中的/usr/local文件夹下(/usr/local
为标准软件安装目录) -
在Linux/Centos中使用
cd
命令切换至/usr/local目录下:# 解压到/usr/local/ tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ # 重命名目录为mysql(简化路径操作) cd /usr/local/ #进入解压缩的目标文件夹 mv mysql-5.7.33-linux-glibc2.12-x86_64 mysql # 使用 mv 命令将解压后的目录重命名成mysql
2. 创建数据目录和配置文件
- 在/usr/local/mysql/目录下创建data文件夹,并在data文件夹中创建my.cnf(可直接输入vim my.cnf进行创建该文件)
# 创建数据目录(用于存储mysql数据库的文件) mkdir /usr/local/mysql/data # 在/usr/local/mysql/目录下使用 mkdir 命令创建文件夹 # 创建并编辑my.cnf配置文件(mysql的核心配置文件) vim /usr/local/mysql/my.cnf # 使用vim编辑器编辑 my.cnf 配置文件
- 配置文件更改为以下内容及内容详情:
[mysqld] socket=/var/lib/mysql/mysql.sock # 进程间通信文件路径 port=3306 # 默认监听端口 basedir=/usr/local/mysql # MySQL安装目录 datadir=/usr/local/mysql/data # 数据存储目录 max_connections=200 # 最大连接数 character-set-server=utf8 # 默认字符集 lower_case_table_names=1 # 表名不区分大小写 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION # 严格SQL模式 [client] default-character-set=utf8 # 客户端字符集 [mysqld_safe] log-error=/var/log/mysql/mysqld.log # 错误日志路径 pid-file=/var/run/mysqld/mysqld.pid # 进程ID文件路径
3. 设置目录权限
-
使用
chown
命令更改文件的所有者(文件归属于哪一个用户)# 递归修改目录所有者(确保MySQL进程有权限读写) chown -R mysql:mysql /usr/local/mysql #
-
使用
chmod
命令开放配置文件权限,最高位7是设置文件所有者访问权限,第二位是设置群组访问权限,最低位是设置其他人访问权限 -
其中数字
7
由文件的权限值加和而来,r(Read,读取,权限值为4),w(Write,写入,权限值为2),x(eXecute,执行,权限值为1)。 -
注意:生产环境中建议使用
chmod 640
限制权限,避免敏感信息泄露。(777为全权限,仅限测试环境使用)chmod 777 /usr/local/mysql/my.cnf # 使用 chmod 命令更改配置文件的权限
4. 初始化MySQL
-
创建
mysql
系统数据库,并指明用户和数据存位置,为后续服务启动做准备。cd /usr/local/mysql # 进入 mysql 目录 # 初始化数据库(生成系统表和数据目录) /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
5. 配置启动脚本
- 将MySQL纳入系统级服务管理(目录位置为
/etc/init.d/
文件夹内),后续可支持service mysqld start/stop/status
操作 ,具体如下:# 进入 /usr/local/mysql/support-files目录下,使用cp命令复制MySQL启动脚本到系统服务目录 cp support-files/mysql.server /etc/init.d/mysqld # 添加执行权限(允许通过service命令管理) chmod a+x /etc/init.d/mysqld # a表示所有用户,x表示添加执行权限,a+x为所有用户添加文件执行权限
6. 配置环境变量
-
可直接在终端输入
mysql
命令,无需输入完整路径即可使用mysql。vim /etc/profile
在最下面一行添加以下内容:
export MYSQL_HOME=/usr/local/mysql # 定义MySQL根目录 export PATH=$MYSQL_HOME/bin:$PATH # 将MySQL命令加入全局路径
刷新环境变量:
source /etc/profile # 使配置立即生效
三、启动与验证
1. 启动MySQL服务
service mysqld start # 启动服务
service mysqld status # 验证状态应为"SUCCESS"
2. 获取初始密码
-
初始化mysql后会生成一个复杂的密码,我们先查看这个复杂的初始密码,之后登录mysql后修改初始密码
# 查找初始化生成的临时密码(不同版本路径可能不同) cat /root/.mysql_secret # 或查看/usr/local/mysql/data/*.err文件
-
注意:若未找到密码,检查初始化日志中的
A temporary password
字段。
3. 登录并修改密码
-
输入以下命令并,并将刚才的初始密码复制进去,登录mysql
mysql -u root -p # 输入初始密码
-
修改初始密码:
-- 修改root密码为123456(生产环境需使用复杂的密码) SET PASSWORD = PASSWORD('123456'); FLUSH PRIVILEGES; -- 刷新权限表使修改生效
-
验证mysql的密码是否修改成功
quit # 输入quit按回车退出mysql
-
重复登录步骤,并输入修改后的密码123456,成功登录则修改成功
4. 允许远程访问
-- 授权root用户从任意IP访问(%表示所有主机)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
- 警告:生产环境应限制IP范围,避免开放
%
。
5. 关闭防火墙和SELinux
systemctl stop firewalld # 关闭防火墙(临时)
setenforce 0 # 关闭SELinux(临时)
- 补充:永久关闭需修改
/etc/selinux/config
中SELINUX=disabled
。
四、常见问题解决
1. 启动失败:Starting MySQL... ERROR!
- 排查步骤:
tail -f /var/log/mysql/mysqld.log # 查看错误日志 chown -R mysql:mysql /usr/local/mysql # 检查目录权限
2. 初始化报错:FATAL ERROR: Could not find my-default.cnf
- 解决方案:手动创建
my.cnf
并确保路径与配置一致。
3. 远程连接被拒绝
- 检查项:
netstat -ntlp | grep 3306 # 确认端口监听状态 iptables -L -n # 查看防火墙规则
五、扩展配置
1. 设置开机自启
chkconfig --add mysqld # 添加服务到系统启动项
chkconfig mysqld on # 启用开机自启
2. 数据目录迁移
# 修改my.cnf中的datadir路径
datadir=/new/data/path
- 操作:迁移数据文件后重启服务,需确保目录权限正确。
六、总结
文章旨在讨论Linux/CentOS7下MySQL 5.7的离线安装与基础配置,关键点包括:
- 权限隔离:使用专用用户运行MySQL,提升安全性。
- 配置文件:通过
my.cnf
定制化数据库行为。 - 服务管理:通过系统服务脚本控制MySQL启停。
后续操作:
- 执行
mysql_secure_installation
加固安全设置。 - 定期备份数据(使用
mysqldump
或xtrabackup
)。 - 监控数据库性能(如
slow_query_log
)。
注意事项:文中涉及的权限开放和密码设置仅适用于测试环境,生产环境需遵循最小权限原则!