当前位置:   article > 正文

centos安装mysql8.4.0

centos安装mysql8.4.0

之前在服务器安装的8.0.26版本的mysql,进行安全扫描后发现一些严重的漏洞,于是想升级一下版本,希望高版本能自动解决了这些问题。

  1. 下载相应版本的RPM Bundle包 tar文件

地址: https://downloads.mysql.com/archives/community/

各选项参考截图:

上传到服务器,解压

# tar -xf mysql-8.4.0-1.el7.x86_64.rpm-bundle.tar

这是没有指定解决目录的,就会直接将那几个文件放到当前目录下,如果不希望这样,则需要指定解决目录:

# tar -xf mysql-8.4.0-1.el7.x86_64.rpm-bundle.tar -C /usr/local/mysql840

(自己创建的目录)

不指定目录,就会解压到当前目录

没有mysql840目录,就自己用mkdir创建一个吧(或者其他目录)

解决后:

  1. 查看之前安装的mysql

# rpm -qa|grep -i mysql

如果有,需要先删除

删除旧版本的步骤

# rpm -e --nodeps mysql-community-server-8.0.26-1.el7.x86_64

用相同的方法,把client 、common 和 libs 也删除了

开始安装新版本

尝试安装 server

# rpm -ivh mysql-community-server-8.4.0-1.el7.x86_64.rpm

先安装common 和 icu

# rpm -ivh mysql-community-common-8.4.0-1.el7.x86_64.rpm
# rpm -ivh mysql-community-icu-data-files-8.4.0-1.el7.x86_64.rpm

尝试安装 client

安装client-plugins

# rpm -ivh mysql-community-client-plugins-8.4.0-1.el7.x86_64.rpm

尝试安装libs会失败

删除mariadb-libs

先用命令找到 mariadb 的包

#  rpm -qa | grep -E 'mysql|mariadb'

执行删除,这里不要管依赖

# rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64

现在可以安装libs

# rpm -ivh mysql-community-libs-8.4.0-1.el7.x86_64.rpm

现在安装 client

# rpm -ivh mysql-community-client-8.4.0-1.el7.x86_64.rpm

最后安装 server

# rpm -ivh mysql-community-server-8.4.0-1.el7.x86_64.rpm

启动

# systemctl start mysqld

查看状态

# systemctl status mysqld

  设置开机启动

# systemctl enable mysqld

查看mysql安装时产生的默认密码

# grep ‘temporary password’ /var/log/mysqld.log

登录报错

Plugin mysql_native_password is not loaded

修改 my.cnf

添加 mysql_native_password
vi /etc/my.cnf

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

添加 skip-grant-tables

重启

# systemctl restart mysqld

这个时候登录输入密码时,直接回车

设置密码

> use mysql
> set password for `root`@`localhost`=password('YourPassword');

这个命令好像会报错,不知道是不是这个版本不能这样操作。

于是改成:

> alter user 'root'@'localhost' identified by 'YourPassword';

 但是,会报错:Operation ALTER USER failed for 'root'@'localhost'

于是想到:是不是在user表里没有相应的记录?

可以用:

> select user,host from user;

查看结果,然后再用:

> update user set host='localhost' where host='%';

 其实,这样就只能本地连接数据库了,为了尽量减少扫描发现的各种漏洞,这样设置比较省事。但是其实部署环境往往是数据库与web服务程序分开部署在不同的机器上的,是不能像我上面这样update成localhost的。

有人说需要执行一次 flush

> flush privileges;

之后再执行:

> alter user 'root'@'localhost' identified by 'YourPassword';

执行成功之后,需要修改 /etc/my.cnf 将 skip-grant-tables 注释掉

重启mysql

# systemctl restart mysqld

再次登录即可!!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号