主题: 在roundcube中无法修改密码

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):
- 使用的 Linux/BSD 发行版名称及版本号:
- 与您的问题相关的日志信息:
==== ==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:0.8.6   roundcubemail-0.9.5
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):mysql
- 使用的 Linux/BSD 发行版名称及版本号:centos6.7
- 与您的问题相关的日志信息:
张工,麻烦帮我看看!
用户在web邮箱中无法修改密码,提示:无法保存新密码
日志如下:
Feb 17 13:57:46 mail roundcube: DB Error: SQLSTATE[28000] [1045] Access denied for user 'roundcube'@'localhost' (using password: YES) in /var/www/roundcubemail-0.9.5/program/lib/Roundcube/rcube_db.php on line 154 (POST /mail/?_task=settings&_action=plugin.password-save?_task=&_action=)

从日志上看,提示访问拒绝。但是我可以在mysql中用该账户直接登录成功执行update命令。请问是否需要在其他地方做设置?

回复: 在roundcube中无法修改密码

SQL 用户 "roundcube" 应该有 UPDATE 的权限操作 vmail.mailbox 表。

回复: 在roundcube中无法修改密码

首先感谢张工这么晚了还帮忙回复,幸苦了。
roundcube用户对vmail.mailbox表是有UPDADE权限的,而且我直接在Mysql数据库中用roundcube用户对vmail.mailbox表也可以成功执行UPDATE操作。是否需要在config/db.inc.php ,config/main.inc.php中添加该账户和密码,如果需要格式应该怎么写?谢谢!
以下是show grant结果:
mysql> show grants for roundcube@'localhost';
+-----------------------------------------------------------------------------------------+
| Grants for roundcube@localhost                                                          |
+-----------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'roundcube'@'localhost' IDENTIFIED BY PASSWORD '***************' |
| GRANT ALL PRIVILEGES ON `roundcubemail`.* TO 'roundcube'@'localhost'                    |
| GRANT ALL PRIVILEGES ON `vmail`.`mailbox` TO 'roundcube'@'localhost

mysql> show grants for roundcube;
+---------------------------------------------------------------------------------+
| Grants for roundcube@%                                                          |
+---------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'roundcube'@'%' IDENTIFIED BY PASSWORD '**************' |
| GRANT ALL PRIVILEGES ON `roundcubemail`.* TO 'roundcube'@'%'                    |
| GRANT SELECT, UPDATE ON `vmail`.`mailbox` TO 'roundcube'@'%'

回复: 在roundcube中无法修改密码

如果有 update 权限应该就够了。建议打开 roundcube 配置文件里的 sql debug 参数具体排查一下。

回复: 在roundcube中无法修改密码

你好,SQL DEBUG日志如下,请帮我看看!
Feb 18 12:28:31 mail roundcube: [1] SET NAMES 'utf8';
Feb 18 12:28:31 mail roundcube: [2] SELECT vars, ip, changed FROM session WHERE sess_id = 'u7v5t41j47nsklcprgsv3c7be6';
Feb 18 12:28:31 mail roundcube: [3] SELECT * FROM users WHERE user_id = '4';
Feb 18 12:28:47 mail roundcube: [1] SET NAMES 'utf8';
Feb 18 12:28:47 mail roundcube: [2] SELECT vars, ip, changed FROM session WHERE sess_id = 'u7v5t41j47nsklcprgsv3c7be6';
Feb 18 12:28:47 mail roundcube: [3] SELECT * FROM users WHERE user_id = '4';
Feb 18 12:28:47 mail roundcube: DB Error: SQLSTATE[28000] [1045] Access denied for user 'roundcube'@'localhost' (using password: YES) in /var/www/roundcubemail-0.9.5/program/lib/Roundcube/rcube_db.php on line 154 (POST /mail/?_task=settings&_action=plugin.password-save?_task=&_action=)
Feb 18 12:29:47 mail roundcube: [1] SET NAMES 'utf8';
Feb 18 12:29:47 mail roundcube: [2] SELECT vars, ip, changed FROM session WHERE sess_id = 'u7v5t41j47nsklcprgsv3c7be6';
Feb 18 12:29:47 mail roundcube: [3] SELECT * FROM users WHERE user_id = '4';
Feb 18 12:30:48 mail roundcube: [1] SET NAMES 'utf8';
Feb 18 12:30:48 mail roundcube: [2] SELECT vars, ip, changed FROM session WHERE sess_id = 'u7v5t41j47nsklcprgsv3c7be6';
Feb 18 12:30:48 mail roundcube: [3] SELECT * FROM users WHERE user_id = '4';
另外,如果在mysql给roundcube用户更改密码,是否需要在其他文件更改? 谢谢。

回复: 在roundcube中无法修改密码

ok了,是由于我修改了roundcube的密码但是没有在plugins/password目录里面修改相应参数导致的,多谢张工了。