C#怎样连接mysql多服务?

mysql的默认服务名称是“MySQL”,连接是没有问题的。

现在我的情况是,在一台机器上安装了两个以上MySQL的服务器,分别用于不同用途,彼此版本可能不同,但没有联系,这样不同的MySQL服务器就要使用不同的服务名称和端口。

那么问题是:

1、怎样操作才能使不同的MySQL服务器使用不同的服务名称和端口运行?
2、假设某个MySQL服务器的服务名称为“MySQL_A”,那么我如何在C#中连接这个“MySQL_A”服务呢?

如果你想要运行多个服务器,最容易的方法是用不同的TCP/IP端口和套接字文件重新编译服务器,因此他们不是侦听同一个TCP/IP端口或套接字。
假设一个现存服务器配置为缺省端口号和套接字文件,那么用一个这样的configure命令行设置新的服务器:

shell> ./configure --with-tcp-port=port_number
--with-unix-socket=file_name
--prefix=/usr/local/mysql-3.22.9

这里port_number和file_name应该不同于缺省端口号和套接字文件路径名,而且--prefix值应该指定一个不同于现存的MySQL安装所在的安装目录。
你可以用这个命令检查由任何当前执行的MySQL所使用的套接字和端口:
shell> mysqladmin -h hostname --port=port_number variables
如果你有一个MySQL服务器正运行在你使用了的端口上,你将得到MySQL的一些最重要的可配置变量的一张表,包括套接字名等。
你也应该编辑你机器的初始化脚本(可能是“mysql.server”)来启动并杀死多个mysqld服务器。
你不必重新编译一个新MySQL服务器,只要以一个不同的端口和套接字启动即可。你可以通过指定在运行时safe_mysqld使用的选项来改变端口和套接字:
shell> /path/to/safe_mysqld --socket=file_name --port=port_number
如果你在与开启日志的另一个服务器相同的一个数据库目录下运行新服务器,你也应该用safe_mysqld的--log和--log-update选项来指定日志文件的名字,否则,两个服务器可能正在试图写入同一个日志文件。

警告:通常你决不应该有在同一个数据库中更新数据的2个服务器!如果你的OS不支持无故障(fault-free)的系统锁定,这可能导致令人惊讶的事情发生!

如果你想要为第二个服务器使用另一个数据库目录,你可以使用safe_mysqld的--datadir=path选项。

当你想要连接一个正在运行的使用一个不同于编译进你的客户程序中端口的MySQL服务器时,你可以使用下列方法之一:

以--host 'hostname' --port=port_numer或[--host localhost] --socket=file_name启动客户。
在你的C或Perl程序中,当连接MySQL服务器时,你可以给出端口和套接字参数。
在你启动客户程序之前,设置MYSQL_UNIX_PORT和MYSQL_TCP_PORT环境变量,指向Unix套接字和TCP/IP的端口。如果你通常使用一个特定的套接字或端口,你应该将设置这些环境变量的命令放进你的“.login”文件中。
在你的主目录下的“.my.cnf”文件中指定缺省套接字和TCP/IP端口。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-05
一楼的回答太麻烦了吧。我的机子上就装了sql2000和2005,没有你说的那么麻烦啊。
1.在同一台机子上装多个sql,他会自己分配端口号。这个你不用操心
2.在c#里连接你想用的服务器,写好连接语句就可以了
string cmdString=“server=MySQL_A;database=数据库名称;uid=用户名;pwd=密码”;
第2个回答  2009-06-07
先新建一个App.config文件:
然后:
<connectionStrings>
<add name ="A" connectionString="连接语句"/>
<add name ="B" connectionString="连接语句"/>
</connectionStrings>
在类中直接可以用
string connString = ConfigurationManager.ConnectionStrings["A"或"B"].ConnectionString;
得到你所要想要的的连接
相似回答