[Mysql] 降版或使用 Mariadb

當一開始使用 brew install mysql 你就悲劇了
會下載最新版並開始安裝
以下指令得知當前下載哪一最新版本:

1
2
3
$ brew info mysql
>> mysql: stable 8.0.19 (bottled)
>> ....

降版的不歸路上有一種「壞路不能走的體悟」

大家都說
「要是一開始就避開最新版 version 8 就省去很多事!」
OS 吶喊
「一開始我就不知道阿~~~~~」
mysql@5.7 降版中,以下是你常見遇到的問題:

  • zsh: command not found: mysql

    • 這種問題很簡單,安裝完 mysql
    • 都會要你打印到 zsh file 複製以下這段到裡面即可
    • export PATH="/usr/local/opt/mysql@5.7/bin:$PATH
    • 參考 zsh: command not found: mysql
  • Access denied for user 'root'@'localhost'

    • 很標準權限問題
    • root 在過程中會重置到忘記要不要密碼?
    • 以及是否可以使用 root 登入?
  • The server quit without updating PID file

  • unknown variable 'mysqlx-bind-address=127.0.0.1'

    • 同上面那篇。
    • 將藏在 my.cnf 的這段註解掉或拿掉即可
  • Can't connect to local MySQL server through socket

Mysql 降版起因

為了可以使用蜜蜂罐 Sequel Pro

version 8 會直接 crash 一直轉要求送崩潰報告

為了要避開 mysql version 8

聽說太多不兼容,各個同事遇到不同的問題

同時要能透過 mysql -u root -p 登入

遇到能背景有啟動,但是就是上述其他問題,一直鬼打牆

第一步: fully remove mysql

有兩種
一種是降版無限地獄
一種是安裝 mariadb 安裝該穩定版
不過不外乎都要刪・乾・淨!

為了安裝 mysql@5.7 過程
發現簡單的 brew uninstall mysql
並不會完全移除 mysql 相關檔案
所以這邊要提醒一點,要移除乾淨!

可以參考這兩篇

我照上述第一個連結操作
並每一個資料夾一個一個逛
只要是 mysql 就二話不說,刪除!
最後在我鍥而不捨精神下,最後找到移除乾淨的重點!

  • /usr/local/opt 路徑下 mysql@5.7 是我最後下載正確的檔案,原本是 mysqlrm -rf mysql 刪不掉,跑 sudo rm -rf mysql 才成功刪除。

  • 移除根目錄的 mysql_history

  • 移除 zsh 檔案裡面的 mysql path

  • 務必重啟電腦

  • 開始安裝MySQL

安裝 Mysql@5.7

降版參考: operatino/MySQL_5-7_macOS.md
清除乾淨後,大致上幾個步驟

  1. 安裝

    1
    brew install mysql@5.7
  2. 輸出 path

    1
    echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
  3. 對 zsh 做重新載入

    1
    source ~/.zshrc
  4. 啟動 mysql@5.7

    1
    2
    brew service start mysql@5.7
    brew services list
  5. 檢查進程 ID 是否存在

    1
    ps -ax | grep mysql
  6. 登入

    1
    mysql -uroot

以上是我是過好幾遍的安裝流程
甚至還測試找一台空機重頭安裝
照著做直接無縫使用 Mysql@5.7
還是奉勸大家不要安裝錯誤阿~

OS: 要是與其花三天降版,不如直接整台電腦重新裝

安裝 mariadb

  1. 安裝 Homebrew 檢查更新 Homebrew

    1
    2
    # 安裝
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    1
    2
    3
    # 檢查更新
    brew doctor
    brew update
  2. 查 mariadb 穩定版並安裝

    查看版本
    1
    2
    brew info mariadb
    > mariadb: stable 10.4.13 (bottled)
    安裝
    1
    brew install mariadb
  1. 執行資料庫安裝程式

    1
    mysql_install_db
  1. mysql 啟動

    1
    2
    3
    mysql.server start
    > Starting MariaDB
    > SUCCESS!

    建議都透過 brew services 去啟動

    1
    2
    brew services stop mariadb
    brew services start mariadb

    也建議不要用 restart 指令
    要檢查 process id

    1
    2
    launchctl list | grep mariadb
    > 64804 0 homebrew.mxcl.mariadb
  2. 進入 mysql

    如果在第三步安裝時,不是使用 root 權限安裝
    則會創建兩個帳號,且會告知
    root 只能由 root 帳戶登入
    user 可以由 user 帳戶無密碼登入

    假如當前是 user 帳戶
    1
    2
    3
    4
    5
    # 則會遇到權限問題
    mysql -u root

    # 則可以直接登入
    mysql -u user

    接下來看個人設定,看專案 database 的設定檔

    1
    2
    username: root
    password:

    一般 mac 不會使用 root 帳號進行開發
    如果想使用 root 進行 databases 操作
    那就用 user 登入 mysql,再去改 root 密碼
    再填回設定檔,如下:

    登入改 root 密碼
    1
    2
    3
    4
    mysql -u user

    MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('YOURPWD');
    MariaDB [(none)]> FLUSH PRIVILEGES;
    1
    2
    username: root
    password: YOURPWD

    這邊提一下,我安裝的是 mysql 5.5 版本
    如果是5.7 可能設定密碼會需要參考此篇:
    Access Denied for MYSQL ERROR 1045

創建 Database

以 rails 專案為例,使用 rake 指令創建

1
2
3
rake db:create
rake db:migrate
rake db:migrate RAILS_ENV=test

跑 migrate 時,要是遇到類似以下的問題

1
usr/local/opt/mysql/lib/libmysqlclient.21.dylib

因為專案在使用 mysql 套件時
路徑預設是 usr/local/opt/mysql/lib/
但是我們裝的是 mysql@5.7
所以預設路徑是 usr/local/opt/mysql@5.7/lib/

以我的為例:

1
2
3
4
5
6
7
# 創建假的 mysql 資料夾
cd /usr/local/opt/
mkdir mysql

# 創建假的 lib 資料夾
cd mysql
mkdir lib
1
2
3
# sudo ln -s {mysql@5.7 libmysqlclient.dylib 檔案路徑} {上述要的路徑}

sudo ln -s /usr/local/opt/mysql@5.7/lib/libmysqlclient.dylib /usr/local/opt/mysql/lib/libmysqlclient.21.dylib

Ref

安裝 mariadb 參考以下:

額外補充指令: brew services
在 fully remove mysql 有刪除相關檔案
看這資料,可以瞭解背後刪的是什麼,更安心

解釋版本與 Mysql 分支: MariaDB 維基百科
查詢指令: MySQL修改密碼與忘記密碼重設

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×