Linux 原生安装最新版MySQL 8.4 不分发行版Linux系统通用

avatar
作者
筋斗云
阅读量:1

文章目录

Linux 下安装最新版MySQL 8.4不分发行版 Linux系统通用

    Linux下安装mysql8的方式很多通过系统带的包管理器apt|yum|dpkg 等工具安装简单快捷,但是每种方式多多少少有些区别懒得记,为什么就不统一呢? 而且安装文件分布位置不是很清楚,管理服务命令还不一样 。想到这里我就要吐🤢🤢🤢🤢🤢🤢。
    纯纯浪费我时间、脑容量。真的很无语! 还好MySQL官方提供了二进制安装包可以在Linux系统下通用。无论是基于Debian的Ubuntu系列还是Redhat系列的CentOS是可以,终于可以只用专注一种安装方式了。
    下面就使用MySQL 二进制安装包方式安装,我的软件目录、数据目录、配置文件目录、日志目录、PID文件目录 ,自己安装的都清楚知道。有一种更能掌握掌控的感觉,更放心!
     亲测 CentOS 8、Ubuntu 20.04、Ubuntu 18.04 OK !

准备工作

切换到root账户

ubuntu系统 执行 sudo -i 切换到root 方便操作

查看系统是否支持glibc2.28

因为安装的版本比较新需要新版glic2.28

redhat、centos系列使用以下命令

strings /lib64/libc.so.6 | grep GLIBC_2.28 

有输出版本号证明支持
在这里插入图片描述

debian、ubuntu系列使用以下命令

strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_2.28 

若是不支持需要添加 GLIBC_2.28查看这篇教程安装
在这里插入图片描述

移除旧版本

如果你安装过mysql 为了防止出现奇奇怪怪问题,我们把旧版本卸载删除相关包和残留文件

redhat、centos系列使用yum命令

	# yum 查询已安装的 MySQL 相关包 	rpm -qa | grep -i mysql 	# 卸载 MySQL 相关包 	yum remove mysql-* 	# 卸载完再查询还有无相关包 	rpm -qa | grep -i mysql  

debian、ubuntu系列使用apt命令

	# 卸载mysql相关     apt-get remove --purge mysql-*     # 清除残留     apt-get autoremove     apt-get autoclean 

删除相关配置文件和安装目录

   rm -rf /etc/my.cnf    rm -rf /var/lib/mysql    rm -rf /etc/mysql 

安装mysql依赖

安装mysql所需要的依赖

redhat、centos系列使用yum命令

yum install -y libaio yum install -y ncurses-compat-libs 

debian、ubuntu系列使用apt命令

apt-get install libaio1 

下载MySQL

官网下载页面 获取下载链接

注意查看系统架构,地球人都知道查看系统架构命令 uname -m。如果你是arm架构选择arm版本的二进制包
在这里插入图片描述

wget命令下载安装包

# -P 指定下载目录 wget -P /soft https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz 

.

开始安装mysql

创建运行mysql的用户和用户组
groupadd mysql useradd -r -g mysql -s /bin/false mysql 
解压安装包

解压到 /usr/local/

tar xvf /soft/mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz -C /usr/local/ 

如果你的tar 命令不支持解压.xz格式 使用下面命令解压

xz -dcv /soft/mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz | tar x -C /usr/local/ 

解压后目录名太长改成 mysql

mv /usr/local/mysql-8.4.0-linux-glibc2.28-x86_64 /usr/local/mysql 
修改权限创建目录

依次执行下面命令

# 创建数据目录,根据自己需求调整 mkdir -p /disk/mysqldata  cd /usr/local/mysql mkdir mysql-files mkdir log touch log/error.log chmod 750 mysql-files chown mysql:mysql -R /usr/local/mysql/ chown mysql:mysql /disk/mysqldata 
初始化mysql
#--basedir 安装目录  --datadir数据存储目录 可以按需调整 /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/disk/mysqldata 

查看初始化日志 root账户的初始化密码输出在日志中

#初始化日志输出到 /usr/local/mysql/log/error.log 文件中  #查看该文件 cat /usr/local/mysql/log/error.log 

在这里插入图片描述

设置配置文件

配置文件位于 /etc/my.cnf
创建配置文件
vim /etc/my.cnf

文件中写入以下内容(配置文件根据自己需要调整)

[client] # 指定了客户端与服务器通信的套接字文件路径 socket = /tmp/mysql.sock  [mysqld_safe] # 错误日志的存放位置。 log_error = /disk/mysqldata/error.log # 存放服务器进程 ID 的文件 pid_file = /disk/mysqldata/mysqld.pid  [mysql] socket = /tmp/mysql.sock  [mysqld] # mysql 的运行用户 这里的用户一定要和初始化时的用户一致 user = mysql # 指定 MySQL 服务监听的端口为 3306 port = 3306 # 指定 MySQL 的安装目录 basedir = /usr/local/mysql # 指定数据文件的存储位置。 datadir = /disk/mysqldata socket  = /tmp/mysql.sock # 日志目录 log_error = /usr/local/mysql/log/error.log # 设置SQL 模式 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'  

启动mysql

初始化后已经自动注册了系统服务 使用 systemctl 命令管理

启动

systemctl start mysqld 

如果启动报错使用 journalctl -u mysqld.service 命令查看日志

查看状态

systemctl status mysqld 

active (running) 表示运行中
在这里插入图片描述

停止

systemctl stop mysqld 

重启

systemctl restart mysqld 

设置mysql开机自启

systemctl enable mysqld 

若是不能执行 systemctl mysqld 相关命令,有的系统上mysql初始化完会自动创建单元服务配置文件,有的没有。 没有关系小问题。 没有自动创建我们就手动创建

创建单元服务配置文件

sudo sudo vi /lib/systemd/system/mysql.service 

填入以下内容

[Unit] Description=MySQL Server After=network.target  [Service] Type=simple ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf User=mysql Group=mysql TimeoutSec=300 PrivateTmp=true  [Install] WantedBy=multi-user.target  

然后重新加载单元配置

sudo systemctl daemon-reload 

现在就可以执行 systemctl start mysqld 相关命令了

修改默认密码

登录mysql

# 回车后输入刚刚日志中的默认密码 /usr/local/mysql/bin/mysql -h 127.0.0.1 -p 

若是报错 /usr/local/mysql/bin/mysql: error while loading shared libraries: libncurses.so.6: cannot open shared object file: No such file or directory
需要安装 libncurses6

修改密码

# 执行SQL 修改密码 BY 'root'; 这里就是设置的密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; 

设置root可远程连接,这样我们就可以使用navicat连接数据库了

use mysql; select host, user from user; update user set host = '%' where user='root'; flush privileges; 

Navicat 连接成功! 若以上都没有问题还是连接不上请检查防火墙、安全组
在这里插入图片描述

完!

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!