我正试图建立一个名为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。