資料分析系統DIY2/3:本地64位WIN7+DEV C++編譯器操作VMware CentOS7+MariaDB,diy2win7

來源:互聯網
上載者:User

資料分析系統DIY2/3:本地64位WIN7+DEV C++編譯器操作VMware CentOS7+MariaDB,diy2win7

資料分析系統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伺服器ipchar *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!




相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.