配置 mysql 以在 ejabberd 中连接

Configure mysql to connect in ejabberd

我正在使用 ejabberd 15.09 和 mysql 14.14,我正在更改 ejabberd.yml 以连接 mysql,为此:

-旧配置:

auth_method:内部

mod_last mod_offline mod_roster mod_vcard mod_privacy mod_private mod_pubsub

%%打开:odbc_pool_size:20 %%打开: odbc_keepalive_interval: 30

-新配置:

auth_method: odbc

odbc_type: mysql odbc_server: "localhost" odbc_database: "ejabberd" odbc_username: "root" odbc_password: "xxx"

mod_last_odbc mod_offline_odbc mod_roster_odbc mod_vcard_odbc mod_privacy_odbc mod_private_odbc mod_pubsub_odbc

odbc_pool_size: 20 odbc_keepalive_interval: 30

然后我用mysql创建数据库"ejabberd": mysql> 创建数据库 ejabberd;

重启服务器时,出现如下错误: 2015-10-30 16:28:52.399 [error] <0.3145.0>@ejabberd_odbc:log:666 p1_mysql_conn: 更改数据库失败 "ejabberd": "#42000Unknown database 'ejabberd'” 2015-10-30 16:28:52.399 [错误] <0.386.0>@ejabberd_odbc:log:666 p1_mysql_conn: post_start 错误 failed_changing_database 2015-10-30 16:28:52.399 [信息] <0.386.0>@ejabberd_odbc:connecting:270 mysql 连接失败: ** 原因:failed_changing_database

如何解决?

首先你需要编译带有 MySQL 支持的 ejabberd:

./configure --enable-odbc --enable-mysql

如果要连接 mysql,则需要使用提供的脚本创建表

mysql < /path/to/mysql.sql

评论您的 internal 身份验证方法 (auth_method) 并添加 ODBC 身份验证方法。

# auth_method: internal ## Commented this line
auth_method: ODBC ## Added this line

现在您需要连接到 MySQL

odbc_type: mysql
odbc_server: "localhost"
odbc_port: 3306 # the default
odbc_database: "mydb"
odbc_username: "user1"
odbc_password: "userpassword"
odbc_pool_size: 5

您可以阅读选项 here 的说明。

_odbc 添加到您希望使用 mysql 数据库的模块中

mod_offline_odbc instead of mod_offline

如果您看到 的错误,请从该模块中删除 _odbc

现在重新启动服务器。