关于如何用mysql_real_connect()连接远程数据库
发布网友
发布时间:2022-04-13 03:05
我来回答
共1个回答
热心网友
时间:2022-04-13 04:34
其函数原形为:
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_real_connect()连接远程数据库
我要编一段程序用来远程连接一个mysql数据库。我在数据库的本机上做试验,发现mysql_real_connect()的第二个参数设为"localhost"时可以正常连接,当改写为该机器的IP地址"192.168.100.2"时就连接失败。我在程序中写的原句为:mysql_real_connect(mysql,"192.168.100.2","root","","mydns",0...
vlookup 跨表匹配
VLOOKUP 是 Excel 中一个非常实用的函数,它允许用户在一个区域或表格的首列中查找特定值,并返回同一行中指定列中的值。当进行跨表匹配时,你可以使用 VLOOKUP 函数将两个不同表格中的数据关联起来。通过指定查找值、表格数组、列号和范围查找或精确查找等参数,VLOOKUP 可以实现跨表的数据检索,极大地提高了数据处理效率。这在数据分析和整理过程中非常有用,尤其是当需要在多个表格之间建立关联时。仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击35步自动完成表格匹配,无需手写公式,免费使用!
mysql_real_connect函数说明
在调用mysql_real_connect()之前,不要尝试加密密码,因为客户端API会自动处理密码加密。"db"参数应包含数据库名称。如果为NULL,则将默认数据库设为此值。如果"port"不是0,则其值用于TCP/IP连接的端口号。"unix_socket"参数用于指定应使用的套接字或命名管道。"client_flag"值通常为0,但也允许将...
c语言如何调用Mysql数据库文件并进行对数据库的操作呢。
mysql_real_connect(&m_sqlCon, "127.0.0.1", abc, "root", "hibernate", atoi("3306"),NULL,0)//链接 mysql_query(&m_sqlCon, "SET NAMES GB2312"); //设置查询编码格式 res = mysql_query(&m_sqlCon,"select * from ms_sendlist where flag = 1 order by style desc");//...
mysql_real_connect的函数说明
mysql_real_connect()尝试与运行在主机上的MySQL数据库引擎建立连接。在你能够执行需要有效MySQL连接句柄结构的任何其他API函数之前,mysql_real_connect()必须成功完成。参数的指定方式如下:第1个参数应是已有MYSQL结构的地址。调用mysql_real_connect()之前,必须调用mysql_init()来初始化MYSQL结构。通过mys...
VC++用mysql_real_connect()函数怎么连接不上mysql数据库!!!非常纠结...
if(!mysql_real_connect(&mysql,"127.0.0.1","root","1234","mydb",3306,NULL,0))AfxMessageBox(mysql_error(&mysql));你这样看看返回的错误是什么,只有知道错误才能对症下药!
C语言用odbc连接数据库的问题
mysql_close(mysql); } 简介 C APIs包含在mysqlclient库文件当中与MySQL的源代码一块发行,用于连接到数据库和执行数据库查询。有一些例子在MySQL原代码的clients目录里。 MySQL C 变量类型 以下变量类型在MySQL的库当中定义。我们需要这些变量是为了使用MySQL的函数。这些变量有详细的解释,但是这些解释对于写代码来...
C语言编程MySQL中新建表的操作步骤cmysql新建表
步骤1:连接MySQL数据库 在C语言中,我们可以使用mysql_init()函数来初始化一个MYSQL结构体,然后使用mysql_real_connect()函数连接数据库。这里假设我们的MySQL数据库运行在本地主机上,用户名为root,密码为123456,数据库名为test。MYSQL *conn_ptr; // 定义连接数据库用的指针 MYSQL_RES *res_ptr...
mysql_real_connect的范例
include<stdio.h>#include<mysql.h>int main(){MYSQL mysql;mysql_init(&mysql);if(!mysql_real_connect(&mysql,host,user,passwd,database,0,NULL,0)){fprintf(stderr,Failedtoconnecttodatabase:Error:%s\n,mysql_error(&mysql));}mysql_close(&mysql);return 0;} ...
代码管理MySQLC语言快速操纵MySQL一行代码搞定cmysql一行
连接MySQL数据库是使用C语言操作MySQL数据库的第一步。连接MySQL数据库可以使用mysql_real_connect()函数,该函数将建立一个到MySQL数据库的连接,并返回一个MYSQL结构。要使用此函数,需要提供以下参数:• MySQL结构指针 – 它用于保存连接的结果以供后续使用。• 服务器名称或IP地址 ...
c语言操作MySQL数据库的基本步骤指南c使用mysql步骤
unix_socket:连接到MySQL服务器使用的Unix套接字。clientflag:客户端属性。下面是连接MySQL数据库的示例代码:MYSQL *conn_ptr;//连接MySQL数据库 conn_ptr = mysql_real_connect(conn_ptr, “localhost”, “root”, “password”, “test”, 3306...