重新访问 MySQL 访问被拒绝
Posted
技术标签:
【中文标题】重新访问 MySQL 访问被拒绝【英文标题】:MySQL Access Denied Revisited 【发布时间】:2018-08-31 02:17:52 【问题描述】:我已经阅读并分析了围绕以下错误消息的无数问题和答案:
“用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)。”
他们中的大多数都处理丢失/忘记/损坏的密码,并且有很多关于如何解决问题的建议。然而,它们似乎都不适用于我的情况,但这并没有阻止我尝试一切。
历史:
我在我的 Ubuntu 17.10 上安装了 LAMP,但我还是个新手,最终放弃了 Windows 和 WAMP。 mysql 是使用“root”密码安装的,我可以使用它登录到 phpMyAdmin 和 MySQL-Workbench,在这些地方我可以做的事情不受限制。一切正常,我没有收到任何错误。 Apache 也可以正常运行,并且我在系统中填充了一些当前的 Web 项目,这些项目都按预期在“localhost”下运行。
最后,今天我尝试提出一个使用 PHP 访问 MySQL 的项目,这是我已经编写了数百次但在 Ubuntu 下我无法克服由 mysqli_connect() 请求生成的上述错误。我更改了密码、创建了其他用户、修改了 IP 地址等,一切正常,并且在 phpMyAdmin 和 MySQL Workbench 中按预期运行,但在使用 PHP 时却不行。
对此必须有一个简单的解释,但我对 Linux 不够流利,不知道那是什么。
我希望有人可以推荐一些可以尝试的东西。
设置:
数据库服务器
Server: Localhost via UNIX socket
Server type: MySQL
Server version: 5.7.21-0ubuntu0.17.10.1 - (Ubuntu)
Protocol version: 10
User: root@localhost
Server charset: UTF-8 Unicode (utf8)
网络服务器
Apache/2.4.27 (Ubuntu)
Database client version: libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 7.1.15-0ubuntu0.17.10.1
phpMyAdmin
Version information: 4.6.6deb5
【问题讨论】:
它们如何不适用于您的情况?我在将其标记为重复之前询问。 如果用户和密码在 phpMyAdmin 中有效,那么 PHP 可以使用这些凭据连接到该数据库。问题一定出在您如何将它们传递给mysqli_connect
。
我将所有类和代码缩减为取自 secure.php.net/manual/en/function.mysqli-connect.php 的简单连接语句,以确保没有其他问题。
阅读为:包含您的 PHP 代码,否则我们将无法提供帮助。
我使用的代码是: $link = mysqli_connect("localhost", "root", $password, tracking"); if (!$link) echo mysqli_connect_error() ; exit;
【参考方案1】:
已解决
正如我所说,我是 Linux 新手,默认用户安全功能需要一些时间来适应。显然,当我安装 MySQL 时,我的用户名和密码(作为 root?)被用来限制对 /var/lib 下的三个 MySQL 文件夹的访问。
一旦我发现我在 phpMyAdmin 中使用相同的名称/密码构建了一个 MySQL 用户,突然间我所有的后端例程都工作了。也许这与使用 root 密码安装 MySQL 有关,但我对为什么我的 root/pass 在 phpMyAdmin 中工作而不是在代码中工作感到困惑。
当然,所有这些都有一个简单的解释,也许有人可以解释它。但是现在,如果您像我一样缺乏 Linux 知识并且遇到此问题,希望这对您有用。
【讨论】:
以上是关于重新访问 MySQL 访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
#1045 - 用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)MAMP MySQL 访问被拒绝