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)系統的時候用到。
- 啟動mysql服務器:./mysqld_safe --defaults-file=/etc/my.cnf --user=root &
- mysqld_safe是一個啟動腳本,該腳本會調用mysqld啟動,如果啟動出錯,會將錯誤信息記錄到錯誤日志中,mysqld_safe啟動mysqld和monitor mysqld兩個進程,這樣如果出現mysqld進程異常終止的情況,mysqld_safe會重啟mysqld進程。
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 ,那我想着就要改一下。