裝個Mysql怎么就這么難?


  2020/5/20

程序員是沒有女朋友的~~

聲明:這篇文章是我第一次安裝MySQL,主要記錄了安裝的艱辛過程,內容很凌亂,不適合作為參考。

CentOS 6.10安裝MySQL一直出問題,換了各種不同的版本,裝了又卸載,卸載了又繼續重裝,心累~~

問題一:最開始安裝的MySQL5.7.30,能夠順利安裝,但是在hive中配置了mysql驅動后,hive一直不能正常使用,不知道哪里出了問題,有可能是mysql權限的問題,一直解決不好。

    於是我想着換個版本低一點的MySQL試試。

問題二:換了個低版本的,啟動mysql服務,錯誤提示 ---->  mysqld :未被識別的服務。查了一下原因,是因為配置文件 /etc/init.d 中不存在 mysqld 命令。

    按照網上的解決辦法:1) 使用    “find  / -name mysql.server”  命令全盤搜索找到mysql.server 文件

              2)copy mysql.server  到  /etc/init.d  下,重命名為 mysqld。

    但是!!!

    

 

    什么也找不到~~

    我再查原因:

    

 

    顯示我根本就沒有安裝msyql。

    啥原因啊?我明明就用 rpm  -ivh Mysql-*****.rpm 安裝了呀!

    再查原因,說是 MySQL 里面的安裝文件是有依賴關系的,如果安裝順序不正確,文件無法正常安裝。媽蛋,那我重新安裝再試試。

    先說說安裝文件如下:

    

 

     其中 server 是服務器,client 是客戶端,devel是安裝PHP等依賴於Mysql的組件包。

    embedded是MySQL的嵌入式版本,shared是共享庫,shared-compat是為了兼容老版本的共享庫。test是測試組件。

    但是,我把上面的所有文件都安裝完了,使用 rpm -qa | grep mysql  命令,還是什么都找不到。

    繼續!

    原來是要用 rpm  -qa |grep  -i mysql  命令。算是可以找到文件了:

      

    原因是 Linux 區分大小寫,給 grep 命令加上 -i  匹配大小寫即可。

    其實,只需要安裝 server 和 client 即可。

 

看到很多MySQL的安裝教程,都是要先創建mysql用戶和用戶組,這是為啥呢?

首先,作為我個人學習而言,創建MySQL用戶和用戶組是可選的,非必要的,直接使用當前用戶也是ok的。

這樣做的目的是提高系統的安全性,當別人黑了你的數據庫的時候,別人得到的權限是這個mysql賬號,而不是root賬號。

 

 

作為一個初學者,剛開始學習就迎面襲來這么多問題,實在是太不友好了~~

但是,從這些大大小小的問題中,我感覺自己也一點一點地積累到了很多東西!

我覺得應該先熟悉一下MySQL的默認安裝路徑,找什么文件也方便一點:

 

    

Linux下MySQL啟動方式 了解一下:

    1) mysqld   

  • 啟動mysql服務器:./mysqld --defaults-file=/etc/my.cnf --user=root
  • 一般的,我們通過這種方式手動的調用mysqld,如果不是出去調試的目的,我們一般都不這樣做。這種方式如果啟動失敗的話,錯誤信息只會從終端輸出,而不是記錄在錯誤日志文件中,這樣,如果mysql崩潰的話我們也不知道原因,所以這種啟動方式一般不用在生產環境中,而一般在調試(debug)系統的時候用到。
    2)mysqld_safe 
  • 啟動mysql服務器:./mysqld_safe --defaults-file=/etc/my.cnf --user=root &
  • mysqld_safe是一個啟動腳本,該腳本會調用mysqld啟動,如果啟動出錯,會將錯誤信息記錄到錯誤日志中,mysqld_safe啟動mysqld和monitor mysqld兩個進程,這樣如果出現mysqld進程異常終止的情況,mysqld_safe會重啟mysqld進程。
    3) mysql.server
    service mysql.server    start  /  stop  /  status
    mysql.server 同樣是一個啟動腳本,調用mysqld_safe 腳本,它的執行文件在$MYSQL_BASE/share/mysql/mysql.server 和 support-files/mysql.server。

    4)mysqld_multi

    多實例啟動,配置不同的端口和配置文件。

 

繼續吧~~

    

 

    繼續報錯。

    

 

     說讓刪了 /var/lock/subsys/mysql  文件。但是還是不行:

    

 

 先不管了,先來了解一下什么是 PID文件吧!

    PID 即 Process ID,進程ID。MySQL pid 文件記錄的是當前mysqld 進程的pid。

     1、未指定pid文件時,pid文件默認名為   主機名.pid, 存放的路徑在默認 MySQL的數據目錄。通過mysqld_safe 啟動MySQL時,mysqld_safe 會檢查pid 文件,如果pid文件不存在,不做處理;如果文件存在且pid 已占用,則報錯 “ A   mysqld process already exists”;如果文件存在,但 pid 未占用,則刪除 pid 文件。

    2、查看 MySQL 的源碼可以知道,mysqld 啟動后會通過 create_pid_file 函數新建 pid 文件,通過 getpid() 獲取當前進程 pid 並將 pid 寫入 pid 文件。

    3、因此,通過 mysqld_safe 啟動時, MySQL pid 文件的作用是:在數據文件是同一份,但端口不同的情況下,防止同一個數據庫被啟動多次。

 

繼續~~這里補充一下 MySQL卸載的步驟:

    1)找到以rpm包安裝的MySQL

    

 

     2)rpm  -e  命令卸載。    --nodeps  去除依賴關系。

    

 

     3)查看殘余MySQL文件

    

 

     4)將這些文件刪除

    

在重新安裝 MySQL-server 的時候,發現報錯如下:

    

 

    說系統中已經存在了my.cnf 文件。那么my.cnf 文件是個什么文件呢?

    它是Linux中 Mysql 的配置文件,一般會在 /etc/my.cnf ,  /etc/mysql/my.cnf  

    既然新的配置文件被改成了 my-new.cnf  ,那我想着就要改一下。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM