有些情况下你可能想要在同
![](/icons/28258yi.gif)
台机器上运行多个
![](/icons/28258dou2.gif)
例如
![](/icons/28258dou.gif)
你可能想要测试
![](/icons/28258yi.gif)
个新
![](/icons/28258de.gif)
MySQL版本而让你现有生产系统
![](/icons/28258de.gif)
设置不受到干扰
![](/icons/28258dou.gif)
或你可能是想要为区别
![](/icons/28258de.gif)
客户提供独立
![](/icons/28258de.gif)
MySQL安装
![](/icons/28258yi.gif)
个因特网服务供应商
![](/icons/28258dou2.gif)
如果你想要运行多个
![](/icons/28258dou.gif)
最容易
![](/icons/28258de.gif)
思路方法是用区别
![](/icons/28258de.gif)
TCP/IP端口和套接字文件重新编译服务器
![](/icons/28258dou.gif)
因此他们不是侦听同
![](/icons/28258yi.gif)
个TCP/IP端口或套接字
![](/icons/28258dou2.gif)
假设
![](/icons/28258yi.gif)
个现存服务器配置为缺省端口号和套接字文件
![](/icons/28258dou.gif)
那么用
![](/icons/28258yi.gif)
个这样
![](/icons/28258de.gif)
configure命令行设置新
![](/icons/28258de.gif)
服务器:
shell> ./configure --with-tcp-port=port_number --with-unix-
![](/icons/28258socket.gif)
=file_name --prefix=/usr/local/mysql-3.22.9
这里port_number和file_name应该区别于缺省端口号和套接字文件路径名
![](/icons/28258dou.gif)
而且--prefix值应该指定
![](/icons/28258yi.gif)
个区别于现存
![](/icons/28258de.gif)
MySQL安装所在
![](/icons/28258de.gif)
安装目录
![](/icons/28258dou2.gif)
你可以用这个命令检查由任何当前执行
![](/icons/28258de.gif)
MySQL所使用
![](/icons/28258de.gif)
套接字和端口:
shell> mysqladmin -h hostname --port=port_number variables
如果你有
![](/icons/28258yi.gif)
个MySQL服务器正运行在你使用了
![](/icons/28258de.gif)
端口上
![](/icons/28258dou.gif)
你将得到MySQL
![](/icons/28258de.gif)
![](/icons/28258yi.gif)
些最重要
![](/icons/28258de.gif)
可配置变量
![](/icons/28258de.gif)
![](/icons/28258yi.gif)
张表
![](/icons/28258dou.gif)
包括套接字名等
![](/icons/28258dou2.gif)
你也应该编辑你机器
![](/icons/28258de.gif)
![](/icons/28258chushi.gif)
化脚本(可能是“mysql.server”)来启动并杀死多个mysqld服务器
![](/icons/28258dou2.gif)
你不必重新编译
![](/icons/28258yi.gif)
个新MySQL服务器
![](/icons/28258dou.gif)
只要以
![](/icons/28258yi.gif)
个区别
![](/icons/28258de.gif)
端口和套接字启动即可
![](/icons/28258dou2.gif)
你可以通过指定在运行时safe_mysqld使用
![](/icons/28258de.gif)
选项来改变端口和套接字:
shell> /path/to/safe_mysqld --
![](/icons/28258socket.gif)
=file_name --port=port_number
如果你在和开启日志
![](/icons/28258de.gif)
另
![](/icons/28258yi.gif)
个服务器相同
![](/icons/28258de.gif)
![](/icons/28258yi.gif)
个数据库目录下运行新服务器
![](/icons/28258dou.gif)
你也应该用safe_mysqld
![](/icons/28258de.gif)
--log和--log-update选项来指定日志文件
![](/icons/28258de.gif)
名字
![](/icons/28258dou.gif)
否则
![](/icons/28258dou.gif)
两个服务器可能正在试图写入同
![](/icons/28258yi.gif)
个日志文件
警告:通常你决不应该有在同
![](/icons/28258yi.gif)
个数据库中更新数据
![](/icons/28258de.gif)
2个服务器!如果你
![](/icons/28258de.gif)
OS不支持无故障(fault-free)
![](/icons/28258de.gif)
系统锁定
![](/icons/28258dou.gif)
这可能导致令人惊讶
![](/icons/28258de.gif)
事情发生!
如果你想要为第 2个服务器使用另
![](/icons/28258yi.gif)
个数据库目录
![](/icons/28258dou.gif)
你可以使用safe_mysqld
![](/icons/28258de.gif)
--datadir=path选项
当你想要连接
![](/icons/28258yi.gif)
个正在运行
![](/icons/28258de.gif)
使用
![](/icons/28258yi.gif)
个区别于编译进你
![](/icons/28258de.gif)
客户
![](/icons/28258chengxu.gif)
中端口
![](/icons/28258de.gif)
MySQL服务器时
![](/icons/28258dou.gif)
你可以使用下列思路方法的
![](/icons/28258yi.gif)
:
以--host 'hostname' --port=port_numer或[--host localhost] --
![](/icons/28258socket.gif)
=file_name启动客户
![](/icons/28258dou2.gif)
在你
![](/icons/28258de.gif)
C或Perl
![](/icons/28258chengxu.gif)
中
![](/icons/28258dou.gif)
当连接MySQL服务器时
![](/icons/28258dou.gif)
你可以给出端口和套接字参数
![](/icons/28258dou2.gif)
在你启动客户
![](/icons/28258chengxu.gif)
的前
![](/icons/28258dou.gif)
设置MYSQL_UNIX_PORT和MYSQL_TCP_PORT环境变量
![](/icons/28258dou.gif)
指向Unix套接字和TCP/IP
![](/icons/28258de.gif)
端口
![](/icons/28258dou2.gif)
如果你通常使用
![](/icons/28258yi.gif)
个特定
![](/icons/28258de.gif)
套接字或端口
![](/icons/28258dou.gif)
你应该将设置这些环境变量
![](/icons/28258de.gif)
命令放进你
![](/icons/28258de.gif)
“.login”文件中
![](/icons/28258dou2.gif)
在你
![](/icons/28258de.gif)
主目录下
![](/icons/28258de.gif)
“.my.cnf”文件中指定缺省套接字和TCP/IP端口