首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql登录失败导致跟踪热备份失败

问MySql登录失败导致跟踪热备份失败
EN

Stack Overflow用户
提问于 2014-11-06 14:16:12
回答 1查看 255关注 0票数 0

我正在尝试将trac 1.0实例从一台计算机移动到另一台计算机。我使用了这里描述的Trac备份和恢复过程,该过程使用hotcopy命令。

http://trac.edgewall.org/wiki/TracBackup

然后,我创建了一个新的MySql数据库,其中包含一个用于跟踪的新用户,分配了适当的权限,然后运行tracadmin initenv命令来创建新的跟踪环境。我使用tracd部署了它,它似乎工作得很好。

当我尝试用热拷贝备份的内容替换这个新的环境时,当我尝试连接到服务器时,我得到了以下错误...

我是不是错过了什么步骤?我已经更改了MySql权限,以确保它们与我在数据库字符串中传递给trac的密码和用户名相匹配。有没有可能是因为我复制了新的环境,而trac使用了错误的密码连接到MySql,所以它被覆盖了?

任何帮助都是非常感谢的!

代码语言:javascript
复制
Traceback (most recent call last):
  File "build/bdist.linux-x86_64/egg/trac/web/api.py", line 502, in send_error
    data, 'text/html')
  File "build/bdist.linux-x86_64/egg/trac/web/chrome.py", line 955, in render_template
    message = req.session.pop('chrome.%s.%d' % (type_, i))
  File "build/bdist.linux-x86_64/egg/trac/web/api.py", line 304, in __getattr__
    value = self.callbacks[name](self)
  File "build/bdist.linux-x86_64/egg/trac/web/main.py", line 268, in _get_session
    return Session(self.env, req)
  File "build/bdist.linux-x86_64/egg/trac/web/session.py", line 206, in __init__
    self.get_session(sid)
  File "build/bdist.linux-x86_64/egg/trac/web/session.py", line 229, in get_session
    super(Session, self).get_session(sid, authenticated)
  File "build/bdist.linux-x86_64/egg/trac/web/session.py", line 76, in get_session
    with self.env.db_query as db:
  File "build/bdist.linux-x86_64/egg/trac/db/api.py", line 165, in __enter__
    db = DatabaseManager(self.env).get_connection(readonly=True)
  File "build/bdist.linux-x86_64/egg/trac/db/api.py", line 250, in get_connection
    db = self._cnx_pool.get_cnx(self.timeout or None)
  File "build/bdist.linux-x86_64/egg/trac/db/pool.py", line 213, in get_cnx
    return _backend.get_cnx(self._connector, self._kwargs, timeout)
  File "build/bdist.linux-x86_64/egg/trac/db/pool.py", line 134, in get_cnx
    raise TimeoutError(errmsg)
TimeoutError: Unable to get database connection within 0 seconds. (OperationalError: (1045, "Access denied for user 'trac_user'@'localhost' (using password: YES)"))
EN

回答 1

Stack Overflow用户

发布于 2014-12-09 07:07:51

我从来没有让那些“热拷贝”指令起作用。它们似乎是在考虑sqlite而不是MySQL的情况下编写的。当我将Trac实例迁移到新服务器时,我必须执行以下操作才能使数据库正常工作:

代码语言:javascript
复制
# On old server
$ mysqldump -u admin -padmin_password trac >backup.sql

# On new server
$ mysql -u admin -padmin_password
mysql> CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
mysql> GRANT ALL ON trac.* TO trac_account@localhost IDENTIFIED BY 'topsecret';
mysql> exit
$ mysql -u admin -padmin_password trac <backup.sql

将"trac_account“和"topsecret”替换为Trac将使用的用户名和密码。在那之后,我能够让Trac启动并运行。本质上,忘记Trac的参与,把整个事情当作一个正常的数据库备份和恢复操作来对待。至于Trac的其余部分,我只是使用导入的数据库在新服务器上创建了一个新的Trac实例,然后根据需要从旧服务器复制文件(配置文件、附件、自定义模板等)。

注意:如果相关,我的旧安装和新安装对Trac使用相同的MySQL数据库凭据。如果您在移动过程中更改凭据,请使用YMMV。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26772913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档