VC连接mysql遇到的问题
2011-09-29 18:04
471 查看
今天用MFC连接mysql数据库,发现老是连接不上,把代码贴在控制台程序下运行,又可以运行,很奇怪。后来我把异常打印出来:Client does not support authentication protocol requested by server; consider upgrading MySQL client。在网上查了下,说是mysql新旧版本的密码算法不同引起的,用下面两种方法可以解决:
1)MySQL->SET PASSWORD FOR 'some_user'@'some_host'=OLD_PASSWORD('new_password');
MySQL->FLUSH PRIVILEGES;
2)MySQL->UPDATE MySQL.user SET Password=OLD_PASSWORD('new_password') WHERE Host='some_host' AND User='some_user';
MySQL->FLUSH PRIVILEGES;
MySQL 4.1/5.0 是通过 PASSWORD 加密的。我想了下,可能是我下的libmsyql.dll动态链接库是别人的,而别人的版本和我现在的版本不同,所以出现上面的情况。
连接mysql的代码大概如下:
1)MySQL->SET PASSWORD FOR 'some_user'@'some_host'=OLD_PASSWORD('new_password');
MySQL->FLUSH PRIVILEGES;
2)MySQL->UPDATE MySQL.user SET Password=OLD_PASSWORD('new_password') WHERE Host='some_host' AND User='some_user';
MySQL->FLUSH PRIVILEGES;
MySQL 4.1/5.0 是通过 PASSWORD 加密的。我想了下,可能是我下的libmsyql.dll动态链接库是别人的,而别人的版本和我现在的版本不同,所以出现上面的情况。
连接mysql的代码大概如下:
unsigned short Port = 3306; CString IPAddress = "localhost"; CString UserName = "xxx"; CString Password = "123"; CString DBName = "mydb"; unsigned long i; MYSQL mysql; MYSQL_RES *res; MYSQL_ROW row; mysql_init(&mysql); CString error; if(&mysql == NULL) { error.Format("Error: %s\n ", mysql_error(&mysql)); AfxMessageBox(error); return ; } AfxMessageBox("MySQL mysql init OK. \n"); if(!mysql_real_connect(&mysql, IPAddress, UserName, Password, DBName, Port , NULL, 0)) { error.Format("Error: %s\n ", mysql_error(&mysql)); AfxMessageBox(error); return ; } AfxMessageBox("MySQL connnect OK. \n"); if(mysql_query(&mysql,"SELECT * FROM user")) { error.Format("Error: %s\n ", mysql_error(&mysql)); AfxMessageBox(error); } if( !(res = mysql_store_result(&mysql)) ) { error.Format("Error: %s\n ", mysql_error(&mysql)); AfxMessageBox(error); } while( (row = mysql_fetch_row(res)) ) { for(i=0 ; i<mysql_num_fields(res); i++) { CString s = row[i]; AfxMessageBox(s); } } mysql_free_result(res); if(mysql_query( &mysql,"insert into user SET name=\aabbcc\'")) { error.Format("Error: %s\n ", mysql_error(&mysql)); AfxMessageBox(error); } mysql_close(&mysql);
相关文章推荐
- php的mysql_connect连接遇到的2006问题
- 掌游 新项目:我采用NH连接MySql所遇到的问题
- 本地连接 MySQL你未曾遇到过的细节问题
- MySQL开发遇到常见问题 连接数据库错误、无法插入值 中文乱码 ??
- Java连接mysql中遇到的一些问题及解决方法
- 解决Python2.7 连接MySQL数据库遇到'can't connect to MySQL server on 'localhost'(10061)'问题
- 应用访问Mysql遇到的连接问题
- VS2015连接mysql遇到的几个问题
- Java连接mysql中遇到的一些问题及解决方法
- 阿里云服务器linux环境,从启动tomcat服务器外网访问--->绑定域名--->Navicat远程连接mysql--->阿里云服务器部署项目过程中,一定会遇到的五大问题;
- Hibernate连接MySql遇到的几个问题
- 使用BDC连接MySql可能遇到的问题
- 【R】CentOS7下Rstudio实践RMySQL及遇到的问题 三(连接mysql)
- C++与mysql连接遇到的问题汇总
- VS2012 使用MySql的API函数连接数据库(成功), 以及使用mysql-connector-c++-1.1.3遇到的问题!
- Java连接mysql中遇到的一些问题及解决方法
- 使用BDC连接MySql可能遇到的问题
- mysql 短连接压测遇到的问题及查找解决思路[终于找到原因了]
- R语言连接MySQL遇到的一个问题:ERROR: configuration failed for package 'RMySQL'
- 记录一次spark连接mysql遇到的问题