开发者问题收集

MySQL Emoncms PHP 错误:用户密码:否

2018-09-29
679

我正尝试让 Emoncms 在经过验证的必备条件(如 mod_rewrite 和 LAMP 服务器)的共享托管 MediaTemple Web 服务器上运行。我已使用用户和密码创建了数据库,并尽我所能配置了 settings.php

/ - this is root
/emoncmsdata - Its 777 for data folders /phpfina & /phpfiwa & /phptimeseries
/httpdocs - this is my public folder
/httpdocs/emoncms - this is where the settings.php is and where modules are

但是当我访问 santiapps.com/emoncms/ 时,我得到了:

Can’t connect to database, please verify credentials/configuration in settings.php

Error message: Access denied for user ‘marskoko’@‘localhost’ (using password: NO).

我已将数据库、用户和密码放入脚本中。我已经检查过了,并通过他们的 plesk 重置了密码。

  1. 我知道该用户的密码是正确的,因为我可以使用 mysql -u user -p pass 通过终端使用该密码登录,然后我得到了 MariaDB 服务器,然后我可以输入 USE Emoncms ,提示符显示我已连接到 Emoncms

  2. 应用程序创建的 emoncms.log 文件是空的。我在 Web 服务器 error.log 中发现了很多这样的错误:

    [2018 年 9 月 28 日星期五 20:53:23.620729] [proxy_fcgi:error] [pid 8219:tid 140039956670208] [client 83.139.179.122:35214] AH01071:出现错误“主脚本未知\n”

  3. 我查看了 SO 中关于此用户密码:NO 问题的大部分帖子,它们都与 root 有关,而我不是 root。我正在使用另一个名为 marskoko 的用户。

    拒绝用户 'root'@'localhost' 访问(使用密码:否)?无法验证 php/Mysql?

  4. 我无法停止或启动服务器,我尝试过 service mysql stop 并得到:

    重定向到 /bin/systemctl stop mysql.service

    无法停止 mysql.service:单元 mysql.service 未加载。

    4.a) 我最近被建议尝试:

    service mysqld restart
    

    但我得到了类似的错误:

    重定向到 /bin/systemctl restart mysqld.service

    无法重新启动 mysqld.service:未找到单元。

    但我知道它正在运行,否则我将无法查看我的其他数据库。

  5. 我已创建此 php 文件:

    <?php
    $db = mysqli_connect("localhost","marskoko","myPasshasAdollarSign") or die("无法打开与 MySQL 服务器的连接。");
    mysqli_select_db($db, "emoncms") or die("无法选择数据库");
    \>
    

    并运行它,我得到了这个:

    无法打开与 MySQL 服务器的连接。

    5.a) 当我使用 mysqli_connect_error() 时,我得到:

    拒绝用户“emonuser”@“localhost”访问(使用密码:NO)

    注意:用户不同,因为我想确保数据库或用户没有问题,所以我删除了数据库并重新创建它并更改了用户名。数据库仍然存在,我仍然可以使用 mysql 命令和相同的密码通过 MariaDB 访问它。

  6. 我尝试了这个建议:

    ps aux | grep mysql

    我得到了这个:

    mysql 7766 0.0 0.0 113200 1588 ? Ss Sep28 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
    mysql 8286 0.7 5.4 1906888 457400 ? Sl Sep28 5:12 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/lib/mysql/activacorp.net.err --pid-file=activacorp.net.pid --socket=/var/lib/mysql/mysql.sock --port=3306
    root 15702 0.0 0.0 112600 1068 pts/0 S+ 09:17 0:00 grep --color=auto mysql
    
  7. 我刚刚尝试使用用户/密码登录数据库,并尝试获取用户表,但得到了以下信息:

    MariaDB [emoncms]> select * from user;
    错误 1146 (42S02):表“emoncms.user”不存在
    

然后我再次检查了我所有的数据库,发现它们都没有用户表。它们有我添加并使用的其他表,但没有用户表。也许 phpmyadmin 隐藏了它,我不知道。

我不知道还能尝试什么。

2个回答

我认为您可以通过以下步骤解决此问题

  1. 使用 service mysqld start/stop/restart 而不是 service mysql start/stop/restart 来启动/停止 mysql

  2. 确保您获得了正确的 mysql 用户密码 - root,如果没有,请按照步骤 3 重置密码,否则,跳过步骤 3

  3. 编辑 mysql 配置文件,通常是 /etc/my.cny ,在 [mysqld] 下添加 skip-grant-tables ,然后重新启动 mysql,现在您可以无需密码进入 mysql,然后使用

    update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost'; 重置密码

    刷新权限;

  4. 就这些,请检查一下

tyloafer
2018-09-29

好的,我搞明白了。在 php 中挖掘后,我尝试在 emoncms 的 index.php 中记录 $password 变量,结果记录为空白,而用户名、数据库或其他变量则记录正确。我最终在 mysqli 行中用实际密码替换了 $password,现在就可以正常工作了。因此,我只需将 $password "" 替换为 '',现在就可以正常工作了。

marciokoko
2018-09-29