Linux-mysql卸载、安装和升级

文章目录

        • (一)Mysql卸载
        • (二)Mysql安装
          • (一)yum安装
          • (二)RPM安装
          • (三)docker安装
          • (四)二进制安装
          • (四)源码安装
        • (三)Mysql升级
          • (一)二进制或基于软件包安装的升级
          • (二)基于docker安装的升级

用作学习笔记,具体可参看官方文档
https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/upgrading.html

(一)Mysql卸载

1、使用以下命令查看当前安装mysql情况,以及查看包名

rpm -qa|grep  -i mysql

2、停止mysql服务、删除之前安装的mysql,该方式可防止有依赖包错误
删除命令:

rpm -ev 包名 --nodeps

例:rpm -ev MySQL-client-5.5.25a-1.rhel5
3、查找之前老版本mysql的目录、并且删除老版本mysql的文件和库

find / -name mysql

删除对应的mysql目录
例如:rm -rf /var/lib/mysql
注意:卸载后/etc/my.cnf不会删除,需要进行手工删除

rm -rf /etc/my.cnf

4、再次查找机器是否安装mysql

rpm -qa|grep -i mysql

无结果,说明已经卸载彻底

(二)Mysql安装

(一)yum安装

(1)先查看自己Linux的内核版本,然后根据版本下载对应的 RPM 包

cat /proc/version  #查看内核版本

官网下载MySQL Yum存储库页面:https://dev.mysql.com/downloads/repo/yum/
(2)如本机版本为 3.10.0-1160.el7.x86_64,所以对应的下载版本为:
在这里插入图片描述
(3)使用以下命令安装下载的发布包,把包名称换成自己下载的版本

sudo yum install mysql80-community-release-el7-{version-number}.noarch.rpm

(4)可以通过以下命令检查MySQL Yum存储库是否已成功添加

yum repolist enabled | grep "mysql.*-community.*"

成功的输出如下,是mysql相关的文件
Linux-mysql卸载、安装和升级_第1张图片
(5)下载好Mysql安装包之后,根据自己的需求,安装需要的版本,如果安装的是最新版本,可以直接跳转到(6)步,因为默认安装是最新版本,但是我是安装的5.7版本,所以要找对应的系列
1)查看MySQL Yum存储库中的所有子存储库,并查看哪些子存储库已启用或禁用,默认最新版本是启用的

yum repolist all | grep mysql

2)若要安装的是除最新版本以外的系列,可以需要手动命令启用子存储库,或者直接修改配置文件启用,如下命令启用5.7,禁用8.0

sudo yum-config-manager --enable mysql57-community
sudo yum-config-manager --disable mysql80-community

还可以通过手动编辑文件来选择发布序列,进入配置文档

vim /etc/yum.repos.d/mysql-community.repo

然后找到对应的选项进行修改成如下:

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
#Enable to use MySQL 8.0
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

3)通过运行以下命令并检查其输出,验证是否已启用和禁用正确的子存储库

yum repolist enabled | grep mysql

(6)安装Mysql
1)执行以下语句进行安装

sudo yum install mysql-community-server

但是此处一直报错:
获取 GPG 密钥失败:[Errno 14] curl#37 - “Couldn’t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022”
是因为 /etc/pki/rpm-gpg 文件里面找不到密钥相关的文件,所以需要执行如下语句,将文件下载下来

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

此时就能找到GPG密钥了
在这里插入图片描述
2)启动Mysql,并查看状态

systemctl start mysqld #启动
systemctl status mysqld #状态查看

(7)以上步骤即可完成Mysql的yum安装,接下来就是配置root账号,然后登入数据库
1)先进入以下文件,查看root账号的密码

sudo grep 'temporary password' /var/log/mysqld.log

2)记住密码,用root账号即可登入数据库,进入数据库后需要立即修改root密码

mysql -uroot -p
(二)RPM安装

(1)下载rpm包
1)直接在Oracle官网下载rpm包:https://dev.mysql.com/downloads/mysql/
根据自己的操作系统和对应版本,找到要下载的tar包,此处为Linux7
Linux-mysql卸载、安装和升级_第2张图片
下载后的文件可能需要挪动位置,移到自己想要存放的位置,移动方式如下:
先进入 下载文件夹所在位置,找到下载好的tar包
然后将文件进行移动,以下是移动到 opt

mv mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar /opt/

2)也可以直接通过命令在线的方式下载,命令后面的为要安装的对应版本的tar包名称

wget http://dev.mysql.com/get/mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar

(2)下载之后即可进行安装,安装的所有文件对应路径请参照官方文档
1)进入安装包所在路径,解压安装包

tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar

2)删除自带的数据库 mariadb,否则会跟 mysql 发生冲突

rpm -qa | grep mari

若存在则进行删除

rpm -e --nodeps mariadb-libs
rpm -e --nodeps marisa

3)可以直接用yum安装管理器安装,更加方便,下面语句即可直接安装

