没有根的野草,漂浮的命途

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Mac下mysql多端口实例配置并设置开机自动启动


先是给mysql配置~ 
(文中"/Users/XXX"代表当前用户主目录,我是在自己主目录下建了一个 Dev 目录,各种开发工具都放在里面,下文中的路径请根据自己实际目录作调整) 

1、这里使用官网的tar.gz包,然后解压到 /Users/XXX/Dev/mysql 目录下 

2、在 /Users/XXX/Dev/mysql/data 下新建目录 data1 和 data2 

3、初始化数据库,在 terminal 执行如下shell : 

Java代码  收藏代码
  1. cd /Users/XXX/Dev/mysql  
  2. ./script/mysql_install_db --datadir=./data/data1  
  3. ./script/mysql_install_db --datadir=./data/data2  


4、mac下mysql默认是不需要 my.cnf 的,所以需要在 /Users/XXX/Dev/mysql 下新建 my.cnf 内容如下: 

Java代码  收藏代码
  1. [mysqld_multi]  
  2. mysqld = /Users/XXX/Dev/mysql/bin/mysqld_safe  
  3. mysqladmin = /Users/XXX/Dev/mysql/bin/mysqladmin  
  4. user = root  
  5. #password = root  
  6.   
  7. [mysqld1]  
  8. port      = 3307  
  9. socket    = /tmp/mysql.sock1  
  10. pid-file=/Users/XXX/Dev/mysql/data/data1/db-app1.pid  
  11. log=/Users/XXX/Dev/mysql/data/data1/db-app.log  
  12. datadir = /Users/XXX/Dev/mysql/data/data1  
  13. basedir = /Users/XXX/Dev/mysql  
  14. user = root  
  15.   
  16. [mysqld2]  
  17. port = 3308  
  18. socket = /tmp/mysql.sock2  
  19. pid-file = /Users/XXX/Dev/mysql/data/data2/db-app2.pid  
  20. log=/Users/XXX/Dev/mysql/data/data2/db-app.log  
  21. datadir = /Users/XXX/Dev/mysql/data/data2  
  22. basedir = /Users/XXX/Dev/mysql  
  23. user = root  
  24.   
  25. [mysqldump]  
  26. quick  
  27. max_allowed_packet = 16M  
  28.   
  29. [mysql]  
  30. no-auto-rehash  
  31.   
  32. [isamchk]  
  33. key_buffer = 128M  
  34. sort_buffer_size = 128M  
  35. read_buffer = 2M  
  36. write_buffer = 2M  
  37.   
  38. [myisamchk]  
  39. key_buffer = 128M  
  40. sort_buffer_size = 128M  
  41. read_buffer = 2M  
  42. write_buffer = 2M  
  43.   
  44. [mysqlhotcopy]  
  45. interactive-timeout  



5、手动启动/关闭实例的命令(这里做测试用,后期改为自动启动将命令改为脚本执行) 

启动: 

Java代码  收藏代码
  1. /Users/XXX/Dev/mysql/bin/mysqld_multi --defaults-file=/Users/XXX/Dev/mysql/my.cnf start 1-2   


注意:有些文章讲的是 –config-file ,但在5.5的版本里,已经没有该选项了。 
起动时,会报找不到my_print_defaults。需要在PATH中添加bin目录。 

关闭: 

Java代码  收藏代码
  1. /Users/XXX/Dev/mysql/bin/mysqld_multi --defaults-file=/Users/XXX/Dev/mysql/my.cnf stop 1-2   


或者 

Java代码  收藏代码
  1. /Users/XXX/Dev/mysql/bin/mysqladmin -uroot -h 127.0.0.1 -P 3306 shutdown  


其实mysqld_multi就是通过mysqladmin来实现关闭实例的。 

Java代码  收藏代码
  1. ############## 环境变量设置方法1 #################  
  2. 打开shell后, 默认在$HOME目录下  
  3. 键入: vi .bash_profile 回车, 编辑.bash_profile文件  
  4. 按i进入插入文字编辑模式  
  5. 找到设定PATH环境变量的一行,将你要添加的完整路径(如:/Users/XXX/Dev/mysql/bin)加入其中。如果没有找到设定PATH变量的行, 你可以自己添加一行:  
  6.   
  7. export PATH=${PATH}:/Users/XXX/Dev/mysql/bin  
  8. ############ 环境变量设置方法2(推荐) ##############  
  9. 在 /etc/paths.d 建立一个文件专门表示mysql的path  
  10. 1)浏览到 /etc/paths.d :  
  11. cd /etc/paths.d  
  12. 2)创建文件:  
  13. sudo vi mysql  
  14. 3)编辑模式下输入:  
  15. /Users/XXX/Dev/mysql/bin  
  16. 4)可以在terminal下输入以下命令验证是否生效:  
  17. echo $PATH  


