如何在CentOS上从C UDF连接到MySQL数据库

如何在CentOS上从C UDF连接到MySQL数据库,mysql,c,udf,shared-objects,Mysql,C,Udf,Shared Objects,我正在尝试从用C编写的UDF中连接到localhost上的MySQL数据库。 我创建了一个用户定义的函数,将其作为插件文件夹中的共享对象提供给MySQL DB,并使UDF可用: CREATE FUNCTION test_udf RETURNS INTEGER SONAME 'test_udf.so'; 这意味着我可以使用: SELECT test_udf(); 调用test_udf时,它应该连接到localhost上的数据库,从数据库中选择数据,处理数据,如果成功,则返回一个整数值 这在Ma

我正在尝试从用C编写的UDF中连接到localhost上的MySQL数据库。 我创建了一个用户定义的函数,将其作为插件文件夹中的共享对象提供给MySQL DB,并使UDF可用:

CREATE FUNCTION test_udf RETURNS INTEGER SONAME 'test_udf.so';
这意味着我可以使用:

SELECT test_udf();
调用test_udf时,它应该连接到localhost上的数据库,从数据库中选择数据,处理数据,如果成功,则返回一个整数值

这在MacOSX下工作得很好,但我没有机会在CentOS 7下工作。一旦UDF尝试连接到localhost上的DB,我就会收到错误:

无法连接到“localhost”上的MySQL服务器

当然,我对my.cnf进行了正确的设置,并注意防火墙设置

有人有主意吗?有人试过这样的东西吗

这段代码使用gcc在Mac和CentOS上完美地编译

gcc $(mysql_config —cflags —include —libs) -shared -fPIC -o test_udf.so test_udf.c

好的,我终于想出了如何让它工作

1在连接之前添加了mysql\u选项:

mysql\u选项&mysql,mysql\u读取\u默认\u组,客户端; 2从mysql\u查询改为mysql\u real\u查询

mysql\u real\u query&mysql,从new\u schema.new\u table中选择*34; 3将my.cnf设置为:

    [client]
    port=3306
    socket=/var/lib/mysql/mysql.sock

4在mysql_real_connect函数中使用127.0.0.1而不是localhost,否则配置的套接字将不会被使用。好的,我终于想出了如何让它工作的方法

1在连接之前添加了mysql\u选项:

mysql\u选项&mysql,mysql\u读取\u默认\u组,客户端; 2从mysql\u查询改为mysql\u real\u查询

mysql\u real\u query&mysql,从new\u schema.new\u table中选择*34; 3将my.cnf设置为:

    [client]
    port=3306
    socket=/var/lib/mysql/mysql.sock

4在mysql_real_connect函数中使用127.0.0.1而不是localhost,否则配置的套接字将不被使用

在Mac上用CentOS7创建本地漫游框并进行测试在Mac上用CentOS7创建本地漫游框并进行测试