找回密码
 立即注册
查看: 6381|回复: 65

[网络] Unity3D 连接MySql数据库

[复制链接]
发表于 2012-12-15 19:34 | 显示全部楼层 |阅读模式

一.在Mac OS X中架设MySql数据库

下载mysql for Mac http://dev.mysql.com/downloads/mysql/5.0.html

可以在Mac OS X 10.2.x(“Jaguar”)和以上版本上Mac OS X使用二进制安装软件包的PKG格式代替二进制分发版来安装MySQL。请注意该软件包不支持旧版本的Mac OS X(例如,10.1.x)。

安装软件包位于硬盘映象(.dmg)文件中,必须首先双击搜索起中的图标来安装该文件。应当安装图像并显示其内容。

注释:在继续安装前,一定要使用MySQL管理器应用程序(在Mac OS X服务器上)或通过命令行的mysqladmin shutdown关闭所有运行MySQL服务器实例。

要想安装MySQL PKG文件,双击软件包图标。将启动Mac OS X安装软件包安装器,将指导你完成MySQL安装。

Mac OS X安装软件包的安装器中有一个缺陷,你会在目标盘选择对话框中发现该错误消息:

You cannot install this software on this disk. (null)

如果出现该错误,只需要点击Go Back按钮返回前面的窗口。然后点击Continue再次选择目标盘,此时应当可以正确地选择目标盘。我们已经向Apple报告了该缺陷,它正在调查该问题。

MySQL的Mac OS X PKG安装到/usr/local/mysql-VERSION,并且还会安装一个符号连接,/usr/local/mysql,指向新的位置。如果有 /usr/local/mysql目录,首先将它改名为/usr/local/mysql.bak。安装完后,安装器执行 mysql_install_db在MySQL数据库中创建授权表。

安装布局与tar文件二进制分发版类似;所有MySQL二进制代码位于目录/usr/local/mysql/bin中。默认情况,MySQL套接字文件创建为/tmp/mysql.sock

MySQL安装需要Mac OS X的mysql用户账户。在Mac OS X 10.2及以上版本中,默认情况应存在mysql用户账户。

如果正运行Mac OS X服务器,需要安装MySQL。随Mac OS X服务器版本安装的MySQL版本如下表所示:

Mac OS X服务器版本  MySQL版本
10.2-10.2.2         3.23.51
10.2.3-10.2.6       3.23.53
10.3                4.0.14
10.3.2              4.0.16
10.4.0              4.1.10a

节只覆盖官方MySQL Mac OS X PKG版本。一定要阅读Apple关于MySQL安装的帮助信息:运行“帮助视图”应用程序,选择“Mac OS X服务器”帮助,搜索“MySQL”,阅读标题为“安装MySQL”的内容。

对于Mac OS X服务器上已经安装的MySQL版本,如果早于4.0,应特别注意应当使用mysqld_safe而不是safe_mysqld来启动mysqld。

如果你前面在Mac OS X上安装了从http://www.entropy.ch下载的Marc Liyanage的MySQL软件包,你可以只使用该页给出的二进制安装布局按照更新说明来安装。

如果你从Marc的3.23.xx 版本或从Mac OS X的MySQL服务器版本升级到官方MySQL PKG,你还需要将已有MySQL授权表转换为当前格式,因为已经加了许多新的安全权限。

如果你想在系统启动过程中自动启动MySQL,你还需要安装MySQL Startup Item。在MySQL 5.1中,它是Mac OS X安装盘映像的一部分,是一个独立的安装软件包。只需要双击MySQLStartupItem.图标并按照说明来安装。

请注意Startup Item只需要安装一次!不需要在以后每次升级MySQL软件包时都安装它。

MySQL 5.1的Startup Item安装在/Library/StartupItems/MySQLCOM。(在MySQL 4.1.2以前的版本,安装位置为/Library/StartupItems/MySQL,但与Mac OS X服务器安装的MySQL Startup Item冲突)。Startup Item安装时在系统配置文件/etc/hostconfig中加入变量MySQLCOM=-YES-。如果你想要disable自动启动MySQL,只需要将该变量更改为MySQLCOM=-NO-。

在Mac OS X服务器上,默认MySQL安装使用/etc/hostconfig文件中的变量MySQL。MySQL AB Startup Item安装器将其设置为MySQL=-NO-禁用该变量。这样可以避免启动时间与MySQL AB Startup Item使用的MySQLCOM变量冲突。但是,不会关闭运行的MySQL服务器。你应当自己关闭。

安装完后,可以在终端窗口运行下面的命令来启动MySQL。你必须具有管理员权限来执行该任务。

如果你已经安装的Startup Item:

shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start

(Enter your password, if necessary)

(Press Control-D or enter "exit" to exit the shell)

如果不使用Startup Item,输入下面的命令序列:

shell> cd /usr/local/mysql

shell> sudo ./bin/mysqld_safe

(Enter your password, if necessary)

(Press Control-Z)

shell> bg

(Press Control-D or enter "exit" to exit the shell)

