CentOS 安裝多個mysql實例

在CentOS或者就通常Linux版本而言, 安裝mysql一般會採用兩種方式:mysql

  1. 經過make install 編譯source codesql

  2. 經過相似yum install mysql-server 或者 apt-get install mysql-server這樣的系統commandsshell

其實歸根揭底都是一個目的,安裝成功,可以使用。無非編譯源碼,須要手動配置一些文件而已。然而,通常狀況下在安裝完mysql後都會遇到如下兩個問題,不過解決起來也很easy。vim

  • 遠程登陸服務端的mysql安全

    要遠程登陸mysql,必須爲登陸的用戶受權.這樣就須要先在服務端登陸mysql,廢話少說,仍是直接用command說話,固然此處本人mysql用戶名和密碼:root/root服務器

  • mysql -h127.0.0.1 -uroot -proot
  • grant all privileges on *.* to root@"%" identified by "password" with grant option;
    flush privileges;
  • 防火牆開着,第一個問題解決了依然訪問不了。微信

  • 針對這個問題,最直接的方法就是socket

  • service iptables stop

    然而在某些狀況下,這個不該該稱之爲解決方法。由於防火牆自由它的用途不能由於某一個程序的訪問而關掉整個服務器的防火牆,豈不是要下降Server端的安全性,那就只開放須要的端口唄。經過vi/vim編輯器打開位於/etc/sysconfig下的iptables文件,編輯下添加如下內容保存便可編輯器

  • -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 3306 -j ACCEPT
  • service iptables restart

    Ok,能夠遠程訪問了。ide



到此,mysql算是安裝完了。可是項目要求是多個mysql又窮的只有一臺Server。怎麼辦?有人說技術不是問題,確實在某些狀況下如此,世界如此之大,我等草民又怎麼可能那麼容易遇到一個史無前例的問題呢。辦法以下兩個:

  1. 採用了編譯源碼的人最可能選擇的方法

    既然已經編譯安裝成功一個那就繼續copy下source code folder,make install 完了後編輯mysql的配置文件my.cnf給指定個非3306的端口,再啓動一個。看上去也很容易。what a pity!  時間是最難得的,須要的實例越多,編譯的越多,傷不起。仍是看下下一個方法吧,懶人自由懶辦法。

  2. 採用了懶辦法,使用系統命令安裝的人對應的辦法

    首先找到mysql安裝後位於/var/lib下的mysql文件夾。沒錯就是它,須要幾個就複製幾個,固然命名上仍是規範點利於本身的配置。此處舉一下幾個例子

  3. cp -r /var/lib/mysql /var/lib/mysql3307
    cp -r /var/lib/mysql /var/lib/mysql3308

        這裏不得不提醒須要受權給mysql以上兩個新文件夾的權限

chown -E mysql mysql3307
chown -R mysql mysql3308

        

接下來去編輯位於/etc下的my.cnf

[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
#user       = mysql

[mysqld1]
socket     = /var/lib/mysql/mysql.sock
port       = 3306
pid-file   = /var/lib/mysql/mysql.pid
datadir    = /var/lib/mysql
user       = mysql

[mysqld2]
socket     = /var/lib/mysql3307/mysql.sock
port       = 3307
pid-file   = /var/lib/mysql3307/mysql.pid
datadir    = /var/lib/mysql3307
user       = mysql

[mysqld3]
socket     = /var/lib/mysql3308/mysql.sock
port       = 3308
pid-file   = /var/lib/mysql3308/mysql.pid
datadir    = /var/lib/mysql3308
user       = mysql

配置結束,啓動全部mysql

mysqld_multi start

檢測是否都啓動了

mysqld_multi report

結果

mysql is running
mysql3307 is running
mysql3308 is running

大功告成,若是遠程沒法訪問,照着文章開始那樣對應着作就能夠了。

Help

如有疑問可微信掃描下列二維碼並關注留言

相關文章
相關標籤/搜索