在全新安装的 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
祝你好运!