• 【转发】Ubuntu20.04中MySQL8.0出现ERROR(1449)


    登录mysql,使用show databases;和show tables;这两个命令时报错ERROR 1449,备份数据库时报了同样的错误,这样的话卸载mysql重装就变得非常危险。

    报错信息
    ERROR 1449 (HY000): The user specified as a definer (‘mysql.infoschema’@‘localhost’) does not exist

    错误分析
    报错信息提示用户mysql.infoschema@localhost不存在,执行命令
    select user,host from mysql.user;
    然而看到mysql.infoschema用户是存在的,这让人一头雾水,去搜索了一圈,说是让使用mysql_upgrade命令,这个命令在mysql8.0已经被废弃了,但是我们还有别的解决办法。

    两种方案
    第一种:
    在终端执行
    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
    打开mysqld.cnf文件
    在末尾键入以下代码(作用是跳过mysql的登录验证):

    skip-external-locking
    skip-grant-tables

    wq保存并退出,service mysql restart重启mysql server,这样就实现了mysql的免密登录,在终端下输入mysql再回车,使用show databases;命令,如果运气好的话,应该不会再报错了,也可以正常备份。
    可是mysql免密登录在本地还好,甚至要方便一些,但在服务端有很大的风险,没事,还有第二种方案。
    第二种:
    注释掉刚才添加过的配置文件代码,重启mysql,mysql -uroot -p登录,执行下列命令:

    删除导致报错的用户

    DROP USER 'mysql.infoschema'@'localhost';

    重新创建该用户,密码自己定义,留空也可以

    CREATE USER 'mysql.infoschema'@'localhost' IDENTIFIED BY 'password';

    赋予权限

    GRANT ALL PRIVILEGES ON . TO 'mysql.infoschema'@'localhost' WITH GRANT OPTION;

    使更改生效

    FLUSH PRIVILEGES;

    此时使用show databases;命令可以正常查看数据库了,问题解决,不需要卸载重装。

    可能的问题
    或许你使用了上述的方法,但发现web项目不能访问,以wordpress为例,会出现连接数据库时出错,这时在终端使用以下命令:
    mysql -u wordpress -p
    输入你的密码,应该是不能正常连接的,这与mysql8.0的新的加密方式有关,可以使用以下方式进行修正:

    登录mysql

    mysql -u root -p

    选择数据库

    use mysql;

    修改plugin字段

    update user set plugin="mysql_native_password";

    删除原有用户

    drop user 'wordpress'@'localhost';

    重新创建,密码要跟原来的保持一致,当然也可以重新设置,然后修改项目配置文件

    CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'password';

    赋予权限

    GRANT all ON wordpress.* TO 'wordpress'@'localhost';
    FLUSH PRIVILEGES;
    exit;

    重启mysql服务,再次访问web项目正常。如果你的项目有很多个,可能每一个都要修改,但是数据不会丢失。

    写在后面
    暂时没有发现是什么导致了这个问题,试过很多方法也没有重现,不过问题算是解决了。

    来源: https://blog.csdn.net/ljc545w/article/details/109725115

  • 相关阅读:
    仿IOS中下拉刷新的“雨滴”效果
    BZOJ 4216 Pig 分块乱搞
    mybatis学习笔记(10)-一对一查询
    关于人性,我是这么看的——“唯进化”论!
    IDEA引MAVEN项目jar包依赖导入问题解决
    IntelliJ IDEA 缓存和索引介绍和清理方法
    springboot整合mybatis使用阿里(阿里连接池)和xml方式
    Intellij 如何在新窗口中打开项目
    intellij idea 在什么地方打开终端Terminal
    Spring Boot 集成MyBatis
  • 原文地址:https://www.cnblogs.com/StephenWu5/p/16296156.html
Copyright © 2020-2023  润新知