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/configSELINUX=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的离线安装与基础配置,关键点包括:

  1. 权限隔离:使用专用用户运行MySQL,提升安全性。
  2. 配置文件:通过my.cnf定制化数据库行为。
  3. 服务管理:通过系统服务脚本控制MySQL启停。

后续操作:

  • 执行mysql_secure_installation加固安全设置。
  • 定期备份数据(使用mysqldumpxtrabackup)。
  • 监控数据库性能(如slow_query_log)。

注意事项:文中涉及的权限开放和密码设置仅适用于测试环境,生产环境需遵循最小权限原则!

你可能感兴趣的:(LInux/CentOS7,linux,mysql,运维)