mysql.infoschema@localhost不存在

时间:2019-02-07 02:52:01

标签: mysql database

指定为定义者的用户('mysql.infoschema@localhost')不存在

请帮助我解决此问题,我尝试了许多带有绿色标记的解决方案,但仍然无法解决。 我不小心更改了所有mysql用户密码,然后创建了新用户后,出现了问题。使用mysql工作台登录时,显示错误。

我尝试过

  • mysql_upgrade [返回指定为定义者的用户('mysql.infoschema@localhost')不存在]

  • 更新mysql.proc [返回proc表不存在]

  • 全部GRANT [返回指定为定义者的用户('mysql.infoschema@localhost')不存在]

我无法导出,导入,检查表,因为它总是说指定为定义者的用户('mysql.infoschema@localhost')不存在

2 个答案:

答案 0 :(得分:2)

这是因为您没有用户作为'mysql.infoschema'@'localhost'。它用作INFORMATION_SCHEMA视图的DEFINER。这是默认用户,应该已经在该用户那里。如果不是:

请参见documentation

将用户创建为

create user 'mysql.infoschema'@'localhost' identified by 'password';

并授予其特权

grant all privileges on *.* to 'mysql.infoschema'@'localhost';

答案 1 :(得分:0)

我遇到了同样的问题,我尝试了许多建议,但是当我探查修复数据库时,命令mysql_upgrade不起作用,请尝试使用升级选项启动mysql,就像这样。

char *str2sha256( const char *str, int length ) {
  int n;
  SHA256_CTX c;
  unsigned char digest[ SHA256_DIGEST_LENGTH ];
  char *out = (char*) malloc( 33 );

  SHA256_Init( &c );

  while ( length > 0 ) {
    if ( length > 512 ) SHA256_Update( &c, str, 512 );
    else SHA256_Update( &c, str, length );

    length -= 512;
    str += 512;
  }

  SHA256_Final ( digest, &c );

  for ( n = 0; n < SHA256_DIGEST_LENGTH; ++n )
    snprintf( &( out[ n*2 ] ), 16*2, "%02x", (unsigned int) digest[ n ] );

  return out;
}

为我工作!