文章目录
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 连接成功! 若以上都没有问题还是连接不上请检查防火墙、安全组
完!