Mac Pro下卸載安裝Mysql

來源:互聯網
上載者:User

標籤:

Mac Pro下卸載安裝Mysql

系統版本:OS X 10.11.5

昨天為了修改我的Mysql密碼,找了一堆教程在不明所以的情況下各種亂試,終於把我的mysql玩脫了,走上了曲折的mysql重裝之路。

一、Mac 關於Mysql的卸載:

如使用brew安裝brew uninstall mysql 或者 brew remove mysql

但是又有點怕某些東西沒有卸載完全影響到下一次的安裝(我第一次重裝就是這樣的??)以下是完整一點的手動卸載

  • sudo rm /usr/local/mysql
  • sudo rm -rf /usr/local/mysql*
  • sudo rm -rf /Library/StartupItems/MySQLCOM
  • sudo rm -rf /Library/PreferencePanes/My*
  • rm -rf ~/Library/PreferencePanes/My*
  • sudo rm -rf /Library/Receipts/mysql*
  • sudo rm -rf /Library/Receipts/MySQL*
  • sudo rm -rf /var/db/receipts/com.mysql.*

參考:How do you uninstall MySQL from Mac OS X?

其實不同的安裝方式有些東西的儲存位置不一樣,刪除完檢查一下一些問檔案是否刪除了,沒有的話則刪除掉:

  • /usr/local/Cellar 裡的mysql檔案
  • /usr/local/var 裡的mysql檔案
  • /tmp 裡的mysql.sock, mysql.sock.lock, my.cnf檔案
  • pid檔案和err檔案都在/usr/local/var/mysql裡確保刪除了
  • brew安裝的安裝包儲存在/usr/local/Library/Cache/Homebrew也可以一併刪除
  • 執行brew cleanup
二、各種檔案的作用

此次卸載安裝的過程中,感悟最深的還是對很多檔案的作用都不甚瞭解,導致到出了什麼問題就只會沿著那個問題找答案,有時候找到的答案有作用時候找到的答案就會很坑,所以就想瞭解一些那些檔案究竟是什麼作用

安裝過程中最常見的問題:

