Linux Centos中卸载 安装Mysql

Linux Centos中卸载 安装mysql8.0

原本云服务器中安装的mysql版本是5.7,现在想将其替换为mysql8.0版本。主要是因为官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能!因此在安装前就需要先卸载旧版的mysql,防止出现不必要的冲突问题。

MySQL 推荐使用 RPM 包进行 Linux 平台下的安装,因为 RPM 包的安装和卸载都很方便,通过简单的命令就可以实现。下文中的卸载、安装过程都是基于RPM进行操作。

一、Linux Centos中卸载旧版Mysql

1、查看当前系统安装的mysql

1.1)、使用以下命令查看当前系统中是否安装 MySQL,命令和运行结果如下:

[root@VM-12-7-centos ~]# rpm -qa | grep -i mysql
mysql-community-common-8.0.25-1.el7.x86_64
mysql-community-client-8.0.25-1.el7.x86_64
mysql-community-libs-8.0.25-1.el7.x86_64
mysql-community-client-plugins-8.0.25-1.el7.x86_64
mysql-community-server-8.0.25-1.el7.x86_64

结果显示当前 Linux 上安装的 MySQL 8.0 版本,具体以自己系统显示为准。

2、停止服务,卸载Mysql的RPM包。

2.1)、停止mysql服务,之后进行卸载RPM包操作

# 停止mysql服务
[root@VM-12-7-centos ~]# systemctl stop mysqld
# 卸载旧版mysql的RPM包,需要将-e后的参数替换为自己当前系统安装的rpm包
[root@VM-12-7-centos ~]# rpm -e mysql-community-server-8.0.25-1.el7.x86_64

注意:

  • 不同版本的mysql安装后注册到系统中的服务名不同,具体需要尝试一下;比如:当前系统mysql8.0.25的服务名就是mysqld,mysql5.x服务名就是mysql,mysql4.x的服务名就是mysqld
  • CentOS 7 下,默认安装的数据库为 MariaDB,安装 MySQL 前需要卸载 MariaDB 数据库。
  • 如果卸载RPM提示错误,可使用命令 rpm -ev mysql-community-server-8.0.25-1.el7.x86_64 或 rpm -e --noscripts mysql-community-server-8.0.25-1.el7.x86_64 或者rpm -e --nodeps mysql-community-server-8.0.25-1.el7.x86_64卸载 MySQL。 带上 --nodeps 就是强制删除。

3、查找系统中所有mysql文件夹删除

####3.1)、查找系统中所有的 MySQL 的目录,进行删除。

# 从根目录进行查找所有的mysql文件夹
[root@VM-12-7-centos ~]# find / -name mysql
# 将查找到的目录文件进行删除
[root@VM-12-7-centos ~]# rm -rf 【要删除的mysql目录】

注意:

  • 以上步骤之后,旧版的mysql基本已经清除了,如果执行systemctl status命令依然可以提示mysql相关信息,此时重启下服务器即可。

二、Linux Centos中安装Mysql8.0

1、官网下载Mysql合适的安装包

1.1) 打开 MySQL 官方网站(http://www.mysql.com),如图 所示。

Linux Centos中卸载 安装Mysql_第1张图片

1.2)根据linux系统选择合适的安装版本

注意:

  • 百度Centos:CentOS是免费的、开源的、可以重新分发的开源操作系统 [1] ,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一。CentOS Linux发行版是一个稳定的,可预测的,可管理的和可复现的平台,源于[Red Hat Enterprise Linux](https://baike.baidu.com/item/Red Hat Enterprise Linux/10770503?fromModule=lemma_inlink)(RHEL)依照开放源代码(大部分是GPL开源协议 [2] )规定释出的源码所编译而成。

  • 当前系统安装环境为 CentOS Linux release 7.6.1810 (Core) ,选用 el7 的安装包。根据自己的系统来选择相对应的安装包。如果安装包对应的系统版本不正确,安装时会出现有关 glibc 的依赖错误。
    Linux Centos中卸载 安装Mysql_第2张图片

1.3)如何选择要安装的rpm版本

