关于MySQL8.0 访问账户登录的先关问题汇总

发布时间 2023-04-28 11:10:38作者: 果园2018

背景介绍:接到其它开发团队小伙伴的反馈,说我们线上的测试的MySQL无法访问了,随展开问题查询。

查询流程和用到的命令:

1. 自己分别使用Windows的Navicat、Linux的 mysql命令行链接测试。确实有链接不通的问题。

1. 排查了 当前ECS的网络链接的状态,数据库运行的状态,包括端口绑定的状态 发现都没问题。

2. 所以开始远程到服务器上直接进行,mysql的链接测试,询问负责管理MySQL的同事后,发现root密码也忘记了。

3. 开始重置mysql  root账户密码:

   以下纯做记录不在说明:find / -name my.cnf   

   文件中添加无需密码即可登录的配置:

    [mysqld]

    skip-grant-tables

   改完后执行命令:service mysql restart     service mysql status

     使用命令行登录mysql,重置root密码

     mysql -uroot -p

     此时是无需密码即可能录状态,因为mysql8开始,必须先将用户密码先置空,再设置密码。

    use mysql

    select host, user, authentication_string, plugin from user;

    update user set authentication_string='' where user='root';

     ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '极度保密的密码';

     FLUSH PRIVILEGES;

     密码重置完成后,去除my.cnf中的跳过登录的配置,重启mysql后生效。

      修改root用户访问的授权客户端,将只允许本地访问改为可允许任何客户端访问。(此步只做验证操作)

      GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;

      FLUSH PRIVILEGES;

      select host, user, authentication_string, plugin,ssl_type  from user;

随后就是重点了:

      修改root密码后,发现依然无法访问,随后查看/etc/mysql/mysql.conf.d/mysqld.cnf    发现开启了:require_secure_transport=ON

       暂时注释掉,然后使用root成功登录。随后来解决关于require_secure_transport=ON 访问的问题。

       全局搜索mysql使用的ssl认证,发现路径 在 /var/lib/mysql/路径下下 ,下载需要的client先关的pem,尝试使用本地的navicat访问失败,可能是navicat版本问题,继续后续测试。

       然后又用linux服务器的命令行访问:mysql -h 服务IP -u 用户 -p密码 --ssl-ca='/opt/robot_cert/ca.pem' --ssl-cert='/opt/robot_cert/client-cert.pem' --ssl-key='/opt/robot_cert/client-key.pem';

       可以访问。恢复root访问授权。close掉