• Linux CentOS系统安装mysql8.0.31(tar方式)


    Linux系统安装mysql8.0.31(TAR方式)

    安装包的下载

    选择的是 MySQL Community Server 进行下载

    官网下载地址https://dev.mysql.com/downloads/mysql/

    选择对应版本,本人的Linux是CentOS7 ,可以选通用版(Linux - Generic)或者Red Hat Enterprise Linux / Oracle Linux。
    在这里插入图片描述
    在这里插入图片描述

    安装Mysql8.0.31

    将安装包分发到服务器中,文中采用的安装包的存放目录是/opt

    1. 新建用户组mysql和用户mysql,用户不能用来登录

      groupadd mysql
      useradd -r -g mysql -s /bin/false mysql
      
      • 1
      • 2
    2. 创建相关目录(软件安装目录,mysql8安装目录,mysql数据目录,日志文件)

      mkdir -p /opt/software;
      mkdir -p /opt/software/mysql;
      mkdir -p /opt/software/mysql/mysql8-files;
      mkdir -p /opt/software/mysql/logs/mysql8/;
      touch /opt/software/mysql/logs/mysql8/mysqld-error.log;
      
      • 1
      • 2
      • 3
      • 4
      • 5
    3. 解压安装包 并进行重命名

      # 解压包
      tar -zvxf /opt/mysql-8.0.31-el7-x86_64.tar.gz -C /opt/software/mysql
      # 重命名文件夹
      mv /opt/software/mysql/mysql-8.0.31-el7-x86_64 /opt/software/mysql/mysql8
      
      • 1
      • 2
      • 3
      • 4
    4. mysql8文件夹下新建用户级配置文件my.cnf

      touch /opt/software/mysql/mysql8/my.cnf;
      vim /opt/software/mysql/mysql8/my.cnf
      
      • 1
      • 2

      填充以下基础配置。可以将一些优化配置添加进去。

      [mysqld]
      # 设置表名不区分大小写
      lower_case_table_names=1
      basedir=/opt/software/mysql/mysql8
      datadir=/opt/software/mysql/mysql8-files
      socket=/tmp/mysql.sock
      # 自定义服务端口
      port=3309
      # 修改数据库日志时间格式
      log_timestamps=SYSTEM
      sql_mode=NO_ENGINE_SUBSTITUTION
      # 以下是优化项 视情况修改添加
      wait_timeout=2880000
      max_allowed_packet=128M
      
      [mysqld_safe]
      log-error=/opt/software/mysql/logs/mysql8/mysqld-error.log
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
    5. 权限处理

      # 为用户的添加文件夹的权限
      chown -R mysql:mysql /opt/software/mysql
      # 对文件夹的赋权
      chmod 750 /opt/software/mysql/mysql8-files
      
      • 1
      • 2
      • 3
      • 4
    6. 初始化mysql,获取root临时密码。由于my.cnf配置文件中配置的是表名不区分大小写,所以在初始化的时候也需要使用参数--lower-case-table-names表名不区分大小写。否则Mysql启动会失败([ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').)。

      # 编译安装并初始化mysql
      cd /opt/software/mysql/mysql8;./bin/mysqld --initialize --user=mysql --basedir=/opt/software/mysql/mysql8 --datadir=/opt/software/mysql/mysql8-files --lower-case-table-names=1
      
      • 1
      • 2

      执行结果 :在这里插入图片描述
      [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: zpjhj;4.,密码中存在特殊字符时,可以用单引号直接包裹密码。

    7. 启动Mysql服务

      # 启动mysql服务
      cd /opt/software/mysql/mysql8; ./support-files/mysql.server start
      
      • 1
      • 2

      控制台输出:

      Starting MySQL. SUCCESS!
      
      • 1

      启动成功之后会在对应的日志中输出日志,并且默认在/opt/software/mysql/mysql8-files中生成’${hostname}.pid’。

    8. 配置环境变量(临时方式)

      export PATH=$PATH:/opt/software/mysql/mysql8/bin
      
      • 1
    9. 登录Mysql,支持远程登录

      # 使用临时密码登录
      mysql -u root -p'zpjhj;4.
      # 修改root初始化密码
      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
      flush privileges;
      exit
      
      mysql -u root -p'123456'
      # 使root支持远程登录
      use mysql;
      update user set host='%' where user='root';
      flush privileges;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
    10. 使用DBeaver进行远程登录

      在这里插入图片描述

    11. 简单库操作

      # 创建数据库 tutorial
      CREATE DATABASE tutorial;
      show databases;
      # 创建用户tutorial 支持远程
      CREATE USER  'tutorial'@'%' identified by 'tutorial';
      use mysql;
      select user from user;
      # 将数据库tutorial权限授予用户tutorial
      GRANT ALL ON tutorial.* TO 'tutorial'@'%';
      SHOW GRANTS FOR 'tutorial'@'%';
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

    注册成系统服务并自启动

    实现支持mysql命令,mysql服务系统化,可满足随系统开机自启动。

    # mysqld服务到系统
    cd /opt/software/mysql/mysql8;
    cp -a ./support-files/mysql.server /etc/init.d/mysql;
    # 授权以及添加服务
    chmod +x /etc/init.d/mysql
    chkconfig --add mysql
    service mysql start
    service mysql status
    # 将mysql命令添加到服务 
    ln -s /opt/software/mysql/mysql8/bin/mysql /usr/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    问题总结

    启动异常一
    ./support-files/mysql.server:行239: my_print_defaults: 未找到命令
    ./support-files/mysql.server: 第 259 行:cd: /usr/local/mysql: 没有那个文件或目录
    Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)
    
    • 1
    • 2
    • 3

    解决方案

    编辑文件/opt/software/mysql/mysql8/support-files/mysql.server,给脚本最初的变量basedirdatadir进行赋值,应该在46和47行

    basedir=/opt/software/mysql/mysql8
    datadir=/opt/software/mysql/mysql8-files    
    
    • 1
    • 2

    简单使用

    创建数据库 tutorial

    CREATE DATABASE tutorial;
    show databases;
    
    • 1
    • 2

    创建用户tutorial 支持远程

    CREATE USER  'tutorial'@'%' identified by 'tutorial';
    use mysql;
    select user from user;
    
    • 1
    • 2
    • 3

    将数据库tutorial权限授予用户tutorial

    GRANT ALL ON tutorial.* TO 'tutorial'@'%';
    SHOW GRANTS FOR 'tutorial'@'%';
    
    • 1
    • 2

    以上操作之后,可以通过自定义用户和数据库进行愉快的使用了。

    卸载mysql

    1. 查看mysql运行状态

      service mysql status
      
      • 1
    2. 停止mysql运行,如果没有运行则跳过。

      service mysql stop
      
      • 1
    3. 查询是否有mysql

      rpm -qa|grep -i mysql
      
      • 1

      结果

      perl-DBD-MySQL-4.023-5.el7.x86_64
      
      • 1

      删除

      rpm -ev perl-DBD-MySQL-4.023-5.el7.x86_64 --nodeps
      
      • 1
    4. 查出MySQL相关的文件/文件夹,逐一删除

      find / -name mysql
      
      • 1

      在这里插入图片描述

      同时删除日志文件。

      rm -rf /opt/software/mysql/logs/mysql8
      
      • 1
    5. 删除用户、用户组

      userdel mysql
      groupdel mysql
      
      • 1
      • 2
  • 相关阅读:
    [题] 子矩阵的和 #二维前缀和
    线性代数学习笔记7-2:矩阵对角化、求矩阵的幂、求一阶差分方程和Fibonacci数列(特征值的应用)
    10分钟完成微信JSAPI支付对接过程-JAVA后端接口
    vue 简介 (MVVM介绍,超详细)
    2022年最新前端面试题,持续更新
    Node如何获取pnpm安装的包源码真实代码路径并操作
    几种嵌入式可编程芯片的简介
    七个很实用的开源项目「GitHub 热点速览」
    端口转发工具Rinetd详细入门教程
    数据测试实践:从一个bug开始的大数据引擎兼容性探索
  • 原文地址:https://blog.csdn.net/weixin_43820556/article/details/128137818