微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php应用程序拒绝访问数据库,但相同的凭据可从CLI使用

如何解决php应用程序拒绝访问数据库,但相同的凭据可从CLI使用

我正在尝试建立一个名为CollectiveAccess Providence的内容管理系统,但是目前,我一直坚持在数据库上对PHP应用程序进行身份验证。初始安装页面指示对数据库进行身份验证时出现问题:

Fatal error: Uncaught DatabaseException: Access denied for user 'providenceuser'@'localhost' to database 'providencedb' in /var/www/html/providence/app/lib/Db/MysqLi.PHP:144 Stack trace: #0 /var/www/html/providence/app/lib/Db.PHP(134): Db_MysqLi->connect() #1 /var/www/html/providence/app/lib/Db.PHP(108): Db->connect() #2 /var/www/html/providence/app/lib/ConfigurationCheck.PHP(103): Db->__construct() #3 /var/www/html/providence/install/inc/page1.PHP(44): ConfigurationCheck::performInstall() #4 /var/www/html/providence/install/index.PHP(148): require_once('/var/www/html/p...') #5 {main} thrown in /var/www/html/providence/app/lib/Db/MysqLi.PHP on line 144

出于测试目的,此问题使用db-connect-test.php,该问题也有问题,但我可以解决。 第一次尝试测试应用程序时,我被拒绝访问。

dev-admin@devtest:~$ PHP -f PHP_db_test/db-connect-test.PHP
PHP Warning:  MysqLi_connect(): (HY000/1698): Access denied for user 'root'@'localhost' in /home/dev-admin/PHP_db_test/db-connect-test.PHP on line 10

当我运行与超级用户相同的命令时,我可以连接,因为它正确地报告了:

There are no tables<br />

在测试应用程序中,如果我更改了数据库用户“ root”,并将密码留为“”,则似乎可以连接:

但是,对于普罗维登斯而言,这是行不通的,仍然给了我“拒绝访问”的权限。

我以为连接的类型可能是问题所在,所以我跑了:

UPDATE MysqL.user SET plugin = 'MysqL_native_password' WHERE user = 'providenceuser' AND plugin IN ('unix_socket','auth_socket');

FLUSH PRIVILEGES;

但是,没有帮助。 我也曾尝试将配置文件中的“ localhost”更改为127.0.0.1,但没有成功。

我还能尝试什么?在哪里可以找到线索?

解决方法

问题似乎出在我如何创建数据库上:

GRANT ALL ON providencedb TO 'providenceuser'@'localhost' IDENTIFIED BY 'passw0rd' WITH GRANT OPTION;

像这样重新创建时,我能够安装:

GRANT ALL ON providencedb.* TO 'providenceuser'@'localhost' IDENTIFIED BY 'passw0rd' WITH GRANT OPTION;

我能够继续进行安装。新安装的其他不同之处是我使用了Ubuntu 18.04和php7.2。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。