最近碰到一个应用,要求从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版本太老:
网上提供两种解决方法:
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数据库也证实了这一点。
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。