centos7 安装Mysql8.0

centos7 安装Mysql8.0亲测有效

mysql官网:https://dev.mysql.com/downloads/

一.卸载Mysql

  1. 查看自带的mysql
whereis mysql               
  1. 关闭mysql服务
systemctl stop mysqld  
  1. 查看已安装的mysql路径
rpm -qa|grep mysql     
  1. 卸载已安装的mysql
yum remove  mysql mysql-server mysql-libs mysql-server   
  1. 查看还有没有卸载掉的mysql
rpm -qa|grep mysql   
  1. 以第5步查到的文件为准
rpm -ev mysql-community-release-el7-5.noarch
rpm -ev mysql-community-common-5.6.51-2.el7.x86_64
  1. 删除残余的安装包&继续查找是否还有残留文件
# 除了django目录里面带的mysql不要删,其他的都删除(移除第7步查询残留文件)
rm -rf mysql*     
find / -name mysql   
rm -rf /run/lock/subsys/mysql /etc/selinux/targeted/active/modules/100/mysql /usr/lib64/mysql /data/mysql /data/mysql/mysql
  1. 最后再检查一遍
rpm -qa|grep mysql      
find / -name mysql 

二.安装Mysql

下载 MySQL yum包

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

安装MySQL源

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

安装mysql服务端

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

启动mysql、查看是否启动,加入开机启动

systemctl start mysqld.service
systemctl status mysqld.service
systemctl enable mysqld.service

获取临时密码,mysql8.0为root用户随机生成了一个密码,首次安装查询只有一条记录

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

通过临时密码登录mysql,进行修改密码操作

   mysql -u root -p

全局修改一下mysql的密码规则,mysql8.0 执行如下代码会报错:mysql5.7 进行如下设置,即可解决问题

set global validate_password_policy=0;
set global validate_password_length=1;

 # 执行上面两条语句返回如下
 ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
 ERROR 1193 (HY000): Unknown system variable 'validate_password_length'

查看数据表密码

SHOW VARIABLES LIKE 'validate_password%';
# 分析:可以看到,修改 policy 和 length 的值,在MySQL5.7中好使,在MySQL8.0中无效。‘validate_password_policy’ 变量不存在。

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

alter user 'root'@'localhost' identified by 'Root_root123';
# 默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符

查看数据表密码

 SHOW VARIABLES LIKE 'validate_password%';
 # 可以看到length和policy为8和MEDIUM,从上面的命名可以看到MySQL 8.0 调整了密码的验证规则,再次执行和查看,
 # 就可以修改密码长度和安全等级了

执行–查看

 set global validate_password.policy=0;         
 set global validate_password_length=1;
 SHOW VARIABLES LIKE 'validate_password%';

授权Navicat客户端远程登录并修改mysql密码为123456

  usr mysql;
  select host, user, authentication_string, plugin from user;
  GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
  update user set host='%' where user='root';    # 执行2次
  update user set host='%' where user='root';

刷新授权

 flush privileges;

再次查看

   select host, user, authentication_string, plugin from user;    

三:关于防火墙

如果navicat连接不上可以先查看防火墙配置—需要先把3306端口加入防火墙或者关闭防火墙

第一种方法直接全部关闭

查看防火墙状态

systemctl status firewalld 或 firewall-cmd --state

关闭防火墙

systemctl stop firewalld

第二种方法(推荐) 添加某一端口加入防火墙规则里面

sudo firewall-cmd --add-port=3306tcp --permanent          --加上--permanent永久生效,没有此参数重启后失效

重新加载防火墙(刷新防火墙的配置)

firewall-cmd --reload

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