你应当能够连接MySQL服务器,例如,通过运行/usr/local/mysql/bin/mysql来连接。

注释:MySQL授权表中的账户开始没有密码。启动服务器后,应当按照2.9节,“安装后的设置和测试”中的说明来设置密码。

你可以为外壳源文件起一个别名,使它更容易访问常用的程序,例如从命令行运行mysql和mysqladmin。tcsh语法为:

aliasMySQL /usr/local/mysql/bin/mysql
aliasMySQLadmin /usr/local/mysql/bin/mysqladmin

对于bash,使用:

aliasMySQL=/usr/local/mysql/bin/mysqlaliasMySQLadmin=/usr/local/mysql/bin/mysqladmin

最好是在PATH环境变量中加入/usr/local/mysql/bin。例如,如果外壳命令是tcsh,在$HOME/.tcshrc文件中加入下面一行:

setenv PATH ${PATH}:/usr/local/mysql/bin

如果根目录中没有.tcshrc文件,则用文本编辑器创建该文件。

如果你对已有的安装进行升级,请注意安装新MySQL PKG时不会卸载旧的安装目录。遗憾的是,Mac OS X安装器尚未提供功能来正确升级前面安装的软件包。

要想在新安装中使用已有的数据库,你需要将旧数据目录中的内容复制到新的数据目录。执行该操作时,确保关闭新、旧服务器。将以前安装的MySQL数据库文件拷贝过来并成功启动新的服务器后,应当卸载旧的文件以节省硬盘空间。并且,还应当卸掉位于/Library/Receipts/mysql-VERSION.pkg的旧版本Package Receipt目录。

二、MySql管理工具

下载 http://dev.mysql.com/downloads/gui-tools/5.0.html

MySql默认只有用户root并只能在本地登录,使用root登录后,添加其他的用户。

用户root用户登陆
添加一个本地用户,名为username密码为password
GRANT ALL PRIVILEGES ON *.* TO username@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;

添加一个远程用户,名为username密码为password
GRANT ALL PRIVILEGES ON *.* TO username@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;

添加完用户后要重新启动mysql服务


三、MySql Connector/Net 1.0

http://dev.mysql.com/downloads/connector/net/1.0.html

注意:高版本不能使用;

下载Binaries,no installer版本,解压后在bin文件夹中有MySql.data.dll文件。将此文件拷贝至Assets文件夹下,可以放在任意目录下。然后可在C#的脚本中使用using MySql.Data.MySqlClient;

生成的工程需要将此DLL放置在同级目录下。并可在windows下正常使用;
四、代码
  
[code=csharp]using UnityEngine;
using System;
using System.Collections;
using System.Data;
using MySql.Data.MySqlClient;

public class CMySql : MonoBehaviour {
    // Global variables
    private static MySqlConnection dbConnection;
  
     static string host = "192.168.1.100";
     static string id = "mysql";
     static string pwd = "123456";
      
     static string result = "";
      
     void OnGUI()
     {
         host = GUILayout.TextField( host, 200, GUILayout.Width(200));
         id = GUILayout.TextField( id, 200, GUILayout.Width(200));
         pwd = GUILayout.TextField( pwd, 200, GUILayout.Width(200));
         if(GUILayout.Button("Test"))
         {
             string connectionString = "Server="+host+";Database=test;User ID="+id+";Password="+pwd+";Pooling=false";
             openSqlConnection( connectionString );
         }
         GUILayout.Label(result);
     }  

    // On quit
    public static void OnApplicationQuit() {
        closeSqlConnection();
    }
   
    // Connect to database
    private static void openSqlConnection(string connectionString) {
        dbConnection = new MySqlConnection(connectionString);
        dbConnection.Open();
        result = dbConnection.ServerVersion;
        Debug.Log("Connected to database."+result);
    }
   
    // Disconnect from database
    private static void closeSqlConnection() {
        dbConnection.Close();
        dbConnection = null;
        //Debug.Log("Disconnected from database."+result);
    }

    // MySQL Query
    public static void doQuery(string sqlQuery) {
        IDbCommand dbCommand = dbConnection.CreateCommand();
        dbCommand.CommandText = sqlQuery;
        IDataReader reader = dbCommand.ExecuteReader();
        reader.Close();
        reader = null;
        dbCommand.Dispose();
        dbCommand = null;
    }
}[/code]
发表于 2017-3-10 13:24 | 显示全部楼层
很不错
发表于 2017-3-10 12:26 | 显示全部楼层
好帖就是要顶
发表于 2017-3-10 13:00 | 显示全部楼层
真心顶
发表于 2017-3-10 12:34 | 显示全部楼层
难得一见的好帖
发表于 2017-3-10 12:51 | 显示全部楼层
LZ真是人才
发表于 2017-3-28 20:17 | 显示全部楼层
很不错
发表于 2017-3-28 20:34 | 显示全部楼层
顶顶多好
发表于 2017-3-28 19:58 | 显示全部楼层
说的非常好
发表于 2017-3-28 20:27 | 显示全部楼层
很好哦
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-28 18:57 , Processed in 0.564168 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表