sudo yum install mysql-community-{server,client,common,libs}-*

也可以使用 rpm -ivh 命令进行安装,但是更容易出现故障,因为安装过程可能会遇到潜在的依赖性问题

rpm -ivh mysql-community-common-8.0.30-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-8.0.30-1.el7.x86_64.rpm 
rpm -ivh mysql-community-client-8.0.30-1.el7.x86_64.rpm 
rpm -ivh mysql-community-server-8.0.30-1.el7.x86_64.rpm

但是在安装的时候一直报错:依赖检测失败,某包被某包所需要
解决办法是在四句的命令语句后面添加 --nodeps --force
–nodeps 就是安装时不检查依赖关系,即当A被B需要,但是没有A的时候,B也可以安装
–force 就是强制安装
用法如下:

rpm -ivh mysql-community-common-8.0.30-1.el7.x86_64.rpm --nodeps --force

(3)以上方式即可实现rpm安装,数据库的登入请参照yum安装

(三)docker安装

(1)docker容器的下载和安装
1)此处下载阿里云的镜像,官网下载太慢

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2)安装Docker CE,Docker CE指的是docker社区版,提供了简单的安装和快速的安装,以便可以立即开始开发

yum -y install docker-ce docker-ce-cli containerd.io

3)启动docker,查看docker状态

systemctl start docker #启动docker
systemctl status docker #查看docker状态

(2)Mysql的下载和安装
1)在docker中下载Mysql镜像,mysql:5.7.35 此为要下载的版本,可自定义

docker pull mysql:5.7.35

2)查看当前docker的所有镜像,看是不是已经下载了所需要的镜像,有的话说明已经安装成功

docker images

3)安装成功后,启动指定的mysql容器,初始数据库密码为root,此时数据库成功启动,有对应实例

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.35

4)查看容器的运行实例的名字 ,找到要登入的mysql容器的名字

docker ps -a

在这里插入图片描述
5)进入mysql对应的容器

docker exec -it 容器的名字 bash

6)登入mysql,默认密码为 root

mysql -u root -p

7)退出mysql容器

Ctrl + d 退出并停止容器;
Ctrl + p + q 退出并在后台运行容器

8) 查看所有实例运行

docker ps -a

9)删除实例

docker rm 实例名称 #(CONTAINER ID)

10) 停止实例

docker stop 575e36be87a7 #(CONTAINER ID)

11)删除mysql镜像

docker rmi 3147495b3a5c #IMAGE ID

查看目前docker里面的镜像是否还有被删除的

docker images

12)若出现以下报错,这是因为本机已经有该容器名了,不能再次启动
docker: Error response from daemon: Conflict. The container name “/mysql” is already in use by container
查找目前运行中的所有实例 docker ps -a ,若该实例可以删除,才能把该实例删掉 docker rm 55dc49ce09e6
在这里插入图片描述
然后重新启动指定的数据库
但是不支持删除实例,因为实例下有数据库,可以给mysql容器重命名。

(四)二进制安装

1)下载二进制安装包

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

2)解压安装包到 /usr/src/ ,并重命名文件夹,此时mysql的相关文件已经加载到指定目录下

tar zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/src/     #解压安装包
mv mysql-5.7.30-linux-glibc2.12-x86_64/  mysql  #重命名文件夹为mysql

3)创建运行用户

groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql

4)手动创建数据目录,并授权

mkdir -p /data/mysql                                   
chown -R mysql /data/mysql/

5)对数据库安装目录进行授权设置,即 2)中的mysql相关文件所在目录

chown -R mysql:mysql /usr/src/mysql/

6)手动创建 vim /etc/my.cnf 配置文件,并将以下信息添加进去

[client]    
port        = 3306
socket      = /data/mysql/mysql.sock

[mysqld]    
port        = 3306
socket      = /data/mysql/mysql.sock
user = mysql

basedir = /usr/src/mysql
datadir = /data/mysql
 
skip-external-locking
key_buffer_size = 32M #索引缓冲区大小
max_allowed_packet = 1024M #允许运行最大的数据包是多少
table_open_cache = 128 #表高速缓存的数量
sort_buffer_size = 768K #执行排序使用的缓冲大小
net_buffer_length = 8K #向网络连接发送数据时使用的缓冲区的大小
read_buffer_size = 768K #表顺序扫描的缓存大小
read_rnd_buffer_size = 512K #表随机顺序扫描的缓存大小
myisam_sort_buffer_size = 8M #执行排序使用的缓冲大小
query_cache_size = 16M #查询缓存
tmp_table_size = 32M #sql执行时生成的临时表的内存缓存大小
performance_schema_max_table_instances = 1000 #。。。
explicit_defaults_for_timestamp = true #timestamp列默认为null
#skip-networking #跳过密码登入
max_connect_errors = 100 #允许连接错误的最大次数
open_files_limit = 65535 #进程能使用的最大文件描述符数量