6、修改root密码 

Java代码  收藏代码
  1. mysqladmin -u root -h 127.0.0.1 -P 3307 password [yourpassword]  
  2. mysqladmin -u root -h 127.0.0.1 -P 3308 password [yourpassword]  




=================到这里mysql配置完毕,开始设置开机自动启动===================== 

主要做法是将脚本加入到StartupItems 

1.首先,要放到 /Library/StartupItems 下的自定义启动项必须是一个目录,然后再把脚本放到目录下,而且脚本与目录必须同名,以启动项命名为 MysqlMulti 为例 
terminal下执行: 

Java代码  收藏代码
  1. cd /Library/StartupItems  
  2. sudo mkdir MysqlMulti  


2.创建启动脚本 
创建脚本文件: 

Java代码  收藏代码
  1. sudo vi /Library/StartupItems/MysqlMulti/MysqlMulti   


编辑模式下输入以下内容: 

Java代码  收藏代码
  1. #!/bin/sh  
  2.   
  3. # Source common setup, including hostconfig.  
  4. #  
  5. . /etc/rc.common  
  6.   
  7. StartService( )  
  8. {  
  9.     ConsoleMessage "Starting MySQL"  
  10.     /Users/XXX/Dev/mysql/bin/mysqld_multi --defaults-file=/Users/XXX/Dev/mysql/my.cnf start 1-2  
  11. }  
  12.   
  13. StopService( )  
  14. {  
  15.     ConsoleMessage "Stopping MySQL"  
  16.     /Users/XXX/Dev/mysql/bin/mysqld_multi --defaults-file=/Users/XXX/Dev/mysql/my.cnf stop 1-2  
  17. }  
  18.   
  19. RestartService( )  
  20. {  
  21.     ConsoleMessage "Restarting MySQL"  
  22.     StopService  
  23.     StartService  
  24. }  
  25.   
  26. RunService "$1"  



3.启动脚本描述、参数 
创建描述文件: 

Java代码  收藏代码
  1. sudo vi /Library/StartupItems/MysqlMulti/StartupParameters.plist   


编辑模式下输入: 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">  
  3. <plist version="0.9">  
  4.     <dict>  
  5.         <key>Description</key>  
  6.         <string>MysqlMulti</string>  
  7.         <key>OrderPreference</key>  
  8.         <string>Late</string>  
  9.         <key>Provides</key>  
  10.         <array>  
  11.                 <string>Launch mysql at startup</string>  
  12.         </array>  
  13.     </dict>  
  14. </plist>  



至此,使用ls命令你将看到: 

Java代码  收藏代码
  1. $ls /Library/StartupItems/MysqlMulti/  
  2. MysqlMulti               StartupParameters.plist  



4.修改权限 

Java代码  收藏代码
  1. sudo chown -R root:wheel /Library/StartupItems/MysqlMulti  
  2. sudo chmod -R 755 /Library/StartupItems/MysqlMulti  


5. 
当设置完成后,可以在终端上用SystemStarter 来调试配置的信息 
命令为:SystemStarter -n -D 
根据提示的信息可以查看配置的问题。 

6.启动时可能提示: 
WARNING: my_print_defaults command not found. 
Please make sure you have this command available and 
in your path. The command is available from the latest 
MySQL distribution. 

查看 /Users/XXX/Dev/mysql/support-files/mysql.server 发现以下注释: 

Java代码  收藏代码
  1. # If you install MySQL on some other places than /usr/local/mysql, then you  
  2. # have to do one of the following things for this script to work:  
  3. #|  
  4. # - Run this script from within the MySQL installation directory  
  5. # - Create a /etc/my.cnf file with the following information:  
  6. #   [mysqld]|  
  7. #   basedir=<path-to-mysql-installation-directory>  
  8. # - Add the above to any other configuration file (for example ~/.my.ini)  
  9. #   and copy my_print_defaults to /usr/bin  
  10. # - Add the path to the mysql-installation-directory to the basedir variable  
  11. #   below.  
  12. #  
  13. # If you want to affect other MySQL variables, you should make your changes  
  14. # in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files.  


原来 my_print_defaults 需要拷贝到 /usr/bin ,干脆使用更方便的软连接: 

Java代码  收藏代码
  1. sudo ln -s ~/Dev/mysql/bin/my_print_defaults /usr/bin/my_print_defaults  


问题解决

posted on 2012-02-18 22:25  针尖上的舞者  阅读(2215)  评论(0)    收藏  举报