首页
学习
活动
专区
圈层
工具
发布

c 连接mysql指定端口

在C语言中连接MySQL数据库并指定端口,通常需要使用MySQL提供的C API库,即libmysqlclient。以下是连接MySQL数据库并指定端口的基础概念、步骤和相关代码示例。

基础概念

  1. MySQL C API: 这是一组库函数,允许C语言程序与MySQL数据库进行交互。
  2. 端口: 数据库服务器监听的端口号,用于客户端与服务器之间的通信。

优势

  • 灵活性: 可以通过编程方式精确控制数据库操作。
  • 性能: 直接与数据库交互,减少了中间层的开销。
  • 兼容性: MySQL C API广泛支持多种操作系统和编译器。

类型

  • TCP/IP连接: 最常见的连接方式,通过网络进行通信。
  • Unix域套接字连接: 仅限于在同一台机器上的进程间通信。

应用场景

  • Web服务器后端: 处理HTTP请求并与数据库交互。
  • 命令行工具: 开发用于数据库管理的CLI工具。
  • 嵌入式系统: 在资源受限的环境中进行数据存储和管理。

连接步骤及代码示例

  1. 安装MySQL C API库: 确保系统上安装了libmysqlclient库。
  2. 包含头文件: 在C源文件中包含必要的头文件。
  3. 初始化连接: 使用mysql_init()函数初始化一个MySQL连接对象。
  4. 连接到数据库: 使用mysql_real_connect()函数连接到指定的数据库,并指定端口。
代码语言:txt
复制
#include <mysql.h>
#include <stdio.h>

int main() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    // 初始化MySQL连接对象
    conn = mysql_init(NULL);

    if (conn == NULL) {
        fprintf(stderr, "mysql_init() failed\n");
        return 1;
    }

    // 连接到MySQL服务器
    if (mysql_real_connect(conn, "hostname", "username", "password", "database_name", 3306, NULL, 0) == NULL) {
        fprintf(stderr, "%s\n", mysql_error(conn));
        mysql_close(conn);
        return 1;
    }

    // 执行查询
    if (mysql_query(conn, "SELECT * FROM table_name")) {
        fprintf(stderr, "%s\n", mysql_error(conn));
        mysql_close(conn);
        return 1;
    }

    res = mysql_use_result(conn);

    // 获取并打印结果
    while ((row = mysql_fetch_row(res)) != NULL)
        printf("%s\n", row[0]);

    // 清理
    mysql_free_result(res);
    mysql_close(conn);

    return 0;
}

常见问题及解决方法

  1. 连接失败: 检查主机名、用户名、密码和端口号是否正确。确保MySQL服务器正在运行并监听指定的端口。
  2. 权限问题: 确保用户具有访问数据库的权限。
  3. 网络问题: 检查防火墙设置,确保允许从客户端到数据库服务器的通信。

编译和运行

编译时需要链接MySQL库,例如使用gcc

代码语言:txt
复制
gcc -o my_program my_program.c -lmysqlclient

然后运行生成的可执行文件:

代码语言:txt
复制
./my_program

通过以上步骤,你可以在C语言中成功连接到MySQL数据库并指定端口进行操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iptables防火墙只允许指定ip连接指定端口、访问指定网站

这篇文章主要介绍了iptables防火墙只允许指定ip连接指定端口、访问指定网站,需要的朋友可以参考下 需要开80端口,指定IP和局域网 下面三行的意思: 先关闭所有的80端口 开启ip段192.168.1.0...sysconfig/iptables /var/tmp 2.然后保存iptables # service iptables save 3.重启防火墙 #service iptables restart 以下是端口...-A PREROUTING -p tcp --dport 21 -d $INTERNET_ADDR -j DNAT --to-destination 192.168.100.200:21 只允许访问指定网址...--dport 53 -j ACCEPT iptables -A Filter -p udp --dport 53 -j ACCEPT iptables -A Filter -j DROP 多个端口...22,53,80,110 -s 192.168.20.3 -j REJECT iptables -A Filter -p tcp --source-port 2:80 -s 192.168.20.3 -j REJECT 指定时间上网

19.4K20

指定端口-SSH连接的目标(告别 22 端口暴力破解)