log_bin=mysql-bin
binlog_format=mixed
server_id   = 232
expire_logs_days = 10
early-plugin-load = ""

default_storage_engine = InnoDB #默认存储引擎
innodb_file_per_table = 1 #开启独立表空间
innodb_buffer_pool_size = 128M #表数据和索引数据的最大内存缓冲区大小
innodb_log_file_size = 32M #日志文件大小
innodb_log_buffer_size = 8M #日志文件缓存大小
innodb_flush_log_at_trx_commit = 1 #日志刷新提交方式
innodb_lock_wait_timeout = 50 #锁超时异常时间

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M

7)进入mysql安装目录

cd /usr/src/mysql

进行初始化mysql

/usr/src/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/src/mysql --datadir=/data/mysql

在这里插入图片描述
root初始化密码需要记录下来
8)将msql添加到环境变量

echo "export PATH=$PATH:/usr/src/mysql/bin" >> /etc/profile
. /etc/profile  #立即生效

9)将support-files文件夹下的mysql.server脚本文件,复制到/etc/rc.d/init.d目录下,并改名为mysqld,然后再设置执行权限

cp support-files/mysql.server /etc/rc.d/init.d/mysqld                               
chmod +x /etc/rc.d/init.d/mysqld

10)将mysqld添加为systemd标准服务,方便以后使用“systemctl”命令进行管理

vim /lib/systemd/system/mysqld.service

将以下信息添加进去

[Unit]
Description=mysqld
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/init.d/mysqld start
ExecReload=/etc/rc.d/init.d/mysqld restart
ExecStop=/etc/rc.d/init.d/mysqld stop

PrivateTmp=true

[Install]
WantedBy=multi-user.target

11)依次执行下列的语句

systemctl daemon-reload 
systemctl enable mysqld
systemctl start mysqld
netstat -lnt

12)以上操作即可实现mysql数据库的二进制安装

(四)源码安装

待更新。。。

(三)Mysql升级

此处作为笔记进行梳理,具体请参看官方文档https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/upgrading.html

(一)二进制或基于软件包安装的升级

(1)就地升级 还在研究中~~~~~~
1)下载最新版mysql 8 二进制安装包

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz

2)原地解压安装包,并重命名文件夹,将文件移动到 /usr/src/ ,此时mysql的相关文件已经加载到指定目录下

tar xvf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz     #解压安装包
mv mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz  mysql8  #重命名文件夹为mysql8

将根目录下的文件复制到指定文件夹下 /usr/src/mysql8/

cp -a mysql8 /usr/src/mysql8/

删除原文件

rm -rf mysql8

3)对数据库新的安装目录进行授权设置,即 2)中的mysql8相关文件所在目录

chown -R mysql:mysql /usr/src/mysql8

4)把MySQL的软连接指向新的mysql服务

unlink /usr/src/mysql/mysql
ln -s /usr/src/mysql8 /usr/src/mysql

5)使用现有数据目录启动新MySQL8服务器

mysqld_safe --user=mysql --datadir=/path/to/existing-datadir

6)运行mysql_upgrade

mysql_upgrade -u root -p

7)关闭并重新启动MySQL服务器以确保对系统表所做的任何更改都生效

mysqladmin -u root -p shutdown
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
systemctl start mysqld  #重启
systemctl status mysqld  #查看数据库状态

(2)逻辑升级
直接下载安装新版本,然后把原先的数据文件进行导出,新版本安装好后,直接导入数据文件,具体参看官方文档

(二)基于docker安装的升级

1)停止MySQL服务器(容器名称在此实例中),参看 docker安装的(2)的 4)点

docker stop mysql  #对应的数据库实例名字

2)拉取要升级的新版本,此处拉取8.0.22

docker pull mysql:8.0.22

3)将旧服务器数据和配置挂载到本地目录下,src=本地目录,如果没有文件夹,需要创建

docker run --name=mysql8.0.22 \
   -p 3306:3306 \
   --privileged=true \
   --mount type=bind,src=/etc/mysql,dst=/etc/my.cnf \
   --mount type=bind,src=/var/lib/mysql,dst=/var/lib/mysql \
   --restart=always \
   -d mysql:8.0.22 #版本号

本地创建文件夹

mkdir -p /etc/mysql
mkdir -p /var/lib/mysql

4)需要通过在MySQL 8.0 Server容器中运行mysql_upgrade实用程序来完成升级过程

docker exec -it mysql8.0.22 mysql_upgrade -uroot -p

5)重新启动新容器完成升级

docker restart mysql8.0.22

6)查看当前运行的实例,可以看到 IMAGE 已经都是最新版本

docker ps -a

7)按原先的 数据库容器的名字 进入容器

docker exec -it mysql  bash
mysql -u root -p

8)查看数据库版本,为8.0.22
Linux-mysql卸载、安装和升级_第3张图片

你可能感兴趣的:(数据库相关,mysql,linux,运维)