我正在尝试“测试”一个ODBC连接器5.3,它给我“用户[用户名] @lhosthost(使用密码:是)拒绝访问”。但是,当我查看用户表时,我看到GRANT ALL PRIVILEGES ON *.* TO [username]@'%' IDENTIFIED BY PASSWORD 'xxxx' WITH GRANT OPTION
。
我觉得应该通过该行授予所有权限。我错过了什么?
答案 0 :(得分:0)
这是一个常见的错误,因为MySQL访问受到客户端主机和用户名&的限制。密码凭证,并且必须按the MySQL documentation中详细说明的方式专门授予访问权限。请注意,localhost
是一种特殊情况,您的通配符GRANT
无法解决 -
如果您无法弄清楚为什么会得到
Access denied
,请从user
表中删除包含通配符Host
值的所有行(包含'%'
或{{的行1}}字符)。一个非常常见的错误是插入一个包含'_'
和Host='%'
的新行,认为这样可以指定User='some_user'
从同一台计算机进行连接。这不起作用的原因是默认权限包含localhost
和Host='localhost'
的行。因为该行的User=''
值Host
比'localhost'
更具体,所以从'%'
连接时,它会优先用于新行!正确的过程是插入包含localhost
和Host='localhost'
的第二行,或删除包含User='some_user'
和Host='localhost'
的行。删除行后,请记住发出FLUSH PRIVILEGES
语句以重新加载授权表。另见Section 6.2.6, “Access Control, Stage 1: Connection Verification”。