MySQL在VC中使用时出现的问题

(1)    出现以下DEBUG信息时:

TestNewSql.obj : error LNK2001: unresolved external symbol _mysql_close@4

TestNewSql.obj : error LNK2001: unresolved external symbol _mysql_select_db@8

TestNewSql.obj : error LNK2001: unresolved external symbol _mysql_real_connect@32

TestNewSql.obj : error LNK2001: unresolved external symbol _mysql_init@4

解决方法:

VC工程中project>setting>link>object/library modules中添加:

libmysql.lib,然后编译就可以通过了

(2)    如果是在其他文件中引用的,在tools >options >directories>show directories for :include files对应的项目中包含这些头文件。

(3)    编译通过后,在运行时弹出对话框找不到libmysql.dll文件,在所安装的mysql目录下的lib/debug目录下可以找到该文件。将其复制到编译好的release/debug目录下即可。或是通过“控制面板”—>“系统” >“高级”—>“环境变量”—>“系统变量”—>paht”中添加D:/mysql/lib/debug。注:d:/mysql为笔者安装的mysql目录。

(4)    如果出现以下编译问题

error C2146: syntax error : missing ';' before identifier 'fd'

这是mysql_com.h中出现的问题。如果将这句声明注释掉,下面会出现这个编译问题:

error C2065: 'SOCKET' : undeclared identifier

可以将int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen,unsigned int timeout);该函数注释掉。

则编译可以通过。

出现的原因分析:在用VC向导生成文档/视图时,在第四步中应该选择windows sockets。不然编译时就会出现上述问题。

最好的解决方式是在stdafx.h文件中添加#include <afxsock.h>,即可解决上述问题。

(5)    如果连接数据库时,出现不能连接的情况时,则应该将所在网络断开。出现问题的原因同上。

如果是数据库连接错误的话,则因为在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);

对于passwd应该设置为NULL。对于user可以随意设置。

原因暂时不清楚。

上述情况下只能对用户使用“root”和,就可以连接数据库了。

a.      如果以其他用户的身份,则需要添加相应的用户和密码。

步骤一:在命令行方式下运行MYSQL

格式: mysql -h主机地址 -u用户名 p用户密码

例如:连接到本机上的MYSQL

首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>

2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

mysql -h110.110.110.110 -uroot -pabcd123

步骤二:增加新用户

格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"

1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:

grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";

但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2

2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。

grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值