【发布时间】: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; }
标签: php mysqli phpmyadmin mysql-workbench