linux更新mysql8.0的心酸史

本文完全是个人实践经验,包含了mysql8.0升级的全过程以及中间遇到的问题及解决方法。

整个过程中参考的有价值的文档均有标注。

欢迎收藏,欢迎转发,但希望注明出处https://blog.csdn.net/qq_34175893/article/details/79564604,原创不易


首先下载安装所需安装包,根据自己所需选择(这里以rhel7.4,64位为例)

https://dev.mysql.com/downloads/mysql/8.0.html

解压缩tar包

Tar -zxvf mysql-8.0.4-0.1.rc.el7.x86_64.rpm-bundle.tar

报错

gzip: stdin: not in gzipformat

tar: Child returnedstatus 1

tar: Error is notrecoverable: exiting now

解决方法:

去掉z参数,使用 tar -xvf解压正常

原因分析:

1、压缩文件被人为的改过名称,比如:最初压缩的并非.gz,被人为的修改了后缀,这时可以去掉后缀再解压,如:文件FMIS2600DMP.tar.gz,去掉gz后缀,再用tar -xvf 解压

2、-z参数实际上是调用bz2的加压或者解压程序,去掉该参数,则同样可以避免该问题

软件包的安装

这里就按照下面的做就行了,不然会出现很多软件包的依赖问题。具体问题就不举例了,我遇到的挺多的

将解压得到的所有rpm包放在同一个空的文件夹下,mysql-community-server-miniaml-*除外,因为会和server及client冲突,

然后使用如下命令安装(我是建议直接全部装了就好了,没必要按照我下面的链接所给的那样限定很多,因为那样会出现一些冲突问题,直接把9个rpm包都用yum安装了就好了,建议一定要用yum装,不要用rpm命令,因为yum会自动检测并解决安装包之间的冲突和依赖问题)

sudoyum install mysql-community-*

安装参考:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-rpm.html

Can’t connect to local MySQL serverthrough socket ‘/var/lib/mysql/mysql.sock

解决步骤:

1 systemctl stop mysqld (停止服务)

2 rm -fr /var/lib/mysql/* (删除/var/lib/mysql下的所有文件)

3 rm /var/lock/subsys/mysqld(删除锁定文件)

4 killall mysqld (杀死所有mysqld进程)

5 systemctl start mysqld (启动mysql服务。)

参考链接:https://www.cnblogs.com/okstill/p/5667138.html

Root用户无密码登录数据库遇到

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

方法:

跳过root临时密码登录数据库修改密码

1.    关闭mysql服务:

systemctl stop mysqld

2. 设置环境变量跳过权限检查

systemctlset-environment MYSQLD_OPTS="--skip-grant-tables"

3. 重新启动mysql服务

systemctl start mysqld

4.以root用户登录

mysql -u root

这时便可以成功登录了

5. 设置root用户密码

UPDATE mysql.userSET authentication_string= PASSWORD('Root@123') WHERE User = 'root';

在mysql 5.6之后对密码的强度进行了加强,推出了validate_password 插件(据某些地方说好像之前就有,不过现在成了必须的了)。支持密码的强度要求。,通过如下命令查看validate_password的各参数配置要求,

MySQL密码强度审计插件:validate_password的使用说明http://www.xuchanggang.cn/archives/1033.html

SHOW VARIABLES LIKE 'validate_password%';

使用如下命令可以自行配置参数,对密码强度要求最重要的参数为下面的policy

set global validate_password.policy=LOW;

重新执行

UPDATEmysql.user SET authentication_string = 'root123'  WHERE User = 'root';

所以最终的修改密码的命令为

UPDATEmysql.user SET authentication_string = 'root123'  WHERE User = 'root';

6. 停止mysql服务

systemctl stopmysqld

7. 取消之前设置的跳过权限检查的选项

systemctl unset-environment MYSQLD_OPTS

8.正常启动mysql

systemctl start mysqld

9. 使用前面设置的新密码登录

      mysql -u root -p

登录时遇到问题参考:http://blog.csdn.net/u014306472/article/details/78160427

查看默认密码

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


下面是我把上面的命令写在一块,这样copy执行只需一次,而不需3次

  1. 重新登录前,设置跳过权限检查 systemctl stop mysqld; systemctl set-environmentMYSQLD_OPTS="--skip-grant-tables"; systemctl start mysqld
  2. 重新设置
  3. 设置完成后,回复权限检查 systemctl stopmysqld; systemctl unset-environment MYSQLD_OPTS; systemctl start mysqld;

猜你喜欢

转载自blog.csdn.net/qq_34175893/article/details/79564604
今日推荐