✅ 优点(已做对的部分)维度说明攻击面缩小22 端口不再暴露,可过滤掉 99% 的自动化扫描与暴力破解。合规加分满足 CIS、等保 2.0 关于“修改默认端口”的基线要求。...-p 44907:指定 SSH 连接的目标端口为 44907(默认是 22)。root:以超级用户身份登录。@IP:目标服务器的 IP 地址或域名。...命令结构拆解部分含义说明ssh调用 SSH 客户端程序-p 44907指定远程主机的 SSH 端口为 44907(非默认端口)root登录用户名(root 是 Linux 的超级管理员)@IP远程主机的...p 44907 root@203.0.113.45执行过程详解输入命令后回车:ssh -p 44907 root@203.0.113.45首次连接会提示:The authenticity of host...系统会将该主机的公钥写入 ~/.ssh/known_hosts,下次连接不再提示。输入密码:root@203.0.113.45's password:输入 root 用户的密码(输入时不会显示字符)。

1.4K10
  • ubuntu开放指定端口

    今天在服务器上开启web服务让别人访问的时候遇到一些问题,在内网中别人使用ip加端口访问的时候一直访问不到,折腾了半天,发现原来使端口没开放 了解到一般linux中端口都是默认关闭的,需要开启的时候需要自己开启...开放端口 由于我的服务器使用的os是Ubuntu,所以这里就介绍一下Ubuntu下的方法,其他linux应该也是大同小异,需要自己去尝试 安装iptables 一般情况下,ubuntu安装好的时候,iptables...apt-get install iptables 添加规则 在终端输入 $ sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT 中间的80为所需要开放的端口...保存规则 在终端输入$ sudo iptables-save 完成上述命令我们就完成了开放指定的端口,但是如果此时服务器重启,上述规则就没有了,所以我们需要对规则进行一下持续化操作 持续化规则 这里我们需要在安装一下工具来帮我们实现...iptables-persistent 持久化规则 12 sudo netfilter-persistent save sudo netfilter-persistent reload 完成上述操作就可以永久打开我们需要的端口了

    14.2K21

    Zabbix 监控指定端口

    Zabbix 监控指定端口 2018年10月14日 14:46:50 肓己 阅读数 2006更多 分类专栏: 教程记录 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明...本文链接:https://blog.csdn.net/bacteriumX/article/details/83047122 前言 实现监控指定端口是否被监听效果,保证服务的正常运行。...2、 填入监控项名称,选择类型(注意默认类型是Zabbix 客户端,如果是主动监控的需要选择Zabbix 客户端主动式),选择键值,键值选择后填入需要监控的端口,可以起一个新的应用集Port listen...4、监控测试 浏览最新数据,可以看到该监控状态为1,即该端口在监听状态。 ? 停止该端口的服务后,出现告警: ? 服务再开启后,状态恢复: ? 至此,端口监控操作完成。

    4.1K20

    Zabbix 监控指定端口 原

    Zabbix 监控指定端口 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。...本文链接:https://blog.csdn.net/bacteriumX/article/details/83047122 前言 实现监控指定端口是否被监听效果,保证服务的正常运行。...2、 填入监控项名称,选择类型(注意默认类型是Zabbix 客户端,如果是主动监控的需要选择Zabbix 客户端主动式),选择键值,键值选择后填入需要监控的端口,可以起一个新的应用集Port listen...4、监控测试 浏览最新数据,可以看到该监控状态为1,即该端口在监听状态。 ? 停止该端口的服务后,出现告警: ? 服务再开启后,状态恢复: ?...至此,端口监控操作完成。 (adsbygoogle = window.adsbygoogle || []).push({});

    2.7K10

    SpringBoot指定端口的几种方式

    想法的来源 (1)其实我Linux用的贼烂,一开始的时候我搭建一个服务的时候我不清楚端口是否开放,比如我把阿里云的防火墙关闭了,但是我没有配置安全组,我任然不能通过某某端口访问。...(2)比如你学习nginx的时候,你需要做映射,如果你需要好几个服务,那我原来的操作是在IDEA写完SpringBoot打包然后放到Linux上,然后在修改端口,在打包在放在Linux上,贼麻烦 SpringBoot...指定端口的3种方式(亲测有效) @Value("${server.port}") private String port; @GetMapping("/hello") public...@Value("${server.port}")就会报错 java -jar springboot-demo-port-0.0.1-SNAPSHOT.jar --server.port=8081 此时端口为...appliaction.properties要有server.port=8080,如果没有@Value("${server.port}")就会报错 java - Dserver.port=8082 -jar xxx.jar 此时端口为

    1.2K10
    领券