[原创]Mac下运行不同版本的MySQL_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2797 | 回复: 0   主题: [原创]Mac下运行不同版本的MySQL        下一篇 
Robin
注册用户
等级:少校
经验:856
发帖:63
精华:4
注册:2014-3-22
状态:离线
发送短消息息给Robin 加好友    发送短消息息给Robin 发消息
发表于: IP:您无权察看 2014-11-16 11:54:38 | [全部帖] [楼主帖] 楼主   主页

首先,确认Mac已经安装了多个版本的MySQL,至于怎么安装,可以参考之前的帖子。

废话不多说,开工。

备份配置文件。

cp /etc/my.cnf /etc/my_bak.cnf


编辑配置文件,完整内容如下。

vim /etc/my.cnf
cat /etc/my.cnf
[mysqld5173]
port=5173
socket=/tmp/mysql5173.sock
basedir=/usr/local/mysql_5.1
datadir=/usr/local/mysql_5.1/data
user=mysql
log-error=/var/log/mysqld5173.log
pid-file=/tmp/mysqld5173.pid
[mysqld5612]
port=5612
socket=/tmp/mysql5612.sock
basedir=/usr/local/Cellar/mysql/5.6.21
datadir=/usr/local/Cellar/mysql/5.6.21/data
user=mysql
log-error=/var/log/mysql5612.log
pid-file=/tmp/mysqld5612.pid


启动和关闭MySQL需要使用对应版本的mysqld_multi程序,登录MySQL使用mysql命令,任意版本都可以。

/usr/local/mysql_5.1/bin/mysqld_multi start 5173
/usr/local/Cellar/mysql/5.6.21/bin/mysqld_multi start 5612


测试,登录MySQL 5.1。

mysql --socket=/tmp/mysql_5173.sock -uroot -p
Server version: 5.1.73 Source distribution
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.1.73 |
+-----------+
1 row in set (0.00 sec)
mysql> exit
Bye


测试,登录MySQL 5.6。

mysql --socket=/tmp/mysql_5612.sock -uroot -p
Server version: 5.6.21 Homebrew
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.6.21 |
+-----------+
1 row in set (0.00 sec)


我们可以查看MySQL的进程,可以看到有多个。

ps -ef | grep mysql | grep -v grep
74 69028 1 0 4:04PM ttys001 0:00.16 /usr/local/mysql_5.1/libexec/mysqld --port=5173 --socket=/tmp/mysql5173.sock --basedir=/usr/local/mysql_5.1 --datadir=/usr/local/mysql_5.1/data --user=mysql --log-error=/var/log/mysqld5173.log --pid-file=/tmp/mysqld5173.pid
74 69034 1 0 4:04PM ttys001 0:00.54 /usr/local/Cellar/mysql/5.6.21/bin/mysqld --port=5612 --socket=/tmp/mysql5612.sock --basedir=/usr/local/Cellar/mysql/5.6.21 --datadir=/usr/local/Cellar/mysql/5.6.21/data --user=mysql --log-error=/var/log/mysqld5612.log --pid-file=/tmp/mysqld5612.pid


当然,我们还可以使用MySQL 5.1的mysql命令。

/usr/local/mysql_5.1/bin/mysql --socket=/tmp/mysql5612.sock -uroot -p
/usr/local/mysql_5.1/bin/mysql --socket=/tmp/mysql5173.sock -uroot -p


关闭MySQL可以这样。

/usr/local/mysql_5.1/bin/mysqld_multi stop 5173
/usr/local/Cellar/mysql/5.6.21/bin/mysqld_multi stop 5612


由于我们的Mac里装了不同版本的MySQL,切换比较麻烦,我们可以玩一个优美的无缝切换。

注意:需要更改root用户的默认Shell,root用户的默认shell是sh,我们需要更改为bash,可以使用chsh命令更改。

编辑MySQL 5.1的bash配置文件,内容如下。

vim .bash_mysql_5.1
cat .bash_mysql_5.1
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql_5.1/bin:$PATH"


编辑MySQL 5.5的bash配置文件,内容如下:

vim .bash_mysql_5.6
cat .bash_mysql_5.6
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/Cellar/mysql/5.6.21/bin:$PATH"


修改bash_profile,内容如下。

cat ~/.bash_profile
alias set-m-5.1='source ~/.bash_mysql_5.1'
alias set-m-5.6='source ~/.bash_mysql_5.6'


测试。

注意:要想达到这样的效果,需要删除/usr/local/bin下的mysql所有命令。这些命令是brew安装完mysql后,自动创建的软链。

set-m-5.1
mysql --version
mysql Ver 14.14 Distrib 5.1.73, for apple-darwin13.3.0 (i386) using EditLine wrapper
set-m-5.6
mysql --version
mysql Ver 14.14 Distrib 5.6.21, for osx10.9 (x86_64) using EditLine wrapper
Enjoy!


该贴由hui.chen转至本版2014-12-1 10:01:30



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论