題 使用Homebrew在Mac上安裝MySQL Server


作為一個新手,我試圖通過本教程: http://net.tutsplus.com/tutorials/python-tutorials/python-from-scratch-creating-a-dynamic-website/

我正在使用brew install MySQL並安裝了這個版本:mysql-5.6.10。我正在運行python 2.7

當我嘗試在終端中運行mysqld啟動服務器時,我收到此錯誤:

Davids-MacBook-Pro:~ David$ mysqld
2013-03-17 18:20:28 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2013-03-17 18:20:28 3818 [Warning] Can't create test file /usr/local/var/mysql/Davids-MacBook-Pro.lower-test
2013-03-17 18:20:28 3818 [Warning] Can't create test file /usr/local/var/mysql/Davids-MacBook-Pro.lower-test
mysqld: Can't change dir to '/usr/local/var/mysql/' (Errcode: 2 - No such file or directory)
2013-03-17 18:20:28 3818 [ERROR] Aborting

2013-03-17 18:20:28 3818 [Note] Binlog end
2013-03-17 18:20:28 3818 [Note] mysqld: Shutdown complete

3
2018-03-17 22:23


起源


是文件夾 /usr/local/var/mysql/ 存在並具有寫權限? - hjpotter92
您可能希望將此問題發佈到“Ask Different”作為關於使用Homebrew在Mac上運行MySQL的問題 brew 命令)。這聽起來更像是重點。一旦你運行MySQL服務器,那麼教程可能會更順利。 - Jim Dennis
看起來不像。我在終端中執行cd / usr,然後ls並且不會將其視為“本地”。我覺得mysql安裝在某個地方,我想我需要弄清楚在哪裡?對不起,我是一個新秀,今天是我第一次使用終端!
我已將您的標籤[brew]更改為[homebrew],因為看起來[brew]與MacOS無關,也與您的問題無關。 - Jim Dennis
stackoverflow.com/questions/6525917/...


答案:


我剛剛使用Homebrew安裝了MySQL(與你列出的版本相同)並遇到了類似於你的問題。

我會注意到我的Homebrew副本可能不健康; brew doctor 繼續給我警告,特別是關於一些涉嫌安裝的MacPorts或fink,我計劃在某些時候從頭開始重新成像這個舊盒子。

這就是說我使用以下方法破解了問題:

mkdir /local/var/mysql

# From the `brew info mysql` command's output:
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

(這只是三個命令;如果將這些命令粘貼到終端,請忽略#comment)。

從那裡我跑了 mysqld_safe --skip-grant-tables 在一個終端中,從另一個終端連接到該服務器使用 mysql -u root。從那裡我跑了:

UPDATE mysql.user SET Password=PASSWORD('**MY_NEW_PASSWORD**') WHERE User='root';
FLUSH PRIVILEGES;

單擊Ctrl-C退出服務器會話,然後我殺了 mysqld_safe 運用 mysqladmin -u root -p shutdown 並重新啟動 MySQL與Homebrew的鏈接: mysql.server start

這似乎完成了這項工作。我不知道當我重啟Mac時它是否會自動啟動MySQL;但無論如何我不想要那樣。如果這對你有用,它應該足以讓你進入教程本身。您可能必須打開終端並運行 mysql.server start 每當你想要使用你的數據庫時,當然......我會讓你搜索添加它 launchctl 如果你想要的話就自己動手吧。

注意關於跑步的部分 mysqld_safe --skip-grant-tables 是一種“打入”MySQL數據庫的方式,使您能夠在不知道舊密碼的情況下以“root”(MySQL超級用戶或管理員)進行本地連接。 SO上的其他帖子建議Homebrew應該設置目錄並為您設置初始密碼為“new-password”。

我在這裡顯示的UPDATE命令是傳統過程的一部分,任何MySQL管理員都會強制為任何已丟失root密碼的MySQL系統恢復密碼。名為“mysql”的數據庫存儲MySQL自己的管理表,其中的“用戶”表包含“密碼”和“用戶”列。 PASSWORD()函數採用純文本(密碼打算輸入)並對其進行哈希處理...也就是說它對字符串/文本的數字編碼執行一組複雜的數學運算,類似於“校驗”。 MySQL在mysql.user的Password列中存儲這樣的哈希值,而不是密碼本身的純文本。

密碼散列是幾乎所有操作系統,數據庫系統以及使用密碼的大多數其他系統和應用程序的一項功能。如果您最終編寫Web應用程序,那麼您很可能會使用某種散列函數來存儲和檢查密碼。

正如我所說,我使用命令 brew info mysql 得到一些關於如何“修復”MySQL安裝的建議;您可以將該命令用於通過Homebrew安裝的任何其他內容,如果它似乎沒有按預期工作。

Heres'我用於進一步幫助的另一篇StackOverflow文章: https://stackoverflow.com/questions/4359131/brew-install-mysql-on-mac-os

我故意過度解釋了其中的一些細節,因為你已經表示你對這一切都非常新手。

(其中一天真正體驗過SO參與者會告訴我交叉鏈接到其他SO問題,答案和評論的首選方式)。


1
2018-03-17 23:24



非常感謝Jim的詳細回复。不幸的是,我很早就陷入困境,這將有很大幫助。我嘗試製作像你描述的目錄,但我遇到了一個奇怪的問題。我無法進入/ var目錄,但我也無法創建一個,因為它存在。有任何想法嗎?
Davids-MacBook-Pro:本地David $ cd var -bash:cd:var:沒有這樣的文件或目錄Davids-MacBook-Pro:本地David $ sudo mkdir / var mkdir:/ var:文件存在
大衛:試試sudo mkdir / usr / local / var / mysql;然後sudo chown $(whoami)/ usr / local / var / mysql。這兩個命令至少應該創建必要的目錄並確保您擁有它。從那裡你可能必須嘗試安裝MySQL的整個過程(使用 brew)一遍又一遍。 - Jim Dennis
在粘貼sudo mkdir命令後,我得到“沒有這樣的文件或目錄”。我迷路了!