MySQL 安裝 (不需root權限的安裝方法)

在一臺服務器上安裝多個Mysql,每個帳號可以有,也可以沒有。而且一個帳號可以安裝多個Mysql。但帳號沒有root權限,不能使用軟件包來安裝(需要root權限)

方法:

  1. http://www.mysql.com/downloads/mysql/5.1.html#downloads上面下載Mysql5.1版本 (高於5.1的版本需要別的工具來安裝,不建議,因爲大多數host不會預先安裝上的)
  2. 進入mysql-version目錄下
  3. ./configure --prefix=$HOME/usr/local/mysql    (prefix選項是指你要安裝到的路徑)//主要就是這個選項:其他可以暫時不管,這個選項可以保證能正常啓動了(configure中可能出現一個con't rm 某文件的的提示,不用管)
  4. make
  5. make install (過程中會出現一小段停頓,be patient!)
  6. 到這步,就已經完成了Mysql安裝的第一部分。接着
  7. 一般來說,如果我們是第一個安裝Mysql的用戶,我們可以在/etc/my.cnf下配置Mysql。但是,因爲目前服務器上已經有多個Mysql實例了,而且,我們沒有root權限,因此,我們只能在自己目錄下配置my.cnf。將mysql提供給我們的經典配置文件拷貝到自己的目錄下,運行命令:
  8. cd $HOME/usr/local/mysql/
    cp share/mysql/my-huge.cnf my.cnf
  9. 修改my.cnf文件。一般來說,我們要修改端口號和socket【Socket是Mysql服務器用來與外來程序交互的socket文件,每一個Mysql服務器只能有一個】
    修改的範例如下:
    [client]
    port            = 7780
    socket          = /home/liaoqiqi/tmp/mysql.sock (sock文件和server的sock是一個文件,這個mysql.sock應該是mysql的主機和客戶機在同一host上的時候,使用unix domain socket做爲通訊協議的載體,它比tcp快。好像是個管道文件,這裏端口號一樣沒問題,因爲本機通訊走的是管道,不知道具體怎麼實現的,但可以另外指定)
    [mysqld]
    port            = 7780
    socket          = /home/liaoqiqi/tmp/mysql.sock
  10. Mysql有兩種連接方式:
    (1),TCP/IP
    (2),socket
    對mysql.sock來說,其作用是程序與mysqlserver處於同一臺機器,發起本地連接時可用。
    例如你無須定義連接host的具體IP得,只要爲空或localhost就可以。
    在此種情況下,即使你改變mysql的外部port也是一樣可能正常連接。
    因爲你在my.ini中或my.cnf中改變端口後,mysql.sock是隨每一次 mysql server啓動生成的。已經根據你在更改完my.cnf後重啓mysql時重新生成了一次,信息已跟着變更。
    socket文件是unix下進程間通信用的,mysql.sock就是客戶端連接與mysql間通信用的socket文件,只能本機使用,遠程連接要通過tcp/ip了

  11. basedir=/安裝的路徑/mysql 
    datadir=/安裝的路徑/mysql/var 

  12. 在上面的兩步操作中,我們已經配置好了我們自己的Mysql的配置文件,包括它的端口號和Socket。下面,我們來安裝本地數據庫。
  13. 安裝Mysql默認的本地數據庫及表格
    cd $HOME/usr/local/mysql/bin
    ./mysql_install_db --defaults-file=~/usr/local/mysql/my.cnf //需要安裝數據庫,否則啓動server會失敗,因爲server要讀取數據庫中內容,注--user 選項指定Server的啓動者,所有文件系統的文件屬於該用戶(注:和Mysql的數據庫權限不同,兩個機制是獨立的,--defaults-file參數要放到所有參數之前,否則可能會報錯)
  14. 安裝了數據庫默認的一些表後,現在,我們可以啓動Mysql服務了:
    cd $HOME/usr/local/mysql/
    nohup ./mysqld_safe  --defaults-file=~/usr/local/mysql/my.cnf & 少了連個選項:可以添加在:--log-error,--pid-file=分別指定系統運行日誌(非事務日誌)和進程號文件(在my.cnf中的[mysqld_safe]的塊中加,defaults-file必須通過命令行指定,不能寫到配置文件裏),注,log-err不指定文件的話爲.err(可以讀取該文件看到底哪裏有問題),--pid-file要預先創建?兩個選項也可以添加在my.cnf中嗎?
  15. 在成功啓動Mysql服務後,我們可以用Mysql客戶端來連接它了。但是,我們要先初始化密碼。
    $HOME/usr/local/mysql/bin/mysqladmin –uroot  password 123456 //否則數據庫中沒有root 用戶,也沒有人擁有權限) -uroot=-u root
    然後,我們可以用客戶端來連接它了:
    $HOME/usr/local/mysql/bin/mysql -P 7780 –uroot  -p
  16. 接着,我們可以新建一個用戶,併爲他授予權限。如:
    create user dnweb identified by '123456'
    grant all privileges on *.* TO 'dnweb'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; "%"號 要在引號內。
    flush privileges;
  17. 停止Mysql服務的方法:
    mysqladmin -uroot -p shutdown -S /home/liaoqiqi/tmp/mysql.sock

進階閱讀:爲Mysql提供擴展,安裝Python-Mysql:

  • 請安裝MySQL-python-1.2.3.tar.gz
  • 將它配置在Linux環境中:
    修改~/.bash_profile文件,將$HOME/usr/local/mysql/lib/mysql/添加到 $LD_LIBRARY_PATH 環境變量中。
    source ~/.bash_profile

Reference

  1. 請問如何查看mysql 的端口號? mysql> show variables like'port'
  2. 可能的錯誤:_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
  3. 可能的錯誤:[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
  4. 可能的錯誤:error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory.
  5. 關閉mysql服務的正確方法 
    ./mysqladmin -uroot -p shutdown
  6. 查看mysql所對應的socket的位置:netstat -ln | grep mysql
  7. 官方的Mysql客戶端連服務器端出錯問題解析 5.4.7. Causes of Access-Denied Errors 

轉載請註明: 轉載自Knight.Liao's Tale
本文鏈接地址: 非root權限安裝Mysql



發佈了29 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章