1.3.1 查看当前系统的内核或者系统版本(选择相应的el)

查看Linux内核版本命令(可以看到看到当前测试系统需要使用el7的rpm)

方式1:cat /proc/version

[root@VM-12-7-centos ~]# cat /proc/version
Linux version 3.10.0-1160.45.1.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Wed Oct 13 17:20:51 UTC 2021

方式2:uname -a

[root@VM-12-7-centos ~]# uname -a
Linux VM-12-7-centos 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

查看Linux系统版本的命令

方式1:cat /etc/redhat-release,只适合Redhat系的Linux

[root@VM-12-7-centos ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 

方式2:cat /etc/centos-release,只适用于Centos系统

[root@VM-12-7-centos ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core) 

方法3:(来源网络,当前系统测试不可用)lsb_release -a,即可列出所有版本信息,这个命令适用于所有的Linux发行版,包括RedHat、SUSE、Debian…等发行版。

方式4:(来源网络,当前系统测试,查看文件为空,没有版本信息)cat /etc/issue,此命令也适用于所有的Linux发行版。

在这里插入图片描述

1.3.2 如何选择安装那些rpm包?

将 Bundle 包上传至指定位置(也可以仅仅下载需要安装的包上传到系统指定位置为安装做准备),推荐在操作系统上创建上传目录/soft,并放于该目录下解压,不管是 Bundle 包上传目录、软件安装目录,还是数据存放目录,都要提前做好规划。下面将 TAR包解压,并简要说明各个 RPM 包,以便大家深入理解这些 RPM 包的功能和作用,知道在什么样的场景下安装什么样的包。Bundle 包中各类 RPM 文件的说明如下表所示。

RPM包名称 概要
mysql-community-server 数据库服务器和相关工具
mysql-community-client MySQL 客户端应用程序和工具
mysql-community-client-plugin MySQL 客户端y应用程序插件
mysql-community-common 服务器和客户端通用的库文件
mysql-community-devel MySQL 数据库客户端应用程序开发的头文件和库文件
mysql-community-libs 用于 MySQL 数据库客户端应用程序的共享库
mysql-community-libs-compat 对于之前 MySQL 安装的共享兼容性库
mysql-community-embedded MySQL 嵌入式库
mysql-community-embedded-devel 嵌入式的 MySQL 开发头文件和库文件
mysql-community-test MySQL 服务器的测试套件

通常来讲,为了满足绝大部分场景需求,建议至少安装下列的这些 RPM 包,以获得功能强大的 MySQL 标准安装特性。

# 对于当前安装的mysql8.0.25,需要安装一下安装包,并且需要依照顺序,其中存在依赖关系,否则会出现安装依赖问题。
第一个:mysql-community-common
第二个:mysql-community-client-plugins
第三个:mysql-community-libs
第四个:mysql-community-client
第五个:mysql-community-server

2、Mysql的RPM包的安装

2.1)依照顺序安装mysql8相关安装包

将下载的安装包上传到服务器中,切换到 root 用户。按照依赖关系依次安装 rpm 包,依赖关系依次为 common→plugins→libs→client→server。使用命令rpm -ivh {-file-name}进行安装操作。

注意:

  • 也可以自己尝试安装根据提示顺序进行安装依赖包。
  • 在 Linux 操作系统下安装 MySQL 时,一定要注意权限问题。安装 RPM 软件包时,需要使用 root 权限,否则会提示权限不够。且安装完成后,也需要使用 root 权限启动和关闭 MySQL 服务。接下来的操作都需要在root权限下进行。
# ivh 中,i-install 参数表示安装后面的一个或多个 RPM 软件包;v-verbose 参数表示安装过程中显示详细的信息;h-hash 参数表示使用“#”来显示安装进度。
[root@VM-12-7-centos ~]# rpm -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpm
[root@VM-12-7-centos ~]# rpm -ivh mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
[root@VM-12-7-centos ~]# rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm
[root@VM-12-7-centos ~]# rpm -ivh mysql-community-client-8.0.25-1.el7.x86_64.rpm
[root@VM-12-7-centos ~]# rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm

