银河麒麟系统及Linux下安装MySQL8.0详细教程,跟着操作百分百安装成功!
之前在Linux下安装过几次MySQL,后来MySQL升级到8.0以后,安装变的很繁琐,产生的问题也乱七八糟,有时候网上还找不到解决的办法,这次记录一下安装的步骤,也给大家做个参考。
这次使用的是国产银河麒麟Linux系统是arm架构64位的,安装步骤与Centos Linux系统其实没啥差别。
1.查询Linux版本与架构
首先我们需要先确定Linux系统的架构,aarch64表示架构为arm架构64位,x86_64表示为x86架构64位,根据架构和gblic版本不同,需要准备的MySQL安装包也有差别
#查看linux的架构模式
uname -m
#查看gblic版本
ldd --version
2.准备MySQL安装包
从第一步知道自己的系统架构和gblic版本后,下面需要到MySQL官网下载安装包,我用的是MySQL8.0.42,官网:https://dev.mysql.com/downloads/mysql/,安装包具体信息如下图或者网盘获取,要看清楚自己需要的版本
mysql安装包 链接:https://pan.baidu.com/s/1xaSZ_rL-_IS1QFbpHCHmuA
提取码:swh2
MySQL压缩包的区别说明
- mysql-8.0.42-linux-glibc2.28-aarch64.tar.xz主程序压缩包,这个在tar基础上经过压缩算法进一步压缩的压缩包,体积比普通tar包小,包含了MySQL 8.0.42的核心二进制文件(如
mysqld
、mysql
客户端等),适用于生产环境部署。 - mysql-test-8.0.42-linux-glibc2.28-aarch64.tar.xz测试套件压缩包,仅包含MySQL的测试工具和脚本(如测试框架、用例),需配合主程序包使用。
- mysql-8.0.42-linux-glibc2.28-aarch64.tar主程序压缩包,普通tar包,内容与第一个相同,只是未经过算法压缩,体积更大一点。
3.安装环境检查
选择第一个mysql-8.0.42-linux-glibc2.28-aarch64.tar.xz点击下载,保存到任意文件夹,接着打开服务器,首先检查服务器之前有没有安装过mysql或者maridb相关的服务
# 1.查看有没有以rpm安装的mysql 在任意位置执行这个命令都可以
rpm -qa | grep -i mysql
# 执行完如果有返回值 执行下面的命令
rpm -ev 复制上个命令返回的结果
#如果执行rpm -ev 命令报错就加上--nodeps
rpm -ev --nodeps 上个命令返回的结果
举例如果执行rpm -qa | grep -i mysql命令返回mysql-libs-5.5.68-1.el7.x86_64
那么就执行rpm -ev mysql-libs-5.5.68-1.el7.x86_64 如果执行这条命令报错那么就执行
rpm -ev --nodeps mysql-libs-5.5.68-1.el7.x86_64
我的没有返回值所以就没截图举例
2.上面的命令执行完后,接着删除mysql相关目录
# 获取mysql相关目录 任意位置执行这个命令都可以
find / -name mysql
#上面的命令有返回值的话执行 删除所有相关目录,-rf:表示不询问直接删除文件 把所有返回的目录删完
rm -rf 返回的目录
#再执行一次 验证有没有删干净
find / -name mysql
3.删除my.cnf文件
#首先查找my.cnf文件存在哪个目录
find / -name my.cnf
#删除 my.cnf,如果上条命令有返回的目录执行下面的命令,把所有的my.cnf删完,如果没有返回就不用执行了
rm -rf 返回的my.cnf所在的目录
4.查找存不存在mariadb相关的文件
yum list installed | grep mariadb
如果查找出来存在相关的文件 执行 直到把所有的都删完
yum remove xxx(指刚刚查出来的maridb的文件名字)
删完后再执行一次yum list installed | grep mariadb如果没有返回值表示删干净了
如果以前设置了mysql的环境变量需要删除环境变量
#查看并编辑环境变量
#进入vim后按i进行编辑 编辑完后 按esc 再按shift+: 输入wq保存并退出,输入!q表示强制退出不保存
vim /etc/profile
# 删除环境变量后,刷新环境
source /etc/profile
查看是否卸载干净,如果没有返回值表示卸载干净了
rpm -qa|grep -i mysql
4.上传MySQL安装包
接着将刚刚下载好的mysql压缩包传到服务器的opt目录下,也可以通过使用wget命令下载,这里就不演示了
将压缩包传过来后,我们解压缩这个压缩包,解压过程需要等一会儿,一直到再次出现光标闪动才算解压完成,在opt目录下执行
tar -xvf mysql-8.0.42-linux-glibc2.28-aarch64.tar.xz
使用 ll 命令查看当前目录,可以看见多出一个mysql-8.0.42-linux-glibc2.28-aarch64目录
由于mysql-8.0.42-linux-glibc2.28-aarch64目录名称太长,将这个目录重命名,在opt目录下执行
mv mysql-8.0.42-linux-glibc2.28-aarch64/ mysql-8.0.42
到这里可以将msyql的压缩包删掉了,在opt目录下执行
rm -rf mysql-8.0.42-linux-glibc2.28-aarch64.tar.xz
5.创建MySQL需要的目录及授权
接下来进入mysql-8.0.42目录下,执行 ll 命令并查看mysql8.0.42都包含哪些文件
cd mysql-8.0.42/
然后创建三个新文件夹,在mysql-8.0.42目录下执行
# 数据存储
sudo mkdir data
# 日志存储
sudo mkdir log
# 临时文件
sudo mkdir tmp
接着新增用户组
sudo groupadd mysql
新增组用户
sudo useradd -g mysql mysql
用户授权,后面的路径应该为你自己实际安装的路径,如果你是跟着我这个步骤做的就不用改了
sudo chown -R mysql:mysql /opt/mysql-8.0.42/
给mysql8.0.42目录下所有目录授权,后面的路径应该为你自己实际安装的路径,如果你是跟着我这个步骤做的就不用改了
chmod 777 /opt/mysql-8.0.42
6.配置mysql环境变量
配置MySQL路径到环境变量
vi /etc/profile
在profile文件最后增加下面的配置,路径应该为你自己实际安装的mysql路径,如果跟着我做的话就不用改了,增加后记得保存退出。(vi/vim编辑器的部分命令:i 编辑,esc退出编辑 shift+: 输入wq保存并退出)
export PATH=$PATH:/opt/mysql-8.0.42/bin
重新加载环境变量。
source /etc/profile
7.编写MySQL配置文件
一般情况下,系统中是不含这个文件的,除非之前安装过有遗留。
vi /etc/my.cnf
# 正常情况下是没有这个文件的,执行保存之后会自动创建
配置文件内容如下(路径记得改为自己的,socket = /tmp/mysql.sock路径不用改),将下面的配置文件粘贴到my.cnf中保存并退出。
[mysqld]
#允许所有 IP 连接(0.0.0.0 表示不限制)
bind-address = 0.0.0.0
#自定义 MySQL 服务端口(默认 3306)
port = 3306
#MySQL 安装目录。
basedir = /opt/mysql-8.0.42
#数据文件存储路径
datadir = /opt/mysql-8.0.42/data
#本地连接使用的 Unix 套接字文件。
socket = /tmp/mysql.sock
#错误日志路径(排查故障关键文件)
log-error = /opt/mysql-8.0.42/log/error.log
#进程 ID 文件路径。
pid-file = /run/mysqld/mysql.pid
#pid-file = /opt/mysql-8.0.42/data/mysql.pid
#临时文件目录
tmpdir = /opt/mysql-8.0.42/tmp
#表名存储为小写,比较时不区分大小写。
lower_case_table_names = 1
#表名存储为创建时的大小写,但比较时转换为小写
#lower_case_table_names = 2
#默认引擎(推荐 InnoDB)
default-storage-engine=INNODB
#InnoDB 缓冲池大小
innodb_buffer_pool_size = 5G
# 服务端默认字符集
character-set-server = utf8mb4
# 默认排序规则
collation-server = utf8mb4_unicode_ci
# 每个新连接初始化时执行的SQL
init_connect = 'SET NAMES utf8mb4'
#允许的最大数据包大小(避免大数据插入/导出失败)
max_allowed_packet=100M
#使用传统密码认证(兼容旧版客户端)
default-authentication-plugin = mysql_native_password
8.初始化数据库
一定要在mysql安装目录下的bin目录下执行,路径换成你自己的路径,我的安装路径在
/opt/mysql-8.0.42,所以要在/opt/mysql-8.0.42/bin下执行,你们要根据自己的路径去执行。
./mysqld --initialize --user=mysql --datadir=/opt/mysql-8.0.42/data --basedir=/opt/mysql-8.0.42
执行完上面的命令,会输出几行日志其中包含了初始化随机生成的密码,如下图红框中,将这个临时密码复制保存起来,一会儿要用到。
如果执行完初始化命令没有输出日志,或者忘了保存临时密码了,可以去日志文件中查看,首先进入到一开始创建的log目录中
执行命令,输出末尾500行日志,可以看到日志中输出输出了临时密码,将这个密码保存起来就行
tail -n 500 error.log
9.初始化msyql服务
必须在mysql的安装目录下执行
sudo cp -a ./support-files/mysql.server /etc/init.d/mysql
sudo chmod +x /etc/init.d/mysql
sudo chkconfig --add mysql
指令作用如下
cp -a ./support-files/mysql.server /etc/init.d/mysql
:这条指令用于将MySQL服务器的启动脚本mysql.server
从MySQL安装目录下的./support-files
文件夹复制到系统的服务管理目录/etc/init.d
,以便可以使用系统服务管理工具来控制MySQL服务。chmod +x /etc/init.d/mysql
:这条指令用于给复制到/etc/init.d
目录下的mysql
脚本文件添加执行权限,确保它能够被系统调用执行启动、停止等操作。chkconfig --add mysql
:这条指令用于将MySQL服务添加到系统服务的管理系统中,chkconfig
是Red Hat系列Linux系统(如CentOS、RHEL)中用于管理服务的命令,--add
选项表示添加一个新的服务。执行后,MySQL服务将能够通过service
命令或systemctl
(在使用systemd的系统上)进行启动、停止和重启
查看是否成功,如过出现如图所示输出则表示成功了
chkconfig --list mysql
10.启动mysql
执行下面的命令
sudo service mysql start
启动成功
11.修改初始化密码
进入mysql安装目录的bin目录,执行
./mysql -uroot -p
输入刚刚让你保存的临时密码,输入后是不显示的,所以只需要输入或者粘贴一次就行,回车登录mysql成功。
接着执行下面的命令,单引号中是你设置的新密码,我设置成123456
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
这样就修改成功了,可以退出mysql重新登陆试一下。输入exit退出,再次执行登录命令,登录成功
./mysql -uroot -p123456
12.配置Linux 系统服务工具,使MySQL可以用systemctl命令启动
因为安装mysql采用的是自己下载压缩包,或者传输压缩包的方式,并没有使用rpm或yum方式安装,是无法使用systemctl命令启动的,如果想使用systemctl start mysql 启动MySQL服务,需要配置以下内容。
首先查看系统存不存在mysql.service
find / -name mysql.service
如果之前没有安装过mysql,应该不存在的,我是装好了所以才存在,不论存不存在这个文件,执行下面的命令,不存在这个文件的执行完会打开一个空的文本,存在的会打开这个文本。(vi/vim编辑器的部分命令:i 编辑,esc退出编辑 shift+: 输入wq保存并退出)
vi /etc/systemd/system/mysql.service
不存在这个文本的,将下面的配置粘贴进去,之前存在的可以看看配置有没有区别,或者直接覆盖掉之前的文本。注意路径要换成自己msyql安装的路径,尤其是pid,pid要与前面my.cnf中的配置的路径保持一致否则会出错,一般情况下,pid路径就设置为/run/mysqld/mysql.pid,不改动,其他的路径要保证和自己安装的mysql路径一样。
[Unit]
#描述服务为MySQL服务器
Description=MySQL Server
#指定在网络服务启动后再启动MySQL服务
After=network.target
[Service]
#指定服务运行用户为mysql
User=mysql
#指定服务运行用户组为mysql
Group=mysql
#定义服务类型为simple(默认类型)
Type=simple
#指定PID文件路径 这个不改动
PIDFile=/run/mysqld/mysql.pid
#主启动命令,指定MySQL二进制文件和配置文件路径 你自己的路径
ExecStart=/opt/mysql-8.0.42/bin/mysqld --defaults-file=/etc/my.cnf
#停止服务时执行的命令 你自己的路径 这个用户与密码是你自己的
ExecStop=/opt/mysql-8.0.42/bin/mysqladmin -uroot -p123456 shutdown
#设置服务在异常退出时自动重启
Restart=on-failure
#禁用私有临时目录功能
PrivateTmp=false
#设置启动超时时间为300秒
TimeoutStartSec=300
#设置停止超时时间为30秒
TimeoutStopSec=30
#设置服务重启间隔为5秒
RestartSec=5s
[Install]
#指定服务所属运行级别为多用户模式
WantedBy=multi-user.target
重载配置
systemctl daemon-reload
测试是否可以使用systemctl停止
systemctl stop mysql
启动
systemctl start mysql
查看状态 启动后查看状态为 active(runing)表示启动成功
systemctl status mysql
到此汇总一下启动MySQL的几种方式
汇总一下启动mysql的几个方式,前提是按照步骤一直做到这一步。
1.进入mysql-8.0.42的support-files目录下执行命令./mysql.server start启动,执行./mysql.server stop停止
2.进入mysql-8.0.42的bin目录下执行命令./mysqld_safe & 启动
执行../support-files/mysql.server stop 停止
3.在任意目录下执行 sudo service mysql start启动,执行sudo service mysql stop停止
4.任意目录下执行 systemctl start mysql启动,执行systemctl stop mysql停止
13.远程连接
启动MySQL服务,登录mysql客户端,依次执行如下命令
mysql> use mysql;
mysql> update user set host='%' where user='root' and host='localhost';
mysql> flush privileges;
执行完毕后,打开navicat,输入自己服务器的地址,mysql的用户名和密码,测试连接成功。
到此linux下安装mysql8.0.42结束。 如果你跟着做完了,并且远程连接成功了,那就点个赞或收藏吧!