You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MySQL授权权限报错1133:无法找到用户表匹配行求助

解决MySQL授权时ERROR 1133 (42000)的问题

这个错误的核心原因是MySQL的用户身份是由userhost两个字段共同唯一确定的,你当前的django用户对应的host可能不是localhost,导致你用django@localhost执行授权时,MySQL在用户表里找不到匹配的行。

第一步:确认django用户的完整身份信息

先执行这条SQL,查看所有用户的userhost和权限状态:

SELECT user, host, grant_priv FROM mysql.user;

你之前只查了usergrant_priv,漏掉了关键的host字段——比如你的django用户可能是用django@'%'创建的(允许从任意主机连接),而不是django@localhost

第二步:根据查询结果调整授权操作

分两种情况处理:

  • 情况1:你的django用户的host%或其他非localhost值
    直接用匹配的host信息执行授权:

    GRANT ALL PRIVILEGES ON django.* TO 'django'@'%' IDENTIFIED BY '';
    

    %替换成你查询到的实际host值即可。

  • 情况2:你确实需要给django@localhost用户授权
    先创建这个用户,再授予权限:

    CREATE USER 'django'@'localhost' IDENTIFIED BY '';
    GRANT ALL PRIVILEGES ON django.* TO 'django'@'localhost';
    

第三步:刷新权限生效

最后执行刷新权限的命令,确保修改生效:

FLUSH PRIVILEGES;

补充说明

你之前执行FLUSH PRIVILEGES没用,是因为根本不存在django@localhost这个用户,刷新权限也没法凭空生成用户行。必须先确保用户身份(user+host)在mysql.user表中存在,再执行授权操作。

内容的提问来源于stack exchange,提问作者SHENQIDECAONIMA Teddy

火山引擎 最新活动