我们的服务器是linux+mysql 5.1,里面有个数据库 dbmain ,客户端是windows2008 + .net 4.0 ,客户端ip是192.168.1.11。建了一个用户user1,有select,update,delete,insert 权限:grant select,update,delete,insert on dbmain.* to 'user1'.'192.168.1.11' identity by 'user123';然后.net程序报错,说找不到某个存储过程sp_aaa,于是又加了execute 权限grant execute on dbmain.* to 'user1'.'192.168.1.11';然后.net程序又报错:The user specified as a definer ('user1'@'%') does not exist这我就搞不明白了,为啥要找'user1'@'%'这个用户,'user1'@'%' 这样的用户公司制度是不允许建的。有高手能帮忙解决一下么??谢谢!

解决方案 »

  1.   

    grant select,update,delete,insert on dbmain.* to 'user1'@'192.168.1.11' identity by 'user123';
    试试
      

  2.   

    grant select,update,delete,insert on dbmain.* to 'user1'.'192.168.1.11' identity by 'user123';
    grant select,update,delete,insert on dbmain.* to 'user1'@'192.168.1.11' identity by 'user123';
      

  3.   

    grant select,update,delete,insert on dbmain.* to 'user1'@'192.168.1.11' identity by 'user123';MYSQL中的用户账号是  username@hostname
      

  4.   

    这个我知道,问题是,为啥会要求 'user1'@'%' 这个用户? 'user1'@'192.168.1.11' 用户我已经给它建好了。
      

  5.   

    你的这个user1 是在哪儿登录的?  '192.168.1.11' ?建议先不要用程序中试,直接用MYSQL命令行工具测试一下。这样,你可以直接复制所有的返回信息包括错误提示。
      

  6.   

    select user,host,password from mysql.user;
    贴结果
      

  7.   

    你不是运维人员  怎么执行的那个grant语句
      

  8.   

    问题解决了,原因是创建那个存储过程的脚本是用工具生成的,指定了所有者 'user1'@'%'。这个所有者在我们测试库存在,在正式库不存在,然后执行的时候就告诉我 'user1'@'%' 不存 。