`

mysql_real_connect()连接远程数据库

 
阅读更多

关于如何用mysql_real_connect()连接远程数据库

mysql_real_connect()试图建立到运行host的一个MySQL数据库引擎的一个连接。其函数原形为:

   MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd,

const char *db, unsigned int port, const char *unix_socket, unsigned int client_flag)    

   我要编一段程序用来远程连接一个mysql数据库。我在数据库的本机上做试验,发现mysql_real_connect()的第二个参数设为"localhost"时可以正常连接,当改写为该机器的IP地址"192.168.100.2"时就连接失败。我在程序中写的原句为:
mysql_real_connect(mysql,"192.168.100.2","root","","mydns",0,NULL,0)。


 
   最初,我以为将"localhost"改为"192.168.100.2"之后要将第六个参数端口号写上,但还是不行。由于我是在Linux上做的,所以想也许需要将第七个参数unix_socket写上,结果还是不行。于是到google找解决方法,发现要远程连接mysql需要为mysql的指定帐号设置远程连接的权限。在我的程序中,就要为root设置这一权限。事实证明,我之前连接失败正是由于这个原因导致的。但问题是,网上被广泛转贴的方法是错误的,我照做后还不行,最后问了同学才解决的。下面我具体说一下,望大家不会再被误导。
 
   在mysql数据库中有一个mysql库,它里面包含一个user表,里面存有所有帐号及它们的权限及特征。对应我的user表中找到User项为root的,发现有两项,其Host项分别为localhost和localhost.localdomain。我们只需要把'localhost'改为'%'就可以让所有远程机器以root帐号登陆mysql服务器。也可以将'localhost'改为某一个ip地址,这样就可以在该地址的机器上登陆mysql服务器。这些都没有问题,只是网上被广为传颂的一个更改Host项的方法是错误的。他的方法是用update语句将指定User项的Host项改过来,如果想添加一个新的用于远程访问的帐号,就用insert语句添加。事实是这根本不行,我按照作了,表是变了,但还是连不上。后来经过询问才知道,要想改,结合我的情况,必须用下面的这条语句:
     grant all privileges on mydns.* to 'root'@'%'
来改变root帐号的权限。如果添加新帐号也是如此。想必这个表比较特殊,用普通的SQL语句不能操作。如果帐号有密码,后面再加上identified by '***'(*为你帐号的密码)就可以了。
 
   为了解决这个问题用了一下午的时间,费了不少周折,写出来也能让大家少走些弯路。


MYSQL *  STDCALL mysql_real_connect(MYSQL *mysql,  //
const char *host, //连接主机
        const char *user, //数据库用户
        const char *passwd, //数据库密码
        const char *db, //数据库
        unsigned int port,//端口
        const char *unix_socket,
        unsigned int clientflag);

VC一可用的当写汉字到mysql 表里时就看到乱码, 要设字符编码.
mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gb2312"); //设字符编码
mysql_query(myData,"set names 'gbk'"); 设字符编码
分享到:
评论

相关推荐

    VC++通过API连接MySQL数据库

    本文将深入探讨如何实现这一过程,包括安装MySQL服务器、配置环境变量、创建数据库、允许远程访问以及编写C++代码来建立连接和执行SQL查询。 1. **安装MySQL数据库服务器** 首先,你需要下载并安装MySQL服务器。...

    一个基于libmysql的MySQL数据库连接池.pdf

    - 连接数据库时,首先调用 `mysql_init()` 创建 `MYSQL` 句柄,然后使用 `mysql_real_connect()` 建立实际连接。如果服务器与数据库不在同一主机,可能需要配置 MySQL 用户的远程访问权限。 - 连接释放通常涉及 `...

    一个基于libmysql的MySQL数据库连接池.docx

    第一层直接操作数据库,使用libmysql提供的库函数,如`mysql_real_connect()`来建立与MySQL数据库的连接。第二层则根据业务需求,封装成多个子模块,提供给其他系统组件与数据库交互的接口。这样做可以提高数据安全...

    C语言mysql基本函数.doc

    在 C 语言中,连接 MySQL 数据库需要使用 `mysql_init` 函数初始化一个连接句柄,然后使用 `mysql_real_connect` 函数设置连接参数并连接到 MySQL 服务器。 1. 初始化连接句柄 `MYSQL *mysql_init(MYSQL *);` ...

    使用VC++访问MYSQL

    2. `mysql_real_connect()`:建立到 MySQL 服务器的连接,需要提供服务器地址、用户名、密码和数据库名等参数。 3. `mysql_query()`:执行 SQL 查询语句。 4. `mysql_store_result()`:如果查询返回结果集,该函数...

    MySQL数据库的安装调试和VC实现

    2. **编写代码**:包含必要的头文件(如`#include <mysql.h>`),初始化MySQL连接对象,设置连接参数(如主机名、用户名、密码和数据库名),然后使用`mysql_real_connect()`函数建立连接。 3. **执行SQL**:通过`...

    一个mysql的vc远程查询程序

    接着通过`mysql_real_connect`函数尝试建立到指定MySQL服务器的连接,并检查返回结果来判断连接是否成功。 ### 6. 字符集设置 为了正确处理中文字符,程序中还使用了`mysql_set_character_set`函数将连接的字符集...

    libmysql 5.0

    《Delphi7连接远程MySQL数据库——libmysql 5.0详解》 在IT行业中,数据库管理系统(DBMS)是至关重要的组成部分,而MySQL作为一款开源、免费的关系型数据库管理系统,深受开发者喜爱。对于使用Delphi7进行开发的...

    include mysql库文件

    - 通过`mysql_real_connect()`函数建立实际的连接,需要提供服务器地址、用户名、密码、数据库名等参数。 5. **执行SQL查询**: - 准备SQL语句,例如`char *sql = "SELECT * FROM table_name";` - 使用`mysql_...

    MySQL中文参考手册

    + 4.12.5 用 SSH 从 Win32 连接一个远程MySQL + 4.12.6 MySQL-Win32与Unix MySQL 比较 o 4.13 OS/2 注意事项 o 4.14 TcX 二进制代码 o 4.15 安装后期(post-installation)的设置与测试 + 4.15.1 运行mysql_...

    MYSQL

    4.12.1 在 Win32 上安装 MySQL 4.12.2 在 Win95 /Win98上启动 MySQL 4.12.3 在 NT 上启动 MySQL 4.12.4 在 Win32 上运行 MySQL 4.12.5 用 SSH 从 Win32 连接一个远程MySQL 4.12.6 MySQL-Win...

    MySQL中文参考手册.chm

    Win32 上安装 MySQL 4.12.2 在 Win95 /Win98上启动 MySQL 4.12.3 在 NT 上启动 MySQL 4.12.4 在 Win32 上运行 MySQL 4.12.5 用 SSH 从 Win32 连接一个远程MySQL 4.12.6 MySQL-Win32与Unix ...

    iOS开发Mysql操作的库,libmysqlclient.a

    5. **代码示例**:使用libmysqlclient进行数据库操作的基本流程通常包括初始化连接(`mysql_init()`),连接服务器(`mysql_real_connect()`),执行查询(`mysql_query()`),获取结果(`mysql_store_result()`或`...

    mysql数据库my.cnf配置文件

    # 则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求 #skip-networking back_log = 600 # MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用, # ...

    iphone_mysql.zip_objective c mysql

    熟悉MySQL的库函数,如`mysql_real_connect()`、`mysql_query()`等,用于执行SQL命令。 5. **SSL/TLS安全连接**:为了确保数据安全,连接到MySQL服务器通常需要使用SSL/TLS加密。Objective-C中可以使用`...

    mysql框架vc++

    例如,可以使用`mysql_init()`初始化一个连接结构,`mysql_real_connect()`建立连接,`mysql_query()`执行SQL语句,`mysql_store_result()`获取查询结果,以及`mysql_free_result()`释放结果集等。 而MySQL ...

    mysql-connector-c-6.1.6-win32

    为了在C/C++程序中使用MySQL Connector/C,开发者需要包含相应的头文件,链接所需的库,并使用提供的API函数,例如`mysql_real_connect()`来建立连接,`mysql_query()`来执行SQL查询,`mysql_store_result()`来获取...

    远程服务器云服务器1

    mysql_real_connect(conn, host, user, password, db, port, socket, 0); mysql_set_character_set(conn, "utf8"); // 或者 "utf8mb4" 对于更广泛的Unicode支持 ``` 在处理远程服务器上的MySQL数据库时,确保字符...

Global site tag (gtag.js) - Google Analytics