【发布时间】:2020-10-30 01:30:29
【问题描述】:
我正在尝试建立一个名为CollectiveAccessProvidence 的内容管理系统,但目前我一直坚持让 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,但没有成功。
我还能尝试什么,或者我还能在哪里寻找线索?
【问题讨论】:
-
你是在本地机器上测试这个还是托管?
-
托管,通过ssh访问,数据库和网络服务器都在localhost上。
-
您是否尝试过创建数据库用户并使用这些凭据?
-
是的,我创建了数据库,并且可以使用 php 中指定的同一用户从 shell 登录。
-
不显示用户名/密码等你的连接脚本是什么?
标签: mysql privileges