Linux下一个服务器安装多个mysql 
一. 为了统一安装的版本,先卸载已经安装的mysql 
卸载已经安装的mysql  1. 查找已安装的myslq 版本:         
#rpm -q mysql  
        在屏幕上将显示已安装的mysql包名如:mysql-5.0.77-4.el5_5.3         如果通过该命令,提示没有安装mysql,而你确定已安装,可以使用下面命令,尝试一下:  
#rpm -qa | grep -i mysql  
         MySQL-server-5.5.11-1.rhel5  
2. 强制卸载(将要卸载的必须是上面查询到的mysql的全称包括版本号,此处是在无法正常卸载时不得已的操作,强制卸载,必须用参数--nodeps):          

#rpm -e --nodeps mysql-5.0.77-4.el5_5.3      

3.成功卸载,系统不提示任何信息      
 
二. 安装前请先安装所有依赖的包,或者安装过程中看见缺少什么包就安装什么包  
 
三. 安装第一个mysql mysql1:使用默认配置  
root@localhost usr]# groupadd mysql 
[root@localhost usr]# useradd -g mysql mysql 
[root@localhost usr]# cd /usr/local 
[root@localhost local]# tar -zxvf mysql-5.0.51.tar.gz  
[root@localhost local]# cd mysql-5.0.51 
[root@localhost mysql-5.0.51# ./configure --prefix=/usr/local/mysql 
[root@localhost mysql-5.0.51]# make 
[root@localhost mysql-5.0.51]# make install 
[root@localhost mysql-5.0.51]# cd ../mysql 
[root@localhost mysql]# ./bin/mysql_install_db --user=mysql 
[root@localhost mysql]# chown -R root . 
[root@localhost mysql]# chown -R mysql var 
[root@localhost mysql]# chgrp -R mysql . 
[root@localhost mysql]# ./bin/mysqld_safe --user=mysql & 
[root@localhost mysql]# ./bin/mysqladmin -uroot password mysql 

[root@localhost mysql]# cp ../mysql-5.0.51/support-files/my-large.cnf /etc/my.cnf 

[root@localhost mysql]# cp ../mysql-5.0.51/support-files/mysql.server 
/etc/rc.d/init.d/mysql1 

[root@localhost mysql]# chkconfig --add mysql1 

[root@localhost mysql]# chkconfig --level mysql1 345 on 

[root@localhost mysql]# chkconfig --list mysql1 

[root@localhost mysql]#  
四. 安装第二个mysql 
mysql2使用3307端口,配置文件为:/etc/my2.cnf  
root@localhost usr]# groupadd mysql 
[root@localhost usr]# useradd -g mysql mysql 
[root@localhost usr]# cd /usr/local 
[root@localhost local]# tar -zxvf mysql-5.0.51.tar.gz  
[root@localhost local]# cd mysql-5.0.51 
[root@localhost mysql-5.0.51# ./configure --prefix=/usr/local/mysql5 
[root@localhost mysql-5.0.51]# make 
[root@localhost mysql-5.0.51]# make install 
[root@localhost mysql-5.0.51]# cd ../mysql5 
[root@localhost mysql]# ./bin/mysql_install_db --user=mysql 
[root@localhost mysql]# chown -R root . 
[root@localhost mysql]# chown -R mysql var 
[root@localhost mysql]# chgrp -R mysql . 
[root@localhost mysql]# ./bin/mysqld_safe --user=mysql & 
[root@localhost mysql]# ./bin/mysqladmin -uroot password mysql 
[root@localhost mysql]# cp ../mysql-5.0.51/support-files/my-large.cnf /etc/my2.cnf 
[root@localhost mysql]# cp ../mysql-5.0.51/support-files/mysql.server /etc/rc.d/init.d/mysql2 
[root@localhost mysql]# chkconfig --add mysql2 
[root@localhost mysql]# chkconfig --level mysql2 345 on 
[root@localhost mysql]# chkconfig --list mysql2 
[root@localhost mysql]#  
配置mysql2 
vim /etc/rc.d/init.d/mysql2  
修改下面的内容:  
1. 将目录/usr/local/mysql改为当前安装的mysql目录,即/usr/local/mysql5
2. 将引用的配置文件名称由my.cnf改为当前要使用的配置文件my2.cnf
3. 在$bindir/mysqld_safe中添加--defaults-file=/etc/my2.cnf  $bindir/mysqld_safe --defaults-file=/etc/my2.cnf --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &   
注意: 修改完后datadir需要使用如下命令来初始化

datadir:  ./bin/mysql_install_db --datadir=/usr/local/mysql5/var --user=mysql  

配置my2.cnf 
vim /etc/my2.cnf修改相关的端口、socket 

  [client] 
 #password       = your_password  port            = 3307 
 socket          = /tmp/mysql5.sock   # The MySQL server  [mysqld] 
 port            = 3307 
 socket          = /tmp/mysql5.sock 
  
五. 启动mysql1和mysql2 
Mysql1: 
cd /etc/rc.d/init.d/ 
./mysql1 start 
./mysql2 start  
六. 其他服务器命令行客户端链接mysql  mysql -ulportal -pportalpwr -h PortalDev3-DB2 -P 3306 
mysql -ulportal -pportalpwr -h PortalDev3-DB2 -P 3307   
七. 主要错误与解决:  q. Can't connect to local MySQL server through socket '/tmp/mysql.sock(11)   
[root@localhost mysql]# chown -R root .   
[root@localhost mysql]# chown -R mysql /var   
[root@localhost mysql]# chgrp -R mysql .    q. -bash: /etc/rc.d/init.d/mysqld: Permission denied     a. chmod +x /etc/rc.d/init.d/mysqld       q.  Starting MySQL.Manager of pid-file quit without updating file.[FAILED]     a. /usr/local/mysql/bin/mysql_install_db --user=mysql

===========================================================================================


在一台服务器上,可以通过mysqld_multi配置多个Mysql实例运行。
假设服务器上现在已经运行一个MYSQL实例,数据目录是/var/lib/mysql,端口是3306,所用的SOCKET连接文件位于/tmp/mysql.sock。那么可以按照如下步骤,再启动一个或者多个实例。

一,创建新实例的数据目录
新启动MySQL实例之后,其数据位于哪个目录,就是实例相关的数据库文件都准备放在哪个目录下,假定我把它们放在 /var/lib/mysql2 目录下。
mkdir /var/lib/mysql2   创建目录。
chown  mysql  /var/lib/mysql2  给mysql用户权限。
二,创建数据库
这一步是在刚刚建立的目录下面,初始化数据库。
bin/mysql_install_db --user=mysql --datadir=/var/lib/mysql2   // 将mysql等系统数据库安装到实例准备运行的目录。
三,配置文件 
修改配置文件 my.cnf,这也是最重要的一步。主要是重新设置每个实例的pid-file,socket,port等属性,我的配置文件 如下:

[sql] view plaincopy
1. [mysqld_multi]  
2. mysqld     = /install/mysql/bin/mysqld_safe  
3. mysqladmin = /install/mysql/bin/mysqladmin  
4. user       = root  
5.   
6. # The MySQL server  
7. [mysqld1]  
8. port            = 3306  
9. socket          = /tmp/mysql.sock  
10. datadir         =/var/lib/mysql  
11. pid-file        =/var/lib/mysql/mysql.pid  
12. user            =mysql  
13.   
14. log-bin         =master-bin  
15. log-bin-index           =master-bin.index  
16. server-id       =1  
17. [mysqld2]  
18. port            = 3307  
19. socket          =/tmp/mysql2.sock  
20. datadir         =/var/lib/mysql2  
21. pid-file        =/var/lib/mysql2/mysql.pid  
22. user            =mysql  
 

四,启动实例
在配置文件配置好之后,就可以启动了
 /install/mysql/bin/mysqld_multi start 2    // 这样就启动了。 

五,打开控制台

在启动新的实例之后,也可以打开控制台操作,但要指定socket和端口等信息,如:
mysql --user=root --port=3307 --socket=/tmp/mysql2.sock -p
===================================================================================
步骤如下:
 
一、编译安装两个mysql,步骤如下
下载Mysql ,此处以Mysql-6.0.11-alpha.tar.gz 为例
 
安装第一个数据库(主数据库)
(红色部分为默认数据库文件路径,可改成其他如:data、var等)
tar zxvf mysql-6.0.11-alpha.tar.gz
cd mysql-6.0.11-alpha
./configure --prefix=/usr/local/mysql --sysconfdir=/usr/local/mysql/etc --with-tcp-port=3306 --localstatedir=/usr/local/mysql/localstate
make && make install
 
安装第二个数据库(从数据库)
tar zxvf mysql-6.0.11-alpha.tar.gz
cd mysql-6.0.11-alpha
./configure --prefix=/usr/local/mysql3307 --sysconfdir=/usr/local/mysql3307/etc --with-tcp-port=3307 --localstatedir=/usr/local/mysql3307/localstate --with-unix-socket-path=/tmp/mysql3307.sock --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=gbk,gb2312,binary --enable-thread-safe-client --with-plugins=innobase --with-mysqld-user=mysql --with-charset=utf8  --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
make && make install
 
如需支持所有字符集 修改为:--with-extra-charsets=all 即可
 
二、分别初始化数据库脚本(在编译目录执行下)
scripts/mysql_install_db --basedir=/usr/local/mysql/ --user=mysql

scripts/mysql_install_db --basedir=/usr/local/mysql3307/ --user=mysql
注:可用--datadir=PATH参数指定数据库文件路径,默认为编译时-- localstatedir
 
 
三、修改从库配置文件
拷贝配置文件:
cp /usr/local/software/mysql-6.0.11-alpha/support-files/my-medium.cnf /usr/local/mysql/etc/my.cnf

cp /usr/local/software/mysql-6.0.11-alpha/support-files/my-medium.cnf /usr/local/mysql3307/etc/my.cnf
 
 
四、修改各个数据库的my.cnf文件
主要内容如下:
添加InnoDB支持:
[client]
#password       = your_password
port            = 3307                      --数据库端口号
socket          = /tmp/mysqls.sock    --sock文件路径
default-character-set=utf8            --客户端UTF8连接
[mysqld]
port            = 3307                      --数据库端口号
socket          = /tmp/mysqls.sock    --sock文件路径
default-storage-engine=INNODB
default-character-set=UTF8           --默认字符集
init_connect='SET NAMES utf8'       --以UTF8连接
skip-name-resolve                        --取消DNS反向解析
lower_case_table_names=1            --不区分表名大小写
 
启动数据库(进入各自目录)
主:./mysqld_safe &
从:./mysqld_safe &
 
配置开启自动:
cp /usr/local/software/mysql-6.0.11-alpha/support-files/mysql.server /etc/init.d/mysql

cp /usr/local/software/mysql-6.0.11-alpha/support-files/mysql.server /etc/init.d/mysql3307

修改/etc/init.d/mysql3007中basedir与datadir为即可

basedir=/usr/local/mysql3307
datadir=/usr/local/mysql3307/var
 
 
 
 
 
停止数据库
主:./mysqladmin shutdown

从:./mysqladmin shutdown
 
以上各项配置都可以自行修改,以满足业务需求。