红联Linux门户
Linux帮助

Ubuntu 14.04下运行多个MySQL服务器

发布时间:2017-04-08 10:41:48来源:linux网站作者:upHailin
一、系统环境
Ubuntu 14.04 64位
Mysql5.7.17 server 64位 编译安装完毕
MySQL 安装路径 /usr/local/mysql
Mysql 数据路径 /home/MysqlData
Mysql命令添加到环境变量/etc/profile中:export PATH=/usr/local/mysql/bin:$PATH
在Ubuntu 14.04上安装三个Mysql服务实例
 
二、停止Mysql服务
首先要停掉Mysql服务。
service mysql stop
将mysql服务从开机启动中移除,防止旧的Mysql服务开机占用3306端口。但不要从系统服务中移除mysql服务。
sudo update-rc.d mysql remove
 
三、初始化数据库目录并安装三个Mysql服务
mkdir -p /home/MysqlData1
mkdir -p /home/MysqlData2
mkdir -p /home/MysqlData3
cd /usr/local/mysql/
./scripts/mysql_install_db  --datadir=/home/MysqlData1 --user=mysql
./scripts/mysql_install_db  --datadir=/home/MysqlData2 --user=mysql
./scripts/mysql_install_db  --datadir=/home/MysqlData3 --user=mysql
 
四、从MySQL源码中把mysqld_multi.server加入到系统服务中
cd /usr/local/mysql/support-files/
cp ./mysqld_multi.serve /etc/init.d/mysqld_multi
update-rc.d mysqld_multi defaults
update-rc.d mysqld_multi start 20 2 3 4 5 . stop 20 0 1 6 .
 
五、修改数据库配置文件/etc/my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
#user       = root
#password   = 123456
[mysqld1]
port=3306
basedir=/usr/local/mysql
datadir=/home/MysqlData1
socket=/home/MysqlData1/mysql1.sock
user=mysql
#skip-grant-tables
[mysqld2]
port=3307
basedir=/usr/local/mysql
datadir=/home/MysqlData2
socket=/home/MysqlData2/mysql2.sock
user=mysql
#skip-grant-tables
[mysqld3]
port=3308
basedir=/usr/local/mysql
datadir=/home/MysqlData3
socket=/home/MysqlData3/mysql3.sock
user=mysql
#skip-grant-tables
 
六、修改密码并启动Mysql服务
可先在/etc/my.cnf中的每个mysld下加入一行skip-grant-tables, 先免密登录再修改密码。加入后使用mysqld_multi启动服务器,命令如下:
mysqld_multi --defaults-extra-file=/etc/my.cnf start 1-3
启动三个mysql服务后免密登录mysqld1再修改密码,由于默认是3306端口,因此需要指定端口号:
mysql -uroot -P 3306 -h 127.0.0.1
必须指定-h,而且不能使用localhost!
修改密码:
use mysql;
update user set authentication_string=password("123456") where user="root";
flush privileges;
exit
修改密码后退出再登陆,登陆进去后,执行语句确报错:
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
参考官方的文档,见http://dev.mysql.com/doc/refman/5.6/en/alter-user.html。如下操作后就可以了:
mysql>  SET PASSWORD = PASSWORD('123456');
Query OK, 0 rows affected (0.03 sec)
mysql>  flush privileges;
此时,mysqld1服务器可以正常的通过密码登陆,停止。相同的方法可以用在mysqld2,mysqld3上修改密码。
注意:使用mysqld_multi停止服务时,命令中需要带密码:
mysqld_multi --password=123456 stop 1-3
 
本文永久更新地址:http://www.linuxdiyf.com/linux/29835.html