当尝试使用PHP-mysqli访问数据库并且在使用命令行mysql工具时使用完全相同的用户名,密码,套接字,数据库时,MySQL可能存在错误“Access denied for user 'xxx'@'yyy'”
的可能原因和主持人?
的更新
mysql.user
表中确实有三个用户,每个用户拥有不同的主机(但密码相同),一个设置为localhost,一个设置为127.0.0.1,另一个设置为计算机的主机名。删除其中两个并将第三个主机更改为“%”只有一个效果:现在也使用命令行工具拒绝访问。
我做了一个
select user();
之前在命令行中它产生了在php中被拒绝的相同的xxx @ yyy。
答案 0 :(得分:5)
有时在php / mysql中,localhost和127.0.0.1之间存在差异
在mysql中,您根据主机名授予访问权限,对于localusers,这将是localhost。 我已经看到php尝试连接'myservername'而不是localhost,尽管在配置'localhost'中定义了。
尝试在mysql中为127.0.0.1授予访问权限,并在php中通过127.0.0.1端口3306进行连接。
答案 1 :(得分:3)
如果有人仍然感兴趣:我从未解决过这个特殊问题。看起来好像问题出在我运行MySQL的硬件上。从那以后我就再也没见过像这样的东西了。
答案 2 :(得分:0)
在我阅读您的更新后,我怀疑/密码错误。 您是否在PW中使用“奇怪”字符(可能会导致utf-8 / iso编码问题)?
在主机字段中使用%将允许用户从任何主机进行连接。所以唯一可能出错的就是密码。
您可以创建其他用户吗? “全部为'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 不要忘记'冲洗privelidges'
有关如何创建新用户的信息,请点击here
答案 3 :(得分:0)
今天我的网络托管服务提供商的FTP服务遇到了一些麻烦,所以我决定在我的网站上实现一个本地虚拟网络服务器。我已经使用phpMyAdmin安装了EasyPHP 14.1,并且我已经用表格创建了我的用户和我的数据库。
首次尝试:失败。我意识到我所寻找的桌子并不存在。 - >我解决了创建丢失的表格的问题。
第二次尝试:失败。我意识到我为新用户设置的用户名与我用于连接的用户名不同。 - >我编辑了用户名。
第三次尝试:失败。我意识到新数据库名称与我在我的站点中用于连接的数据库名称不同。 - >我编辑了db name。
第四次尝试:失败。我意识到我的新用户的权限之间没有“Grant”。我甚至不知道“格兰特”是什么意思,但让我们尝试启用它 - >添加了“授予”权限。
第五次尝试:我赢了!
我希望我的小冒险可以帮助别人。 =)