说明
有的时候会遇到在同一台服务器上安装两个版本或者两个相同版本的mysql,当有这种需求时,首先要理清servie的概念以及mysql启动进程的原理,操作步骤其实很简单,以下操作仅对源码编译安装做说明。
不管第一个mysql安装是否是yum,rpm或者源码安装,关键在于第二个mysql的安装方法。
编译
[root@localhost ~]# mkdir /usr/local/mysql-5.6
[root@localhost ~]# mkdir -p /data/mysql-5.6/3307/data
上传源码包,解压后:
[root@localhost ~]# cd mysql-5.6.22
编译:
[root@localhost ~]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6 \
-DMYSQL_UNIX_ADDR=/data/mysql-5.6/3307/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data/mysql-5.6/3307/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3307
CMake Error at cmake/readline.cmake:85 (MESSAGE):
Curses library not found. Please install appropriate package,remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:128 (FIND_CURSES)
cmake/readline.cmake:202 (MYSQL_USE_BUNDLED_EDITLINE)
CMakeLists.txt:406 (MYSQL_CHECK_EDITLINE)
— Configuring incomplete, errors occurred!
若报错:
[root@localhost mysql-5.6.22]yum -y install ncurses-devel.x86_64
安装初始化
[root@localhost mysql-5.6.22]# make && make install
[root@localhost mysql-5.6.22]# cp support-files/my-default.cnf /data/mysql-5.6/3307/my.cnf
[root@localhost mysql-5.6.22]# cd /data/mysql-5.6/3307/
[root@localhost 3307]# vi my.cnf
|
|
[root@localhost bin]# cd /usr/local/mysql-5.6/scripts
[root@localhost scripts]# ./mysql_install_db –basedir=/usr/local/mysql-5.6 –datadir=/data/mysql-5.6/3307/data –user=mysql
[root@localhost bin]# cd /usr/local/mysql-5.6/bin
[root@localhost bin]# ./mysqld_safe –defaults-file=/data/mysql-5.6/3307/my.cnf &
注意/data/mysql-5.6/3307/mysql.sock需要的权限。
[root@localhost bin]# chmod 777 /data/mysql-5.6/3307/
[root@localhost bin]# ./mysqladmin -u root password root
在登陆mysql时,不要直接用mysql命令,环境变量缘故,mysql命令应该是第一个mysql服务端的。有兴趣的可以自己重新设置或者设置成不一样的命令。
[root@localhost bin]# ./mysql -u root -p root #登陆第二个mysql
设置开机启动
以下命令用于设置mysql开机自动运行
[root@localhost ~]# cd mysql-5.6.22 //再次进入解压后的目录,即源码目录。
[root@localhost mysql-5.6.22]# cp support-files/mysql.server /etc/init.d/mysqld2 //将mysql.server这个文件copy到/etc/init.d/目录下,并更名为mysqld2
[root@localhost mysql-5.6.22]# chmod 755 /etc/init.d/mysqld2 //给/etc/init.d/mysql这个文件赋予“执行”权限
[root@localhost mysql-5.6.22]# chkconfig –add mysqld2 //加入到开机自动运行
对启动文件mysqld2做出的必要修改
修改下面的内容:
1.datadir=
2.conf=
3.把$bindir/mysqld_safe –datadir=$datadir –pid-file=$server_pid_file $other_args >/dev/null 2>&1 &替换为
“$bindir/mysqld_safe –defaults-file=/usr/local/mysql/my.cnf –datadir=$datadir –pid-file=$server_pid_file $other_args >/dev/null 2>&1 &”(双引号中的)
[root@localhost mysql-5.6.22]# service mysqld2 restart //重新启动MySQL