centos7 离线安装mysql

内容纲要

mysql 安装建议通过yum在线安装,离线安装会多出很多步骤和设置,也更容易出问题。

服务器环境 centos7 x64
Mysql mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar
  1. 卸载CentOS7系统自带mariadb

    # 查看系统自带的Mariadb
    rpm -qa|grep mariadb
    mariadb-libs-5.5.44-2.el7.centos.x86_64
    # 卸载系统自带的Mariadb
    rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
    # 删除etc目录下的my.cnf
    rm /etc/my.cnf

    又看了篇文章说,千万不要删除自带的mariadb,直接安装mysql会自动替换mariadb,反而卸载的话会导致未知的问题

  2. 检查mysql是否存在

    # 检查mysql是否存在,有的话可以视情况删除
    rpm -qa | grep mysql
    #删除mysql
    yum remove mysql-*
  3. 查看用户和组是否存在

    # 检查mysql组和用户是否存在,如无则创建
    cat /etc/group | grep mysql
    cat /etc/passwd | grep mysql
    # 创建mysql用户组
    groupadd mysql
    # 创建一个用户名为mysql的用户,并加入mysql用户组
    useradd -g mysql mysql
    # 设定mysql用户密码
    passwd mysql
  4. 安装mysql
    安装mysql前禁用 SELinux和防火墙

    #创建解压目录
    mkdir mysql-5.7
    #解压安装包
    tar -xvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz -C mysql-5.7

    解压后你会看到有12个rpm包,前5个是必须安装的项:

    mysql-community-client(客户端程序和工具)
    mysql-community-server(服务器程序和工具)
    mysql-community-libs(LIB库)
    mysql-community-libs-compat(LIB共享兼容库)
    mysql-community-common(公共文件)
    mysql-community-devel(开发MySQL必备的头文件和库)
    mysql-community-embedded(嵌入式库)
    mysql-community-embedded-compat(嵌入式共享兼容库)
    mysql-community-embedded-dev(嵌入式开发库)
    mysql-community-minimal-debuginfo(最小安装调式信息库)
    mysql-community-server-minimal(最小安装服务器程序和工具)
    mysql-community-test(测试套件)

    安装所需rpm包

    yum install -y mysql-5.7/mysql-community-{server,client,common,libs}-*
    #安装成功后查看
    rpm -qa|grep mysql

    安装内容结束,只有采用离线tar包安装方式才需要添加mysql的用户及用户组,使用在线RPM方式安装时这些会自动设置好。

  5. mysql登录配置
    mysql安装成功后,本地命令行登录会发现无法成功登录:Access denied for user ‘root’@’localhost’ (using password YES/NO),在线yum安装好像没有这个问题。
    大致原因为了加强安全性,MySQL5.7为root用户随机生成了一个密码,这个密码会被记录在error_log中:

    #查找日志中记录的随机密码
    cat /var/log/mysqld.log |grep password
    #日志里可能有多个随机密码,查找最近的一个,这里是Nussuua7Ep=d
    2021-04-08T09:51:07.821577Z 1 [Note] A temporary password is generated for root@localhost: Cs6&aid>h=5v
    2021-04-08T09:55:23.934502Z 0 [Note] Shutting down plugin 'validate_password'
    2021-04-08T09:55:25.762264Z 0 [Note] Shutting down plugin 'sha256_password'
    2021-04-08T09:55:25.762272Z 0 [Note] Shutting down plugin 'mysql_native_password'
    2021-04-08T10:03:01.333278Z 1 [Note] A temporary password is generated for root@localhost: Nussuua7Ep=d

    使用Nussuua7Ep=d密码登录

    mysql -uroot -p

    如果提示错误:Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
    并且在默认目录/var/lib/mysql/ 下找不到mysql.sock文件,可以简单地通过重启服务器重新创建得到它,因为服务器在启动时重新创建它。
    重启后即可正常登录mysql

    随机密码登录后,使用功能会受限,系统提示需要修改mysql的root账号密码

    #设置新密码
    SET PASSWORD = PASSWORD('123456');
    #上面语句会报错,默认要求密码必须满足:数字 小写字母 大写字母 特殊字符 长度至少8位 
    #按符合要求的密码重新进行设置
    #设置符合要求的密码后重新登录mysql即可使用其它功能
    #比如修改密码策略:只限制密码长度为8位以上
    set global validate_password_policy = 0;

    开放mysql访问权限

    #打开mysql库
    use mysql;
    #检索 user 和 host 字段
    select user,host from user;
    +---------------+-----------+
    | user          | host      |
    +---------------+-----------+
    | mysql.session | localhost |
    | mysql.sys     | localhost |
    | root          | localhost |
    +---------------+-----------+
    3 rows in set (0.00 sec)
    #如果没有 user=root ,host = % 的用户,则执行下面语句
    update user set host='%' where user='root';
    #给 root 授权(所有权限, 其中两个root 分别代表 “用户名”和“密码” )
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    #让赋予的权限立即生效
    flush privileges;

    6.配置mysql数据存放位置
    默认Data数据存储目录在 /var/lib/mysql ,往往为了数据安全或更大的存储空间等原因,经常会修改数据存储目录:比如外挂硬盘等其它数据分区,如果默认位置可以满足要求,这一步可以忽略

    #新建存放的目录 data
    mkdir -p /data
    #复制默认存储文件到默认安装路径(同时负责权限、熟悉等)
    cp -rap /var/lib/mysql /data
    #将新建的目录所有者更换为mysql用户
    chown -R mysql:mysql data/mysql/
    #为mysql.socket加链接
    ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock

    修改mysql配置文件 /etc/my.cnf,根据上面路径调整存储目录

    vim /etc/my.cnf

    修改数据目录配置如下

    # read_rnd_buffer_size = 2M
    # 注释默认路径
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    # 修改实际路径
    datadir=/data/mysql
    socket=/data/mysql/mysql.sock
  6. 最后配置mysql随机启动

    systemctl enabled mysqld

安装结束后会在Linux中的各种目录生成必要的文件,如下表

内容 位置
脚本 /usr.bin
mysqld服务 /usr/sbin
配置文件 /etc/my.cnf
数据目录 /data/mysql /var/lib/mysql
错误日志 /var/log/mysqld.log
私有安全文件 /var/lib/mysql-files
系统初始脚本 /etc/init.d/mysqld
Pid文件 /var/run/mysql/mysqld.pid
共享文件 /usr/share/mysql

2 thoughts to “centos7 离线安装mysql”

  1. Pingback: go

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注