指定为定义者的用户('mysql.infoschema@localhost')不存在
请帮助我解决此问题,我尝试了许多带有绿色标记的解决方案,但仍然无法解决。 我不小心更改了所有mysql用户密码,然后创建了新用户后,出现了问题。使用mysql工作台登录时,显示错误。
我尝试过
mysql_upgrade [返回指定为定义者的用户('mysql.infoschema@localhost')不存在]
更新mysql.proc [返回proc表不存在]
全部GRANT [返回指定为定义者的用户('mysql.infoschema@localhost')不存在]
我无法导出,导入,检查表,因为它总是说指定为定义者的用户('mysql.infoschema@localhost')不存在
答案 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;
}
为我工作!