2014-07-13 15:55:45
来 源
中存储网
MySQL备份
最近碰到一个应用,要求从WinCE连接MySQL数据库,并进行读写操作。因此,第一步,首先要在Windows下能够实现该功能。了解一下相关背景知识,知道可以利用MySQL提供的库函数实现该功能,并下载了一些例子。但是遇到以下问题:1. 需要libmysql.d

最近碰到一个应用,要求从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数据库也证实了这一点。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。