Linux CentOS系统安装mysql8.0.31(tar方式)
创始人
2024-03-08 11:14:06
0

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

文章目录

  • Linux系统安装mysql8.0.31(TAR方式)
    • 安装包的下载
    • 安装Mysql8.0.31
    • 注册成系统服务并自启动
      • 问题总结
        • 启动异常一
    • 简单使用

安装包的下载

选择的是 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
    
  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;
    
  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
    
  4. mysql8文件夹下新建用户级配置文件my.cnf

    touch /opt/software/mysql/mysql8/my.cnf;
    vim /opt/software/mysql/mysql8/my.cnf
    

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

    [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
    interactive_time=280000
    thread_concurrency=20
    max_connections=1500
    max_connect_errors=30
    table_open_cache=1024
    myisam_sort_buffer_size=32M
    bulk_insert_buffer_size=32M[mysqld_safe]
    log-error=/opt/software/mysql/logs/error.log
    
  5. 权限处理

    # 为用户的添加文件夹的权限
    chown -R mysql:mysql /opt/software/mysql
    # 对文件夹的赋权
    chmod 750 /opt/software/mysql/mysql8-files
    
  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
    

    执行结果 :在这里插入图片描述
    [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
    

    控制台输出:

    Starting MySQL. SUCCESS!
    

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

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

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

    # 使用临时密码登录
    mysql -u root -p'zpjhj;4.
  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'@'%';
    

注册成系统服务并自启动

实现支持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

问题总结

启动异常一

./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)

解决方案

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

basedir=/opt/software/mysql/mysql8
datadir=/opt/software/mysql/mysql8-files    

简单使用

创建数据库 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'@'%';

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

相关内容

热门资讯

952名缅甸妙瓦底地区涉电诈犯... 来源:人民日报客户端 中缅泰联合开展清剿缅甸妙瓦底地区 赌诈园区行动 952名缅甸妙瓦底地区涉电诈犯...
原创 新... 最近几个赛季,孙铭徽一直都被视为广厦的“小外援”,距离他上一次场均得分不到两位数,还要追溯到2018...
意大利要求Meta暂停禁止竞争... 意大利已下令Meta公司暂停其禁止企业在WhatsApp上使用商业工具提供自家AI聊天机器人的政策。...
山西证券(002500)披露现... 截至2025年12月25日收盘,山西证券(002500)报收于6.11元,较前一交易日上涨0.33%...
瑞典北部发生暴力犯罪事件,多人... 斯德哥尔摩消息:据瑞典媒体报道,25日圣诞节当天,瑞典北部布登市中心城区发生一起暴力犯罪事件,多人受...
博世科及子公司累计新增诉讼、仲... 12月25日,博世科(300422)发布公告,自2025年7月29日至2025年12月24日,公司及...
阳泉市郊区靶向发力精准落实低保... “民生无小事,枝叶总关情。”群众的“急难愁盼”就是监督的发力点。山西省阳泉市郊区纪委监委、阳泉市郊区...
公开背刺?亨特·拜登批评其父移... 亨特·拜登,美国前总统乔·拜登之子,在一档新播出的访谈节目中,就其父亲宽松的移民政策以及从阿富汗撤军...
倍轻松因涉嫌违反证券法律法规等... 证券之星消息,12月26日倍轻松公开信息显示,深圳市倍轻松科技股份有限公司,董事长马学军因涉嫌违反证...