Ubuntu 14.04下 运行多个MySQL服务器

来源:互联网 发布:北塔软件福利待遇 编辑:程序博客网 时间:2024/05/22 08:04

Ubuntu 14.04下 运行多个MySQL服务器

一、 系统环境

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/MysqlData1mkdir -p /home/MysqlData2mkdir -p /home/MysqlData3cd /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_multiupdate-rc.d mysqld_multi defaultsupdate-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_safemysqladmin = /usr/local/mysql/bin/mysqladmin#user       = root#password   = 123456[mysqld1]port=3306basedir=/usr/local/mysqldatadir=/home/MysqlData1socket=/home/MysqlData1/mysql1.sockuser=mysql#skip-grant-tables[mysqld2]port=3307basedir=/usr/local/mysqldatadir=/home/MysqlData2socket=/home/MysqlData2/mysql2.sockuser=mysql#skip-grant-tables[mysqld3]port=3308basedir=/usr/local/mysqldatadir=/home/MysqlData3socket=/home/MysqlData3/mysql3.sockuser=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
0 0