赞
踩
之前在服务器安装的8.0.26版本的mysql,进行安全扫描后发现一些严重的漏洞,于是想升级一下版本,希望高版本能自动解决了这些问题。
地址: 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创建一个吧(或者其他目录)
解决后:
# 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
# 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
# rpm -ivh mysql-community-client-plugins-8.4.0-1.el7.x86_64.rpm
尝试安装libs会失败
先用命令找到 mariadb 的包
# rpm -qa | grep -E 'mysql|mariadb'
执行删除,这里不要管依赖
# rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
# rpm -ivh mysql-community-libs-8.4.0-1.el7.x86_64.rpm
# rpm -ivh mysql-community-client-8.4.0-1.el7.x86_64.rpm
# rpm -ivh mysql-community-server-8.4.0-1.el7.x86_64.rpm
# systemctl start mysqld
# systemctl status mysqld
# systemctl enable mysqld
# grep ‘temporary password’ /var/log/mysqld.log
修改 my.cnf
vi /etc/my.cnf
# 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 注释掉
# systemctl restart mysqld
再次登录即可!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。