Heim  >  Artikel  >  Datenbank  >  数据分析系统DIY2/3:本地64位WIN7+DEVC++编译程序操作VMwareCen

数据分析系统DIY2/3:本地64位WIN7+DEVC++编译程序操作VMwareCen

WBOY
WBOYOriginal
2016-06-07 16:06:211355Durchsuche

数据分析系统DIY中要完成的三个任务。 一、用VMware装64位CentOS,数据库服务端用CentOS自带的就好。 二、数据采集与预处理用Dev-C++编程解决。 三、用本地Win7 64上的MATLAB R2012b连接数据库进行挖掘分析。 本文是完成第二个任务的过程。 1.Terminal中输入

数据分析系统DIY中要完成的三个任务。

一、用VMware装64位CentOS,数据库服务端用CentOS自带的就好。

二、数据采集与预处理用Dev-C++编程解决。

三、用本地Win7 64上的MATLAB R2012b连接数据库进行挖掘分析。

本文是完成第二个任务的过程。

1.Terminal中输入命令行“ifconfig”确认CentOS虚拟机ip:192.168.124.128

2.输入命令行“netstat -anp|grep mysqld”确认mariadb服务监听端口:3306

3.Win7本地安装使用HeidiSQL测试能否连接(HediSQL是windows版mariadb自带的图形界面管理软件,安装mariadb时可以选择安装)

打开HeidiSQL后会话设置如图

\

点击“打开”后报连接失败

4.推测原因可能是mariadb远程访问权限未开

Terminal登录mariadb”mysql -u root -p“,输入密码登录

mariadb提示符后输入赋权语句”GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '登录密码' WITH GRANT OPTION;“

随后刷新”flush privileges;“

回到win7中的HeidiSQL上继续测试,依然失败。

5.推测原因可能是centos7自带的防火墙

命令行”startx“进入GUI后设置Applications-Sundry-Firewall

\

在配置页面默认的zone-public选择Ports页,单击Add按钮,输入mariadb端口3306后确认。效果如图。

\

6.回到win7中的HeidiSQL上测试,连接成功!

7.但是重启centos后却发现HeideSQL又连不上服务器了。

进入Applications-Sundry-Firewall-Ports检查设置,发现之前第5步中3306端口的开放规则居然消失了。

原来刚才设置的那个只是临时规则,重载firewall后该规则就失效了。

要想设置永久规则,Configuration处得先设为Permanent。如下图:

\

再次打开Ports页,单击Add按钮,输入端口号3306后确认。

这回不管重启几次centos都可以顺利远程登录了。

/*接下来该DEV C++了,没想到这一步居然这么难,用了将近8个小时才搞定。*/

8.首先需要下载mysql的devpak,devpaks.org 不知何故被墙,dev c++无法更新。只好使用goagent通过浏览器访问,最终找到了下载地址。

9.下载后通过dev c++的“工具-Package Manager-Install”安装“MySQL-6.1.5-1aved.DevPak”

\

10.安装成功后,进入dev c++的“工具-编译选项”

a.编译器页中的连接器加入命令“-lmysql”

\

b.目录页-c包含文件页/c++包含文件页添加mysql包路径“dev-cpp安装目录\include\MySQL”

\\

11.将“dev-cpp安装目录\lib“中的”libmysql.dll“拷入"C:\Windows\SysWOW64",否则编译时系统会报错。

\

如果还报错,那就拷到"C:\Windows\system32"

12.编译例程

#include <mysql.h>
#include <stdlib.h>
#include <stdio.h>

int main(int nArguments, char *pszArguments[])
{
	 MYSQL *conn;
	 MYSQL_RES *res;
	 MYSQL_ROW row;
	char *server = "192.168.124.128";//第一步中确认的centos服务器ip
	char *user = "root";
	char *password = "123456"; /* 此处改成你的密码 */
	char *database = "mysql";
	conn = mysql_init(NULL);
	/* Connect to database */
	if (!mysql_real_connect(conn, server,
			user, password, database, 0, NULL, 0)) {
		fprintf(stderr, "%s\n", mysql_error(conn));
	}
	/* send SQL query */
	if (mysql_query(conn, "show tables")) {
		fprintf(stderr, "%s\n", mysql_error(conn));
	}
	res = mysql_use_result(conn);
	/* output table name */
	printf("MySQL Tables in %s database:\n",database);
	while ((row = mysql_fetch_row(res)) != NULL) printf("%s \n", row[0]);
	/* close connection */
	mysql_free_result(res);
	mysql_close(conn);
	//system("PAUSE");
	return 0;
}
运行结果如图:

\

任务二,mission accomplished!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:rmanNächster Artikel:【RMAN】使用RMAN增量备份刷新StandbyDatabase