首次安装后连接到 zoneminder 时出错:拒绝用户“zmuser”@“localhost”或“www-data”@“localhost”访问

首次安装后连接到 zoneminder 时出错:拒绝用户“zmuser”@“localhost”或“www-data”@“localhost”访问

在全新安装的 Ubuntu Server 22 上成功运行后apt-get install zoneminder,zoneminder Web 应用程序在启动时返回以下错误:

[重新连接到数据库时出错:errstr:拒绝用户“www-data”@“localhost”访问(使用密码:否)

或者

ZoneMinder 错误无法使用 dsn mysql:host=localhost;dbname=zm 连接到 ZM db SQLSTATE[HY000] [1045] 拒绝用户“zmuser”@“localhost”访问(使用密码:是)

答案1

我主要是一个 Linux 爱好者,所以这些问题对其他人来说可能是不言而喻的?!在全新安装 zoneminder 后,我遇到了两个不同的问题,概述如下。

Conf 文件权限

apt-get install zoneminder没有正确设置 conf 文件的权限,因此第一个错误“拒绝用户 'www-data'@'localhost' 访问(使用密码:NO)”是转移注意力的借口。更改 conf 文件的组所有权将解决此错误:

$ chgrp -c www-data /etc/zm/zm.conf
$ systemctl stop zoneminder.service
$ systemctl start zoneminder.service

也可以看看:https://forums.zoneminder.com/viewtopic.php?p=128894#p128894

然而您立即遇到了下一个问题:“ERR [重新连接到数据库时出错:errstr:拒绝用户‘zmuser’@‘localhost’访问(使用密码:是)错误值:]”

在 MySql 中创建 ZM 数据库 ZMUSER

我很惊讶地发现,安装时没有创建 zoneminder 数据库和数据库用户。也许这是上面的 conf 文件权限造成的。无论如何,这是我解决问题的方法:

步骤 1:找到您的 mysql 管理员用户和密码:

$ sudo cat /etc/mysql/debian.cnf

也可以看看:https://stackoverflow.com/a/54165621/188474

步骤 2:创建 zoneminder 数据库

现在您知道了您的管理员用户,您可以创建 zoneminder 数据库:

$ mysql -u debian-sys-maint -p < /usr/share/zoneminder/db/zm_create.sql
Enter password:
$ mysql -u debian-sys-maint -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 34
Server version: 8.0.35-0ubuntu0.22.04.1 (Ubuntu)

...

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| zm                 |
+--------------------+

看起来好多了!我们现在有了 zm 数据库!

步骤3:登录mysql并创建zmuser数据库用户

然后,您可以从终端提示符创建 ZM 用户,也可以登录 mysql 并创建用户。我登录是因为它感觉更熟悉:

$ mysql -u debian-sys-maint -p
Enter password:
Welcome to the MySQL monitor.
...
mysql> create user zmuser identified by '<strong password here>';
Query OK, 0 rows affected (0.08 sec)

mysql> grant all on zm.* to zmuser;
Query OK, 0 rows affected (0.02 sec)

mysql> exit
Bye

步骤 4:更新 zoneminder conf 文件

快完成了!MySql 已设置 zmuser、授权和正确的 zm 数据库和架构。最后一步是使用您上面创建的 zmuser 密码更新 zoneminder conf 文件:

$ sudo vi /etc/zm/zm.conf

触摸 conf 文件似乎会重新启动 zoneminder 服务,因此该网站立即对我有用。如果不行,请尝试停止并重新启动 zoneminder 和/或 apache:

sudo systemctl restart apache2
sudo systemctl restart zoneminder

祝你好运!

相关内容