注意:有些版本的可能安装前需要安装一些前置依赖包,可以先尝试安装确定需要该依赖再进行安装

# mysql可能需要的安装依赖包 	
[root@VM-12-7-centos ~]# yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6 libncurses.so.5 --setopt=protected_multilib=false
[root@VM-12-7-centos ~]# yum  update libstdc++-4.4.7-4.el6.x86_64

2.2 Mysql服务操作(状态查看、重启、停止、启动)

MySQL 服务的操作命令是:(不同版本服务名不同:mysqld或者mysql)

systemctl status|start|stop|restart|disable|enable mysqld

以上几个参数的意义如下:

  • start:启动 MySQL 服务
  • stop:停止 MySQL 服务
  • restart:重启 MySQL 服务
  • status:查看 MySQL 服务状态
  • disable:关闭服务开机启动
  • enable:开启服务开启启动

2.3 mysql安装目录

使用 RPM 包安装时,系统不会提示各种文件安装在哪个文件夹下。下面介绍每个主要的文件在什么目录下,MySQL 服务器目录以及子目录如下表所示:

文件夹 文件夹内容
/usr/bin 客户端和脚本(mysqladmin、mysqldump 等命令)
/usr/sbin mysqld 服务器
/var/lib/mysql 日志文件、socket 文件和数据库
/usr/share/info 信息格式的手册
/usr/share/man UNIX 帮助页
/usr/include/mysql 头文件
/usr/lib/mysql
/usr/share/mysql 错误消息、字符集、安装文件和配置文件等
/etc/rc.d/init.d/ 启动脚本文件的 mysql 目录,可以用来启动和停止 MySQL 服务

mysql配置文件位置

Linux 操作系统中 MySQL 的配置文件是 my.cnf,一般会放在 /etc/my.cnf 或 /etc/mysql/my.cnf 目录下。总的来说,my.cnf 类似于 my.ini 配置文件。如果编辑并保存 my.cnf 文件后,必须重新启动 MySQL 服务,这样 my.cnf 中的配置才会起作用。

3、Mysql安装后的一些配置

3.1 查看mysql默认密码

服务启动后,查找 root 初始随机密码(如果没有初始密码,直接输入用户名 root 登录即可)

首选:cat /var/log/mysqld.log | grep 'temporary password is generated'
备选:mysql 安装完成之后, 会自动生成一个随机的密码, 并且保存在一个密码文件中 : /root/.mysql_secret

3.2 重新设置mysql密码

步骤1:使用以下命令登录 MySQL。

mysql -uroot -p[查询到的默认密码]

步骤2:可使用以下命令修改密码

# 该命令会提示密码不符合规则,因此我们需要设置一个和默认密码类似的密码,否则无法进行下面操作
set password='root';

3.3 解决修改自定义密码问题

在mysql 初始化时,使用临时密码,修改自定义密码时,由于自定义密码比较简单,就出现了不符合密码策略的问题。

# 密码策略问题异常信息:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

步骤1:查看 mysql 初始的密码策略

mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.01 sec)

步骤2:设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可

mysql> set global validate_password.policy=LOW;
Query OK, 0 rows affected (0.00 sec)

关于 mysql 密码策略相关参数;

  • validate_password_length 固定密码的总长度;
  • validate_password_dictionary_file 指定密码验证的文件路径;
  • validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
  • validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
  • validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;
  • validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
    • 关于 validate_password_policy 的取值:
      0/LOW:只验证长度;
      1/MEDIUM:验证长度、数字、大小写、特殊字符;
      2/STRONG:验证长度、数字、大小写、特殊字符、字典文件

步骤3:当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可。

mysql> set global validate_password.length=6;
Query OK, 0 rows affected (0.00 sec)

步骤4:现在可以为 mysql 设置简单密码了,只要满足六位的长度即可。

ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’; 

#刷新权限命令(一般用于数据库用户信息更新后 新增用户或者修改用户权限)
FLUSH PRIVILEGES;
#另外一种方法:就是重启mysql服务器也可以刷新权限

注意:

