MySQL多实例配置方法

最近需要在一台服务器上安装多个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多实例配置方法》有1个想法

  1. 启动新实例的时候如果提示下面的错误:
    ‘./mysql-bin.index’ not found (Errcode: 13)
    是因为权限的问题,可以用下面的命令解决,路径需更改为实际路径:
    chgrp -R mysql /usr/local/mysql/data && chown -R mysql /usr/local/mysql/data

发表评论