ERROR!The server quit without updating PID file (/usr/local/var/mysql/***MacBook-Pro.local.pid)

(一)Pid檔案:

記錄==當前Mysql進程的Process ID==。未指定 pid 檔案時,pid 檔案預設名為 主機名稱.local.pid,存放的路徑在預設MySQL的資料目錄。通過mysqld_safe啟動MySQL時,mysqld_safe會檢查pid檔案,如果pid檔案不存在,不做處理;如果檔案存在,且 pid 已佔用則報錯A mysqld process already exists,如果檔案存在,但 pid 未佔用,則刪除 pid 檔案。

mysqld 啟動後會通過create_pid_file函數建立 pid 檔案,通過getpid()擷取當前進程 pid 並將 pid 寫入 pid 檔案

因此,通過mysqld_safe啟動時, MySQL pid檔案的作用是:在資料檔案是同一份,但連接埠不同的情況下,防止同一個資料庫被啟動多次。

?  / ll /usr/local/var/mysql/SarahMacBook-Pro.local.pid-rw-r-----  1 sarah  admin     6B  5 19 17:55 /usr/local/var/mysql/SarahMacBook-Pro.local.pid?  / ps -ef | grep mysql | grep -v grep  501 65673     1   0 四05下午 ??         0:00.02   /bin/sh   /usr/local/opt/mysql/bin/mysqld_safe  --bind-address=127.0.0.1  --datadir=/usr/local/var/mysql  501 65767 65673   0 四05下午 ??         0:52.44   /usr/local/Cellar/mysql/5.7.12/bin/mysqld   --basedir=/usr/local/Cellar/mysql/5.7.12   --datadir=/usr/local/var/mysql   --plugin-dir=/usr/local/Cellar/mysql/5.7.12/lib/plugin   --bind-address=127.0.0.1   --log-error=/usr/local/var/mysql/SarahMacBook-Pro.local.err   --pid-file=/usr/local/var/mysql/SarahMacBook-Pro.local.pid?  / cat /usr/local/var/mysql/SarahMacBook-Pro.local.pid65767

參考:mysql pid檔案是什麼用途? 溫國兵 來源知乎

關於出現上述問題解決方案可參考:MySql server startup error ‘The server quit without updating PID file ‘ 或者 MySQL提示:The server quit without updating PID file問題的解決辦法 又或者

查看一些檔案的ownership:ls -laF /usr/local/var/mysql/ 非mysql或者本人的hostname則修改sudo chown -R mysql[或者hostname] /usr/local/var/mysql/

開啟同目錄下的與pid同名的.err檔案查看錯誤記錄檔查看錯誤,按照錯誤提示去找原因

(二)、錯誤記錄檔:

MySQL有四種類型的日誌:Error Log、General Query Log、Binary Log 和 Slow Query Log。

  1. 錯誤記錄檔,記錄MySQL運行過程ERROR,WARNING,NOTE等資訊,系統出錯或者某條記錄出問題可以查看ERROR日誌。存放在與pid檔案同目錄下,預設為主機名稱.local.err或在Mysql中查詢mysql> show variables like ‘log_error’; 可以在/etc/my.cnf中添加--log-error[=file_name]選項來開啟mysql錯誤記錄檔
  2. 日常作業記錄,記錄MySQL運行中的每條請求資料。在/etc/my.cnf中添加 general-log-file[=file_name]
  3. 二進位日誌,包含了一些事件,這些事件描述了資料庫的改動,如建表、資料改動等,也包括一些潛在改動,主要用於備份恢複、復原等操作。
  4. 慢查詢日誌,用於MySQL效能調優。

其餘的查看設定方法請參考MySQL日誌分析

(三)、/etc/my.cnf檔案:

my.cnf檔案是Mysql的設定檔。當Mysqld啟動服務時預設會按照一定順序讀設定檔,遵循指定優於配置,後讀取的配置覆蓋前面讀取的配置的原則,則mysql會以讀取到的最後一個設定檔為準。

查看mysql讀取順序:

?  ~ mysqld --help --verbose | grep -A 10 ‘Usage:‘Usage: mysqld [OPTIONS]Default options are read from the following files in the given order:/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnfThe following groups are read: mysqld server mysqld-5.7The following options may be given as the first argument:--print-defaults        Print the program argument list and exit.--no-defaults           Don‘t read default options from any option file,                        except for login file.--defaults-file=#       Only read default options from the given file #.--defaults-extra-file=# Read this file after the global files are read.

假如不存在該檔案:

在試過的幾種安裝方法,最後都沒有在這幾個檔案夾裡找到該檔案,在安裝目錄下的support-files找到了安裝mysql時的預設設定檔,複製過去,然後修改其中的一些配置,再重啟。

sudo cp /usr/local/Cellar/mysql/5.7.12/support-files/my-default.cnf /etc/my.cnf

然後就可以很方便的啟動停止mysql了(這個指令碼其實是調用了mysqld_safe指令碼,然後mysqld_safe再調用二進位檔案 mysqld):/etc/init.d/mysql start

有可能在設定/etc/my.cnf檔案運行之後沒有作用,查看一下讀取順序後的那幾個檔案是否存在,如果存在的話,刪除掉再重啟。{轉自:mysql 重啟不讀取 /etc/my.cnf 全域配置問題

設定檔中一些參數:

[mysql]#prompt="(\\u:hostname:\D)[\\d]> "  這樣使用mysql -uroot -p串連到mysql伺服器時,就會顯示(root:hostname:Thu Feb  9 16:32:26 2012)[(none)]>[client]使用者告訴用戶端工具mysql串連資料庫伺服器使用的port和socket檔案的路徑[mysql]用於設定用戶端工具的顯示資訊,如在my.cnf中設定port = 3306 //mysql服務運行時的連接埠號碼,預設為3306password = your_password //mysql的密碼socket = /tmp/mysql.sock //socket檔案存放地址basedir = /usr/local/Cellar/mysql //根目錄(安裝目錄)datadir = /usr/local/var/mysql  //資料檔案目錄pid-file = /usr/local/var/mysql/your_pid_file_name  //pid檔案存放的地址log-error = /usr/local/varr/mysql/your_err_file_name.log //err檔案存放地址

其他一些參數可查看:Mysql設定檔my.cnf配置及配置參數詳解 或者 Mysql 之設定檔my.cnf

(四)、mysql.sock檔案:

mysql有兩種串連方式:

  1. TCP/IP
  2. socket

server和client在同一台伺服器(host),並且使用localhost進行連結的時候,就會使用socket作為通訊協議的載體來進行串連,它比tcp快。也就是:為主機名稱為localhost建立的MySQL串連,該串連過程通過一個通訊端檔案mysql.sock實現的。所以該檔案被刪後,用localhost使用者是串連不到MySQL伺服器的。

如果出現:
Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘

  • 查看下該檔案是否存在,或者運行mysql.server start或者/usr/local/Cellar/mysql/5.7.12/support-file/mysql.start[你的安裝目錄裡的support-file]再查看一下該檔案是否存在
  • 假如/tmp/mysql.sock不存在,必須建立一條tcp/ip串連,即使用127.0.0.1而不是localhost作為-h的參數去串連MySQL伺服器,如:mysqladmin -h 127.0.0.1 -u root -p shutdown,強制地建立一條tcp/ip串連,關閉MySQL伺服器,再重新以localhost為主機名稱啟動MySQL伺服器,它就會重新建立一個通訊端檔案。轉自:mysql.sock的作用
  • 假如/tmp/mysql.sock存在,查看一下mysqld的運行狀態mysqld status啟動它,查看是否是許可權問題ls -laF /usr/local/var/mysql/[安裝的datadir]如果非host則修改許可權sudo chown -R mysql[或者hostname] /usr/local/var/mysql/ 然後再重啟一下mysql, 如果還不起作用可以修改/etc/my.cnf 看[mysqld]下的socket路徑socket=/usr/local/var/mysql/mysql.sock,重啟mysql

mysql.sock.lock這個檔案是用來檢測是否已經安裝的

lsof -i:3306查看連接埠 kill -9 PID殺掉進程

(五)、mysqld,mysql_safe,mysql_client,mysql_server:

MySQL在整個網路環境中使用用戶端/伺服器(Client/Server)架構運行。其核心程式扮演著伺服器角色,而各個用戶端程式串連到伺服器並提出請求。

MySQL Server或者說mysqld,實際上是一個資料庫伺服器程式。它管理著對磁碟資料庫和記憶體的訪問,是mysql核心程式,產生管理資料庫執行個體、資料庫執行個體任務調度線程,並提供相關介面供不同用戶端調用.MySQL Server進行多線程操作,它支援多個用戶端串連的同時訪問。為了更好地管理資料庫內容,MySQL Server的特色架構模型支援多種儲存引擎以處理不同類型的表(例如,它同時支援事務和非事務表)。

server(伺服器)host(主機)的用詞區別。Server是指軟體(MySQL Server程式mysqld)。Server的特徵中有它的版本號碼,指的是哪些特性包括,哪些不包括等。而host是指==server程式運行所在的物理機==。Host的特徵中包括了硬體設定,所啟動並執行作業系統,其網路地址等等。一個host可以有多個mysqld執行個體在上面同時運行

mysql-client:操作資料庫執行個體的工具,操作mysql執行個體的用戶端有很多,mysql-client只是其中一種,包括mysql,mysqldump,mysqlslap,這些訪問,備份,壓力測試的工具。用戶端程式被用於和server進行通訊以修改伺服器端server管理的資料庫資訊。

mysql-servermysql-client是DBMS的兩個面向不同操作對象的工具。server是DBMS面向物理層次,包含儲存資料的一系列機制、處理方法的整合;client是DBMS面向使用者,提供一系列工具為使用者所用,這些工具包括通常寫的sql在內都要通過server的編譯才能操作物理資料。參考:Mysql用戶端/伺服器

mysqld_safe在Unix和NetWare中推薦使用mysqld_safe來啟動mysqld伺服器。mysqld_safe增加了一些安全特性,例如當出現錯誤時重啟伺服器並向錯誤記錄檔檔案寫入已耗用時間資訊

三、mysql安裝(一)使用brew安裝
  • brew update //更新
  • brew install mysql //安裝mysql,注意查看此安裝過程中出現的資訊
?  ~ brew install mysql/* * 下載安裝,一開始安裝的都沒有密碼,需要運行mysql_secure_installation做些設定,裡面就會設定密碼 */==> Downloading https://homebrew.bintray.com/bottles/mysql-5.7.12.el_capitan.bot######################################################################## 100.0%==> Pouring mysql-5.7.12.el_capitan.bottle.tar.gz==> /usr/local/Cellar/mysql/5.7.12/bin/mysqld --initialize-insecure --user=sarah --b==> CaveatsWe‘ve installed your MySQL database without a root password. To secure it run:    mysql_secure_installationTo connect run:    mysql -urootTo have launchd start mysql now and restart at login:  brew services start mysqlOr, if you don‘t want/need a background service you can just run:  mysql.server start

這種是沒出現什麼問題的安裝,接下來執行mysql_secure_installation 按照它裡面的提示去設定,設定完就可以直接運行了。接下來說說我遇到的坑

使用Brew安裝mysql時出現的問題:

  • 在brew執行install mysql之後會出現一系列的安裝資訊,出現一個Error,查看到了ERROR的內容:
==> Pouring mysql-5.7.12.el_capitan.bottle.tar.gzError: The `brew link` step did not complete successfullyThe formula built, but is not symlinked into /usr/localCould not symlink lib/libmysqlclient.20.dylib/usr/local/lib is not writable.You can try again using:  brew link mysql

執行brew link mysql

?  ~ brew link mysqlLinking /usr/local/Cellar/mysql/5.7.12...Error: Could not symlink lib/libmysqlclient.20.dylib/usr/local/lib is not writable. //這個檔案夾不可寫

修改許可權:

?  ~ sudo chown -R $(whoami) /usr/local/lib/Password:?  ~ brew link mysqlLinking /usr/local/Cellar/mysql/5.7.12... 93 symlinks created

問題解決,接下來只需要執行mysql_secure_installation去設定密碼就行

  • 尋找到的一些homebrew安裝mysql的方法參考:OSX下使用Homebrew安裝MySQL資料庫 或者 MySQL安裝 但是需要注意的是,這兩個安裝教程裡面在初始化資料庫的時候可能是因為mysql版本的更新,應該更改為:unset TMPDIR –> mysqld -initialize --verbose --user=whoami --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp 假如在安裝過程中遇到其他例如pid或者mysql.sock的問題可以參考前面介紹的那些問題解決方案。

(二)使用.tar.gz

安裝包

//解壓到安裝目錄 /usr/local/mysql//將解壓後的包移動到安裝目錄下sudo mv mysql-5.7.12-osx10.11-x86_64 /usr/local/mysql//更改mysql安裝目錄所屬使用者與使用者組(許可權)cd /usr/local sudochown -R root:wheel mysql//完成一些預設的初始化,執行完下面這一步會出現一個臨時的密碼,請儲存好這密碼以便修改密碼sudo bin/mysqld --initialize --user=mysqlcd /usr/local/mysql  sudo support-files/mysql.server start //啟動 sudo support-files/mysql.server restart  //重啟sudo support-files/mysql.server stop //停止sudo support-files/mysql.server status //檢查 MySQL 運行狀態//修改密碼,輸入上面給的密碼mysqladmin -u root -p舊密碼 password 新密碼

轉載自:mac 安裝 mysql.tar.gz

(三)dmg安裝mysql試過了很多遍但是一直失敗??所以最後就放棄掙紮了

==以上內容很多解決辦法和各檔案介紹整理自網路,能找到出處的一般都是摘自後面的連結==

Mac Pro下卸載安裝Mysql

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.