在默认密码的长度最小值为 4 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个,只要设置密码的长度小于 3 ,都将自动设值为 4 。

3.4 解决mysql远程连接失败问题

步骤1:登陆mysql,并选择使用mysql数据库

mysql -uroot -p123456
# mysql 数据库中存储了用户信息的 user 表。需要对连接使用的用户进行表修改
use mysql;

步骤2:在 mysql 数据库的 user 表中查看当前 root 用户的相关信息

# 不要直接星号查询所有列,会显示信息过多不便于查看
mysql> select host, user, authentication_string, plugin from user \G;
*************************** 1. row ***************************
#这里host列为localhost,表示只允许主机连接,修改为%,就可以远程连接了
                 host: localhost
                 user: root
authentication_string: $A$005$_A
QK#=(Tx
aZ_6WNubBG5qAAu92ch3a7yrv8aHeG446jdjXct2LtmN58oRLP7
               plugin: caching_sha2_password
*************************** 2. row ***************************
                 host: localhost
                 user: mysql.infoschema
authentication_string: $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
               plugin: caching_sha2_password
*************************** 3. row ***************************
                 host: localhost
                 user: mysql.session
authentication_string: $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
               plugin: caching_sha2_password
*************************** 4. row ***************************
                 host: localhost
                 user: mysql.sys
authentication_string: $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
               plugin: caching_sha2_password
4 rows in set (0.00 sec)

ERROR: 
No query specified

步骤3:修改root用户的host列为%

# % 表示通配所有 host,可以访问远程。
update user set host='%' where user='root';

步骤4:查看 root 用户的 host

再次执行步骤 2,你会发现 root 用户的 host 已经变成 %,说明我们的修改已经成功,可以远程访问了。

3.5 解决mysql 错误 2061_主从复制报错2061:Authentication plugin ‘caching_sha2_password’ reported error:Authentication…

在MySQL8.0之前,身份验证的插件是mysql_native_password,在MySQL 8.0中,caching_sha2_password 是默认的身份验证插件,安全性更高。

故障的原因可以猜测为:在从库连接主库的时候使用的是不被 caching_sha2_password认可的RSA公钥,所以主库MySQL拒绝了数据库连接的请求,从而,从库报错’caching_sha2_password’ reported error:Authentication require secure connection。

步骤1:查看用户密码加密规则

mysql> select user,plugin from user;
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| root             | caching_sha2_password |
| mysql.infoschema | caching_sha2_password |
| mysql.session    | caching_sha2_password |
| mysql.sys        | caching_sha2_password |
+------------------+-----------------------+
4 rows in set (0.00 sec)

步骤2:直接修改用户加密规则为mysql_native_password

mysql> update user set plugin='mysql_native_password' where user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select user,plugin from user;
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| root             | mysql_native_password |
| mysql.infoschema | caching_sha2_password |
| mysql.session    | caching_sha2_password |
| mysql.sys        | caching_sha2_password |
+------------------+-----------------------+
4 rows in set (0.00 sec)

3.6 mysql可视化客户端连接问题(未测试)

远程访问数据库的可视化工具比较多如:Navicat、SQLyog、MySQL workbench 等,我这里使用 Navicat

输入访问的 host 和密码,报 2059 错误,这是因为 MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式。

此问题有两种方法,一种是更新 Navicat 驱动来解决此问题,另一种是将 MySQL 用户登录的加密规则修改为 mysql_native_password,请采用第二种方法。

# password 为你当前密码。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; 

# 更新 root 用户密码,password 为你新设置的密码。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; 

# 刷新权限
FLUSH PRIVILEGES; 

参考文章链接

  • https://blog.csdn.net/weixin_30647423/article/details/114816675
  • https://blog.csdn.net/majianting/article/details/122694130
  • https://blog.csdn.net/u013449046/article/details/106455041/
  • http://c.biancheng.net/view/7616.html
  • https://blog.csdn.net/qq_41099189/article/details/124291046
  • http://blog.itpub.net/30310891/viewspace-2791394/

你可能感兴趣的:(数据库,mysql,linux,centos)