今天闲着没事又把mysql多实例知识回顾了一下,虽然以前配置过,这次还是遇到很多坑…
- 安装mysql数据库,见前面博文
- 创建mysql多实例的数据文件目录
本次是/data目录作为mysql多实例总的根目录。
/data ——————–总的多实例根目录
├── 3306——————-3306实例的目录
│ ├── data—————-3306实例的数据文件目录
│ ├── my.cnf————–3306实例的配置文件
│ ├── mysql—————3306实例的启动文件
│
└── 3307——————-3307实例的目录
├── data—————–3307实例的数据文件目录
├── my.cnf—————3307实例的配置文件
├── mysql—————-3307实例的启动文件
相关配置文件data.zip下载: http://pan.baidu.com/s/1geYvQRh
首先删掉mysql单实例的相关:rm -f /etc/init.d/mysqld
接着按照创建mysql多实例的目录结构及文件:`mkdir -p /data/{3306,3307}/data
- 配置mysql多实例的文件权限
chown -R mysql.mysql /data #授权mysql用户和组管理整个多实例目录/data
find /data -type f -name "mysql"|xargs chmod +x #授权mysql多实例服务所有启动文件mysql可执行
- 配置mysql命令的全局使用路径
echo 'export PATH=/usr/local/mysql-5.5.32/bin:$PATH' >>/etc/profile #echo后面是单引号
source /etc/profile #执行source使上一行生效
- 初始化mysql多实例的数据库文件
mysql 5.5.32初始化命令:
cd /usr/local/mysql-5.5.32/scripts #与5.1的路径不同,不在mysql bin路径下了
./mysql_install_db --basedir=/usr/local/mysql-5.5.32 --datadir=/data/3306/data --user=mysql;
./mysql_install_db --basedir=/usr/local/mysql-5.5.32 --datadir=/data/3307/data --user=mysql;
多实例登录数据库:
#指定sock登录
mysql -S /data/3306/mysql.sock
mysql -S /data/3307/mysql.sock
重启数据库:
/data/3306/mysql stop
/data/3306/mysql start
/data/3306/mysql restart
此时stop数据库,关闭不了?
停止数据库需要指定密码,mysql文件里面默认密码是123456,修改为空,这样就可以关闭了,但是这样没密码很危险。
为root增加密码:
#数据库服务需要先启动
mysqladmin -u root -S /data/3306/mysql.sock password '123456';
mysqladmin -u root -S /data/3307/mysql.sock password '123456';
将目录中mysql脚本的mysql_pwd修改为mysql_pwd=”123456”
将mysql脚本授权为root,700:
find /data -type f -name "mysql"
find /data -type f -name "mysql" -exec chmod 700 {} \;
find /data -type f -name "mysql" -exec chown root.root {} \;
然后就可以正常启动关闭了。
注意:mysql脚本中多一个少一个空格就可能产生问题。
function_stop_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown
fi
}
当时在-p${mysql_pwd}中间加了一个空格-p ${mysql_pwd}就导致服务停不了。