centos7 安装与卸载 Mysql8.0详细教程

版本:centos7.5
mysql版本:8.0.34
也许这一篇就够了!
本文记录自己在安装过程中遇到的问题呢,希望对您有所帮助!

一.卸载Mysql

1.关闭MySQL服务

systemctl stop mysqld

2.使用 rpm 命令查看已安装的安装包

rpm -qa|grep mysql

3.使用yum卸载安装的mysql

yum remove  mysql mysql-server mysql-libs mysql-server

4.查询剩余的安装包

rpm -qa|grep mysql

5.移除掉第4步查询的安装包

# 以第4步查到的文件为准

rpm -ev mysql-community-release-el7-5.noarch
rpm -ev mysql-community-common-5.6.51-2.el7.x86_64

6.删除残余的安装包

rm -rf mysql*

7.继续查找是否还有残留文件

find / -name mysql

8.移除第7步查询残留文件

#以实际查询到的为准
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql

9.最后在检查一遍

rpm -qa|grep mysql
find / -name mysql

到这里卸载基本完成

二.安装Mysql

1.下载 MySQL yum包

cd ~
wget http://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm

2.安装MySQL源

rpm -Uvh mysql80-community-release-el7-7.noarch.rpm

3.安装MySQL服务端

yum -y install mysql-community-server --nogpgcheck

4.启动MySQL

systemctl start mysqld.service

5.检查是否启动成功

systemctl status mysqld.service

6.获取临时密码,MySQL8.0为root用户随机生成了一个密码

grep 'temporary password' /var/log/mysqld.log
2023-07-27T08:36:25.783907Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: LTcNG*H&q7ag
2023-08-23T05:57:49.595441Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: q(RO8)Hgy-Jp

首次安装查询只有一条记录
注:第一个是上次安装时的密码,删除的时候可能没有删除掉。这里我们复制第二个密码登录即可。
7.通过临时密码登录MySQL,进行修改密码操作

mysql -u root -p

8.全局修改一下MySQL的密码规则

mysql> set global validate_password_policy=0;
ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
mysql> set global validate_password_length=1;
ERROR 1193 (HY000): Unknown system variable 'validate_password_length'

第一坑来了,什么原因导致修改密码策略失败呢
是因为mysql8.0和MySQL5.7密码校验规则不同。不符合MySQL密码规范,才报错的。
1、问题:
8.1 MySQL 5.7 进行如下设置,即可解决问题:

mysql>  set global validate_password_policy=0;

mysql> set global validate_password_length=1;

8.2 MySQL 8.0 执行代码:

mysql>  set global validate_password_policy=0;

ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'

mysql> set global validate_password_length=1;

ERROR 1193 (HY000): Unknown system variable 'validate_password_length'

2、解决问题

  1. 分析:可以看到,修改 policy 和 length 的值,在MySQL5.7中好使,在MySQL8.0中无效。‘validate_password_policy’ 变量不存在。

  2. 解决:先修改一个满足规则的密码(如:Root_root123)。

 mysql> alter user 'root'@'localhost' identified by 'Root_root123';

补充: validate_password_policy 有以下取值:
centos7 安装与卸载 Mysql8.0详细教程_第1张图片
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
3. 密码修改后,可用命令查看 validate_password 密码验证插件是否安装。

执行命令后可以看到length和policy为8和MEDIUM

mysql> SHOW VARIABLES LIKE 'validate_password%';
+-------------------------------------------------+--------+
| Variable_name                                   | Value  |
+-------------------------------------------------+--------+
| validate_password.changed_characters_percentage | 0      |
| 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      |
+-------------------------------------------------+--------+
8 rows in set (0.13 sec)
  1. 从上面的命名可以看到MySQL 8.0 调整了密码的验证规则:
mysql> set global validate_password.policy=0;

mysql>  set global validate_password.length=1;
  1. 再次执行和查看,就可以修改密码长度和安全等级了
mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password.length=1;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+-------------------------------------------------+-------+
| Variable_name                                   | Value |
+-------------------------------------------------+-------+
| validate_password.changed_characters_percentage | 0     |
| validate_password.check_user_name               | ON    |
| validate_password.dictionary_file               |       |
| validate_password.length                        | 4     |
| validate_password.mixed_case_count              | 1     |
| validate_password.number_count                  | 1     |
| validate_password.policy                        | LOW   |
| validate_password.special_char_count            | 1     |
+-------------------------------------------------+-------+
8 rows in set (0.02 sec)
#修改密码为123456
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.03 sec)

修改密码策略报错到这里就结束了

9.授权其他机器远程登录
第二个坑又来了

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

报错信息:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '123456' WITH GRANT OPTION' at line 1

解决办法:
依次执行如下语句

mysql> use mysql;
mysql> select host, user, authentication_string, plugin from user;
#执行完上面的命令后会显示一个表格
#查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。
#授权 root 用户的所有权限并设置远程访问
#GRANT ALL ON 表示所有权限,% 表示通配所有 host,可以访问远程。

mysql> grant all on *.* to 'root'@'%';
ERROR 1410 (42000): You are not allowed to create a user with GRANT
mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0
#再执行两次
mysql> grant all on *.* to 'root'@'%';

刷新授权

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

再次执行查看

mysql> select host, user, authentication_string, plugin from user;

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

访问数据库
这里也报错了
这里我用的是navicat
输入访问的 host 和密码,报 2059 错误,这是因为 MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式。
此问题有两种方法,一种是更新 Navicat 驱动来解决此问题,另一种是将 MySQL 用户登录的加密规则修改为 mysql_native_password,第一种方法我试过了没有起作用,我这里采用第二种方法。

登录时忘记截图了,测试连接时类似下面这样的报错
centos7 安装与卸载 Mysql8.0详细教程_第2张图片

在8.0.19版本的mysql后,使用navicat连接时,报caching_sha2_password’ cannot be loaded的异常。

原因为:8.0.19版本的mysq用户密码加密方式为caching_sha2_password,navicat暂不支持,需要修改下mysql的加密方式。

更改root密码

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

刷新授权

mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)

回到工具,点击连接测试,提示连接成功。
centos7 安装与卸载 Mysql8.0详细教程_第3张图片
虚拟机登录验证,也没有问题

mysql> quit;
Bye
[root@hadoop100 ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.34 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

本文记录自己在安装过程中遇到的问题呢,希望对您有所帮助!

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