CentOS8安装MySQL8.0.26
    
   
    
     目录
    
   
    
     2.1 将下载的mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz上传到服务器,并解压为tar
    
   
    
     2.2 解压mysql-8.0.26-linux-glibc2.12-x86_64.tar 到 目录 /usr/local下面
    
   
    
     2.3 进入mysql解压后的目录mysql8,并创建存放mysql日志的目录
    
   
    一、下载
   
链接:https://dev.mysql.com/downloads/mysql/
点击 Download,如下图:
     
   
     
   
没有登陆,点击 “No thanks,just start my downlaod.” 即可下载
提示: 如果发现执行语句报错,如下
     
   
复制语句到记事本发现: 多了一个<0xa0> 删除用空格替换就好了
     
   
    二、安装
   
    2.1 将下载的mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz上传到服务器,并解压为tar
   
命令:
xz -dev mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
    如下图:
     
   
    2.2 解压mysql-8.0.26-linux-glibc2.12-x86_64.tar 到 目录 /usr/local下面
   
解压命令:
tar -xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar -C /usr/local/重命名:
mv mysql-8.0.26-linux-glibc2.12-x86_64 mysql8如下图,
     
   
    2.3 进入mysql解压后的目录mysql8,并创建存放mysql日志的目录
   
cd /usr/local/mysql8/
mkdir data
     
   
    2.4 配置mysql环境变量
   
#如果有PATH这一项,在后面用分号;把jdk的环境变量加进去vim /etc/profile    #打开环境变量配置文件export MYSQL_HOME=/usr/local/mysql8/bin
export PATH=$PATH:$MYSQL_HOME
如果path存在多个,参考:
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$MYSQL_HOME如下图:
     
   
配置完成后重载:
source /etc/profile
    2.5 创建mysql用户组和mysql用户
   
groupadd mysql
useradd -g mysql mysql如下图:
     
   
     
   
    2.6 关联myql用户到mysql用户组中
   
进入到mysql8所在目录,此例中为/usr/local/
     
   
    2.7 更改mysql安装文件夹mysql的权限
   
[root@localhost local]# chmod -R 755 mysql8
     
   
    2.8 安装libaio依赖包
   
查询是否安装libaio依赖包
yum search libaio
     
   
如果没安装,可以用下面命令安装:
yum install libaio
     
   
    2.9 初始化mysql命令
   
mysqld --user=mysql --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data --initialize
     
   
红色框内的是mysql数据库登录的临时密码,保存备用,每个人安装生成的临时密码不一样。
    2.10 启动mysql服务
   
sh /usr/local/mysql8/support-files/mysql.server start上面启动mysql服务命令是会报错的,因为没有修改mysql的配置文件,报错内容大致如下:
     
   
    2.11 修改Mysql配置文件
   
vim /usr/local/mysql8/support-files/mysql.server修改以下属性:
basedir=/usr/local/mysql8
datadir=/usr/local/mysql8/data
mysqld_pid_file_path=/usr/local/mysql8/data/mysqld_pid如下图所示:
     
   
接下来,
cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld将mysql服务加到系统服务中
chkconfig --add mysqld开机自启动
chkconfig mysqld on如下图:
     
   
    2.12 修改my.cnf文件
   
这里下载的mysql8.0.23版本并没有这个my.cnf文件,因此直接创建的。
vim /etc/my.cnf[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
basedir=/usr/local/mysql8
datadir=/usr/local/mysql8/data
socket=/tmp/mysql.sock
user=mysql
port=3306
character_set_server=utf8
# symbolic-links=0
# bind-address=0.0.0.0
[mysqld_safe]
log-error=/usr/local/mysql8/data/error.log
pid-file=/usr/local/mysql8/data/mysqld.pid
tmpdir=/tmp
     
   
    
     my.cnf
    
    如下图:
   
     
   
然后,授权文件my.cnf
[root@localhost etc]# chown mysql:mysql my.cnf
[root@localhost etc]# chown mysql my.cnf
[root@localhost etc]# chmod 755 my.cnf再次启动mysql服务成功,如下图:
     
   
    2.13 启动服务
   
查看服务:service mysqld status
停止服务:service mysqld stop
启动服务:service mysqld start如下图:
     
   
    启动如果报错
   
@[TOC](ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists)
centos中启动、重启,或者查看mysql状态时报错
ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists 
    解决
   
删除var/lock/subsys/mysql下的mysql 文件
rm -rf var/lock/subsys/mysql
     
   
    2.14 登录mysql
   
mysql -uroot -p此时出现错误:
./mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
     
   
解决办法:
yum install libncurses*完美解决!
     
   
再次登录mysql(注意:这里的密码是初始化生成的临时密码)
     
   
    2.15 修改初始化用的临时密码
   
use mysql报错如下:
     
   
解决办法:
修改初始密码:
alter user 'root'@'localhost' identified by 'root';刷新:
flush privileges;
     
   
    至此,完成mysql8.0.26的安装。
   
    
     Navicat Premium 连接MYSQL8出现10060 “Unkown error”解决办法:
    
   
     
   
首先检查是否ping得通,其次再检查如下原因:
原因一:由于mysql 没有开启对外访问权限
原因二:由于防火墙没有对外开放mysql的默认端口3306导致
原因三:由于阿里云或者是腾讯云的安全组规则没有开放3306端口
    参考:
    
     2021-08-15_wcybaonier的博客-CSDN博客
    
    此文章可解决;
   
如果还未解决,通过netstat查看3306的端口状态是怎么样的?是否绑定了本地回旋地址?
netstat -apn | grep 3306
     
   
如果MySQL的默认bind-address(监听IP地址)为127.0.0.1,即只能为本机提供服务,禁止远程连接。则只需要如下解决:
[mysqld]
bind-address = 0.0.0.0
    
     但这里不是,我这里的原因是防火墙没有放行。
    
   
    另外,由于是CentOS8版本,防火墙命令有差异,参考https://blog.csdn.net/RougeK/article/details/108676073即可。
    
    #禁用,禁止开机启动:
   
systemctl disable firewalld
    
    #停止运行:
   
systemctl stop firewalldyum安装iptables
yum -y install iptables-services启动
systemctl start iptables
    配置
    
    vim /etc/sysconfig/iptables
   
    
     由于我这里是测试环境,在虚拟机内使用,则直接关闭了防火墙,实际生产环境应该是放行3306端口。
    
    如下图:
   
     
   
然后再重启Linux,再进行Navicat Premium连接,提示一下错误:
     
   
又该如何解决?
原因分析:
    
     其实是mysql8.0版更换了新的身份验证是(caching_sha2_password)之前身份验证是(mysql_native_password),Navicat,和SQLyog客户端软件其实是不支持新的身份验证,也就是说新的身份验证找不到(caching_sha2_password),既然知道了是这个问题,那么我们就把登录密码加密规则改回(mysql_native_password)即可。
    
   
参考:https://blog.csdn.net/weixin_40845165/article/details/84076691 即可:
第一步:登录MySQL
mysql -uroot -p
第二步:修改加密规则
alter user ‘root’@’%’ identified by ‘password’ password expire never;
第三步:更新用户密码
alter user ‘root’@’%’ identified with mysql_native_password by ‘password’;
第四部:刷新权限
flush privileges;
第五步:重置密码
alter user ‘root’@’%’ identified by ‘root’;
如下图:
     
   
再次重新连接,成功!
     
   
 
