最近需要在一台服务器上安装多个MySQL实例,下面是总结出来的方法:
创建存放数据文件的目录:
mkdir /var/lib/mysql2
创建数据库实例:
mysql_install_db –datadir=/var/lib/mysql2
然后编辑my.cnf文件到/var/lib/mysql2
关键部分:
[mysqld]
port = 3307
socket = /var/lib/mysql2/mysql.sock
datadir=/var/lib/mysql2
测试启动服务:
mysqld_safe –defaults-file=/var/lib/mysql2/my.cnf &
查看日志确认是否启动成功:
vi /var/lib/mysql2/hostname.err
添加系统变量(由于socket不是缺省文件,要告诉mysql_secure_installation找哪个mysql实例进行设置)
export MYSQL_UNIX_PORT=/var/lib/mysql2/mysql.sock
运行mysql_secure_installation,设置root密码等一系列安全设置:
删除系统变量:
export -n MYSQL_UNIX_PORT
设置为服务:
找到/etc/init.d/mysql
复制为mysql2
把里面的datadir=
改为datadir=/var/lib/mysql2
找到start部分,把启动命令改为:
$bindir/mysqld_safe –defaults-file=”$datadir/my.cnf” >/dev/null 2>&1 &
然后就可以使用服务的方式启动mysql的另一个实例了;
service mysql2 stop
service mysql2 start
service mysql2 restart
改为自动启动:
chkconfig mysql2 on
远程访问该数据库可能提示:
ERROR 1130 (00000): Host ‘x.x.x.x’ is not allowed to connect to this MySQL server
这个是权限的问题,使用以下命令在本机连接数据库
mysql -u root -S /var/lib/mysql2/mysql.sock -p
然后执行:
GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
如果防火墙设置正确的话,应该就可以从远程访问了。
启动新实例的时候如果提示下面的错误:
‘./mysql-bin.index’ not found (Errcode: 13)
是因为权限的问题,可以用下面的命令解决,路径需更改为实际路径:
chgrp -R mysql /usr/local/mysql/data && chown -R mysql /usr/local/mysql/data