希望你有经验的人能清理我的挫败感!我搜索过&研究并发现多个来源讨论我正在尝试排除故障的类似问题,但似乎没有人帮助解决这个问题。如果没有给出我尝试过的整个历史列表,那么现在的情况就是:
我已经完成了使用mysqli设置简单MySql连接的所有教程。这是我的简单代码(删除了凭据):
$connection = mysqli_connect($mylocalglobalip,$username,$password,$dbname);
无论我尝试过什么,我都会得到友好的
“mysqli_connect():( HY000 / 1045):拒绝用户访问 'username'@'mylocalglobalip'(使用密码:YES)“警告。
如果我通过SSH连接到远程服务器,我可以从非root和root登录进入MySql控制台。但是,如果我使用,我只能登录...
mysql -u username -p
...并在提示时提供我的密码。但是,如果我输入......
mysql -u username -pPassword
......没有运气。我再次获得Access Denied。
为什么我可以通过Workbench登录,但不能通过我的本地PHP脚本登录?我需要在本地和/或远程配置文件中启用一个明显的参数吗?从我看过的php和mysql配置文件中,我看不到任何会阻止PHP连接的内容。
我很乐意根据您的要求提供配置和代码段!
感谢阅读!
答案 0 :(得分:0)
感谢评论和回复,解决方案呈现出来。迈克尔(sqlbot)提到使用-p'你的密码'用单引号括起密码中的任何特殊字符。然后我突然意识到(作为一个PHP菜鸟),检查PHP代码中的$ password变量。果然我有一些效果:
$password = "some random pa$$word goes here";
糟糕。 PHP中双引号内的$字符表示字符串中的变量插入。这很可能被解释为:
"some random pa goes here" // Since $ is empty and $word isn't a declared variable!
在单引号之间放置带有$ special字符的密码解决了简单的PHP语法问题。
感谢您阻止我走上服务器重新配置的道路,并鼓励我更仔细地搜索我的PHP代码!
答案 1 :(得分:-1)
这是一个寻找漏洞,至少在某些情况下听起来像凭证是错误的。
检查mysql日志并验证它是否在您从命令行成功登录时以及从PHP执行此操作或从命令行失败时显示相同的用户。您有时可能会显示为'用户名'或者'用户名' @' localhost'或'用户名' @' fqdn'并基于此加以区别对待。
仔细检查以确保您没有在两个不同的地方输入不同的凭据。验证凭据是否正确导入您的php文件。