如何解决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 举报,一经查实,本站将立刻删除。