利用vc远程连接mysql一例

最近碰到一个应用,要求从WinCE连接MySQL数据库,并进行读写操作。因此,第一步,首先要在Windows下能够实现该功能。了解一下相关背景知识,知道可以利用MySQL提供的库函数实现该功能,并下载了一些例子。但是遇到以下问题:

1. 需要libmysql.dll文件;这个一般的例子上有,没有可以下载一个;

2. 下载了一个例子MySample,从客户端远程连接,总是连接不上,出现以下错误:

a). 第一次提示错误代码是10086。我的MySQL 5.0*数据库安装在虚拟机上,从本机查看系统已经建立如下用户:

#mysql –u root –p

mysql> CREATE DATABASE test;

mysql> GRANT ALL ON test.* TO admin@’10.10.10.1’ IDENTIFIED BY 'PASSWORD';

mysql> use mysql;

mysql> select user,host from user;

mysql> select db,host, user from db;

上面是创建一个新的数据库用户admin,可以对test数据库从远程IP,即10.10.10.1上登录;

  • 如何给以存在的数据库授权?
    如果用户 webadmin 经常在客户端地址202.54.10.20 访问 webd数据库,那么在服务器端执行的命令应该为(改表法):
    mysql> update db set Host='202.54.10.20' where Db='webdb';
    mysql> update user set Host='202.54.10.20' where user='webadmin';

b)按照http://hepeng1688.javaeye.com/blog/50716上的方法,修改/etc/mysql/my.cnf文件,将其中的bind-address = 127.0.0.1改为虚拟机的IP地址:10.10.10.130

#/etc/init.d/mysqld restart            //重启一下mysql服务

再次通过客户端连接,出现错误编号1251,大意是说mysql客户端太老,不支持服务器的认证协议,需要升级,应该是我下载的sample中带的libmysql.dll版本太老:

image

网上提供两种解决方法:

1.下载与mysql 版本相对应的libmysql.dll文件;

2. 在服务器端做如下修改:

mysql> SET PASSWORD FOR ‘username’@' hostname’ = OLD_PASSWORD(‘newPassword’);

或者:

mysql> UPDATE mysql.user set PASSWORD=OLD_PASSWORD(‘newpassword’) where host=’hostname’ AND user=’username’;

mysql> FLUSH PRIVILEGES;

从上面解决方案来看,应该是新版本的mysql对其密码的存储方式发生了改变。通过查看user数据库也证实了这一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值