萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> ubuntu下如何編譯安裝第二個mysql數據庫

ubuntu下如何編譯安裝第二個mysql數據庫

今天遇到一個這樣子的問題:因為ubuntu版本的linux系統已經有一mysql數據庫了,但是我們還要自己編譯一個mysql,如何讓linux上共存兩個mysql呢?來看看下面的文章。

我的系統上已經有一個mysql了,再編譯一個mysql,最麻煩的地方不在於編譯,而是讓兩個共存。

前面的編譯環節和普通安裝沒有什麼區別,還是configure,make,make install。其中configure的時候,選擇一下安裝的位置,否則可能導致原來的文件被覆蓋(使用–prefix選項)。我的破電腦make的時候花了不少時候(具體多少我也不清楚,開始編譯之後就去吃飯了),安裝好之後,按照mysql的手冊復制support-files/my-medium.cnf到安裝目錄裡面的var目錄下(沒有安裝數據庫的時候這個文件夾不存在,自己在安裝根目錄下創建一個),然後修改裡面的客戶端通信使用的socket文件的名字sed -i -e ‘s/mysql.sock/mysql1.sock/’ /opt/mysql/var/my.cnf,這裡把socket文件改成了mysql1.sock(原來的mysql默認的socket文件是mysql.sock,不修改會導致兩個socket文件沖突)。如果要同時通過網絡監聽,可能還需要修改裡面的監聽端口,反正我只是當成作業演示一下,所以監聽端口就沒有修改。

後面的操作和手冊上一樣,偷懶了下,沒有導出環境變量,所以要輸入絕對路徑。先改變了文件夾的擁有者,然後就用mysql_install_db –user=mysql創建了數據庫(這裡要防止使用原來PATH下的mysql程序)。最後啟動mysql,mysqld_safe –user=mysql &(還是一樣,注意不要用原來mysql的程序)。

這時,新的mysql已經啟動,可以用mysql命令連接了(好像這裡還是要用新的那個),創建了個數據庫,測試了一下一切ok,沒有對以前的mysql有影響。

關鍵點就是mysql的配置文件my.cnf文件要復制到mysql安裝目錄的var文件夾下(mysql用來保存數據庫文件的文件夾),這樣這個配置文件只對該服務器有效,不會影響到系統中默認的/etc下的那個配置文件。為了防止兩個mysqld的監聽沖突,最好修改配置文件裡面的socket和監聽端口(如果通過網絡連接)。

在ubuntu上配置出現問題了。ubuntu好像不會用新的配置文件替換全局配置文件(mysql讀取配置文件順序是/etc/my.cnf->數據庫安裝目錄/my.cnf->個人主目錄/.my.cnf)所以在創建數據庫(使用mysql_install_db)時,仍然需要指定my.cnf文件路徑(使用–defaults-file選項)。在啟動數據庫時也同樣需要。使用mysql命令連接數據庫時,也需要指定連接的socket文件,或者my.cnf文件。

如果在安裝數據庫時出現unknown option ‘–skip-federated’,直接把自己的那份my.cnf文件裡的skip-federated行注釋。

copyright © 萬盛學電腦網 all rights reserved