不是每個人都會碰到MacOS安裝MySQL 報錯,但是我確實都碰到了,這裡面坑也比較多,獨立解決這些問題,也是對你本身基礎知識的一次檢查,所以我更傾向於大家先獨立排查,如果還是沒解決再來看下文。
MacOS通過DMG檔案安裝MySQL 之後。。。。
你可能會遇到這兩個頭疼的提示:
error1
Unable to connect to host 127.0.0.1 because access was denied.Double-check your username and password and ensure that access from your current location is permitted.MySQL said: Access denied for user 'root'@'localhost' (using password: YES)
error2
Unable to connect to host 127.0.0.1, or the request timed out.Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).MySQL said: Your password has expired. To log in you must change it using a client that supports expired passwords.
不是每個人都會碰到這個問題,但是我確實都碰到了,這裡面坑也比較多,獨立解決這些問題,也是對你本身基礎知識的一次檢查,所以我更傾向於大家先獨立排查,如果還是沒解決再來看下文。另外說一句,如果你是在laravel官方推薦的Homestead環境中的話,可能不會碰到這幾個問題。但是我是一個比較愛折騰的人,特別喜歡debug,特別喜歡在命令列裡敲東西,所以也順便解決了這個問題,給大家分享一下。
首先,我們來重現一下從安裝MySQL開始的整個過程。
1、在mysql官網下載MySQL的dmg安裝包:https://dev.mysql.com/downloads/mysql/
2、dmg檔案下載好之後,雙擊安裝,注意到最後一步的時候,會彈出一個提示框:
root@localhost 後面的W:ivGGB5lrdS 這個是MySQL安裝時給你的初始密碼,這個很重要,一定要記下來。
3、啟動MySQL:
進入Mac的系統喜好設定
4、啟好MySQL之後,我選擇了Sequel pro這個軟體來操作資料庫。
這時候,就會出現之前的兩個錯誤,
其中前文提到的error1的意思是你的MySQL 帳號密碼有錯,我一開始在laravel項目的.env檔案中設定好了資料庫相關的配置,所以直接輸入的是.env檔案中的配置,然後就會提示
Unable to connect to host 127.0.0.1 because access was denied.Double-check your username and password and ensure that access from your current location is permitted.MySQL said: Access denied for user 'root'@'localhost' (using password: YES)
另外error2的錯誤中,錯誤提示的意思是:
password has expired,其實意思是你不可以用剛才安裝好MySQL的初始密碼登入,你需要在重設你的MySQL密碼,然後用新密碼來登入root賬戶,接下來我們來解決這個問題。
首先在命令列模式下輸入MySQL
不出意外的話,你會看到一個提示
mysql command not found
這是因為我們是通過dmg檔案包的形式安裝的MySQL,系統不知道MySQL這個東西,我們需要在bash檔案中加入MySQL路徑(我的命令列工具使用的是zsh,每個人用的不一樣,但是思路是一樣的,就是在bash檔案中加入MySQL路徑)
先開啟bash檔案,然後添加MySQL路徑。
在開啟的檔案中輸入下面這行命令,儲存後退出即可在命令列中使用MySQL命令。
export PATH=$PATH:/usr/local/mysql/bin
之後,我們需要重設MySQL root 賬戶的密碼,在命令列中輸入
mysql -u root -p
然後輸入MySQL提供的那個初始密碼,如果出現如下提示,說明我們進入了MySQL的設定項
這時,我們在 mysql >後面輸入
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你想要設定的root賬戶的新密碼');
當看到
就表示重設密碼成功,然後我們開啟Sequel pro輸入root帳號和新密碼時,就可以使用了。