在 MAC OS X 下安裝 MySQL 與簡易故障排除

[前言]

事情是這樣的,有人看了Allen 大的文章之後,安裝完了MySQL,要用root使用者登入,卻遇到了:

 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 

這樣的錯誤。

通常發生這種情形呢,就是因為:

  1. 忘記密碼是多少。
  2. MySQL root 帳號出了點問題。

通常要解決的話,就是:停用 MySQL service, 進入 MySQL 安全模式, 修改 root 密碼。重新啟動 MySQL service 結束!

適用的 MySQL 版本:5.7.17 (目前官方最新版) 其他的應該也可以,不過沒有試過就是了…….

[修復步驟]

  1. 假設,已經安裝好 MySQL 了,還沒有的話,請參考:Allen 大的文章:https://blog.allenchou.cc/mac-apache-php-mysql-setup/
  2. 假設我們的 shell 環境預設就是使用:bash 當作我們的環境。我們先來設定幾個東西:[設定 .bash_profile] 在家目錄下設定這個檔案原因是為了要:使我們的 .bashrc 能夠完整的被執行。以下是其內容:
     if [ -f ~/.bashrc ]; then source ~/.bashrc fi 

    [設定 .bashrc] 因為MySQL 執行位置並沒有在 $PATH 環就變數裡面,所以我們必須要加進去。那還有一個夠簡單的方式,就是使用 alias 指令把它設定到 .bashrc 檔裡面,其路徑也在家目錄下面。以下是其內容:

     alias mysql="/usr/local/mysql/bin/mysql" alias mysqld_safe="sudo /usr/local/mysql/bin/mysqld_safe" 

    這樣在執行 mysql 和 mysqld_safe 的時候,就不用打那一長串的指令了。上述兩個步驟做完,需重開 terminal。

    或者是執行下面兩個指令:這有點像是重新載入這兩個設定檔案。

     source ~/.bash_profile source ~/.bashrc 
  3. 上面的步驟設定完成之後,我們可以開始本篇文章最重要的動作了。先停掉 MySQL service系統偏好設定裡的MySQL 並把管理器呼叫出來。如下圖,接著按下:stop MySQL server。

  4. 按下之後。回到終端機(terminal)啟用 mysqld_safe (MySQL 安全模式)
    mysqld_safe --skip-grant-tables

    完成之後,他會跑在 daemon service 背景服務(如下圖)

  5. 開一個新的終端機terminal分頁標籤。並輸入以下指令,這時候會要求密碼時候,按 enter 就好,安全模式下密碼是空的:
    mysql -u root -p
  6. 這時候我們就會看到下面這張圖:代表我們已經成功進入安全模式了。
  7. 改密碼:依照下面的順序輸入 SQL 指令來修改root 密碼並退出 MySQL shell:(大小寫都可以,對於 SQL 來說是通吃的)
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourMyNewPass';
    exit;
    
  8. 接著執行下面的指令找出跑 daemon process 的 process id.
     ps ax | grep mysql 

    這時候我們可以發現有三個 process id 是我們需要把它給砍掉的。

    因為可以從 command 中得知,第一個是我們跑的,第一個去跑後面兩個,所以總共會有三個。

    分別是:2382, 2383 以及 2464 所以我們要執行下面的指令:


     sudo kill 2382 2383 2464 

    每次的 process id 會不同,因為 process id 是由作業系統去派發的,所以每次 id 都會不一樣。這邊是示意。

    我們把 process kill 掉之後,這時我們切換到第一個標籤頁的 terminal 這時候我們可以發現:這個 daemon service 已經停止了。

    如下圖:

  9. 重新啟動 MySQL service (如下圖為未啟動前的樣子,按下 start MySQL server 按鈕)

  10. 回到終端機,並執行:
     mysql -u root -p 

    登入 root 使用者並使用修改過後的新密碼。

    下圖所示,就會成功了!

[結語]

以上就是MySQL 搶(ㄔㄨㄥˊ)救(ㄕㄜˋ) root 密碼的步驟!謝謝收看。

[參考資料]

  1. [Mac]不用懶人包,在 OS X 上安裝 Apache, PHP, MySQL
  2. How to Change the MySQL root Password in Linux or macOS via Command Line

如何在 Ubuntu 16.04 上安裝 Squid (proxy server)

[English title:How to install Squid in Ubuntu 16.04 LTS?]

[前言]

因為做論文研究關係,需要用到 Squid 這類的 proxy server 來做網址導向(redirection)的動作。

[環境需求]

本次的Linux Distro:Ubuntu 16.04 LTS

[開始安裝!]


# 更新套件

sudo apt-get update

sudo apt-get install squid

# 複製一份設定檔,若改錯還可以把設定回復。

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup

# 編輯 squid.conf

sudo vim /etc/squid/squid.conf

[squid.conf 的設定]

這邊只設定成:把指定的網址做重新導向的動作。

那我們是靠著 PHP script 來處理重新導向的動作,squid 會監聽所有的 HTTP 請求。

把他們交給 PHP 之後,接著交由 PHP 執行,接著 PHP 會去跑我們指定的 PHP script ,處理完並得到結果後進行輸出,結束。

以下是 squid.conf 的內容:除了下面有一些客製化的設定之外,基本上可以直接複製拿來做使用的。

我把 configuration (squid.conf) 貼在Gist:

以及:url_redirect.php (squid.conf 的 134行,使用 PHP script 處理導向)
作用:指的是,若連線到:www.animen.com.tw 就導向到:www.google.com.sa

[解析]

比較重要的地方是從:#custom configuration 下面開始(在 129 行開始),裡面有定義一些

requst header, 還有 url_rewrite 等。

  1. 其中的 192.169.0.1 應該要改成你自己當前電腦所使用的 IP。
  2. 如果要用:url_rewrite 把所有的請求都交給 PHP 來做處理的話,129 行到 133 行可以刪除。
    留下 134 以及 135 行即可。
  3. 若不靠 PHP scirpt 處理導向的話,請留下 129 行到 133 行。刪掉或註解 134 跟 135 行。
    129 行請換成當前電腦的 IP address (請用 ifconfig 指令查詢)。
  4. 第 129 行到 133 行,作用:當連到 www.google.com.pa 時,會自動導向到:https://google.com.tw
  5. 若要改 proxy server 的 port number,請參考第 44 行
  6. 第 101 行的 cache_mgr 是管理者 email 當有存取的動作的時候,就可以發信做通知
    當然也要設定與安裝 email server。
  7. 第 106 行的 visible_hostname 則是填寫你主機的 host name
  8. 任何設定完之後,記得要重啟 squid 服務,這樣新的設定才會生效。
  9. 因為會動到 HTTP 應用層上的東西,所以通常重啟服務會稍微久一點,是正常的。
  10. 有用防火牆的話,記得將 port 打開。(如果要允許讓外部連線的話,不用的話,這步就免了。)

[討論&後記]

雖然有一些方式,像是直接把要導向的 URL 直接的寫在 squid.conf 裡,不過就是我不太熟 bash,再加上要導向的網址很多,想說用 PHP 直接去做掉,會比較快一點。雖然效能會差一點。不過是導向靜態的內容檔案,感覺是還好的。說不定之後就會改成直接在 squid.conf 裡設定,不用 PHP script XD。

[參考資料]

Creating an HTTP Proxy Using Squid on Ubuntu 12.04

SQUID URL Redirection

Squid 官網

在 Ubuntu 16.04 上安裝舊版的 PHP5.6

[前言]

在這邊只是紀錄要怎麼安裝舊版的PHP而已,可以的話,還是用預設安裝PHP7即可。

[加入外部PPA]


sudo add-apt-repository ppa:ondrej/php

sudo apt-get update

[安裝PHP5.6以及一些phpMyAdmin所必要的extension]


sudo apt-get install php5.6

sudo apt-get install php5.6-mbstring

sudo apt-get install php5.6-mcrypt

sudo apt-get install php5.6-mysql

# 啟動 PHP modules

sudo phpenmod mcrypt
sudo phpenmod mbstring

# 打開編輯器去編輯檔案

# 並把裡面的 mysqli.allow_local_infile = On 前面的註解拿掉

sudo vi /etc/php5/apache2/php.ini

# 重新啟動 Apache2 之後,就結束了。

sudo service apache2 restart

[安裝phpMyAdmin]


sudo apt-get install phpmyadmin

我使用過的主機供應商評測(持續更新)

[前言]

在 2015 年開始的時候,因為誤打誤撞下,開始研究架站,如何把開發好的服務部署到外部的網站上去。

接著,開始接觸主機供應商,也就是這些 service provider 也在高中英文老師的推薦下,開始使用所謂的虛擬主機,VPS 以及雲端服務(PaaS等)

算一算時間,大概也有兩三年了,從一開始使用國內代理外國主機到真正外國主機在主導的主機供應商。

我都使用過了,前前後後大概有使用了 5 家左右,當然這個數目,我覺得還是會再增加中,畢竟要找到一個 C/P 值高的主機是不容易的…..

最近也感謝孤雨網路大大,所提供的這方面寶貴訊息,謝謝讓我對這方面有更進一步的認識。

下面,主題開始…..

[Acisite] 兩個種方案都還在使用中

使用過的主機:shared hosting, VPS.

機房可以選擇的地方:洛杉磯。

網址:www.acsite.net/tw/vhosting/linux_hosting/economic.htm

使用過的方案:一年/350NT (shared hosting)一年/1500NT(VPS)(皆是最便宜方案)

shared hosting 支援的程式語言:PHP, Python, Ruby

shared hosting 支援的

shared hosting 特點:有支援 ssh (需寫客服信開通~)

shared hosting 採用管理系統:cPanel

cPanel 支援SSL? 沒有。

VPS虛擬化技術:OpenVZ

優點:這家主機供應商是高中老師所推薦的,方案便宜,使用起來也還好。

適合一開始新手架站的人。

缺點:客服會漏信,過很久之後才會回,或不理你,基本上shared hosting 所支援 PHP 以外的就看看就好,不是難設定,或是框架的版本過舊(Rails)。

[Hawkhost] 還在使用,semi-dedicated 已退訂

使用過的主機:shared hosting, semi-dedicated.

機房選擇:美國,新加坡,加拿大等,我選新加坡。

semi-dedicated 跟 shared hosting 沒有兩樣,不過就是資源比叫不會有人跟你搶,上面只有兩個人。

所以速度來說會較快,但是快上許多。

網址:www.hawkhost.com

使用過的方案:一年/35.91US(最便宜shared hosting)一個月/2.99 US

shared hosting 支援的程式語言:PHP, Python, Ruby

shared hosting 特點:有支援 ssh 不用跟客服說,預設就有。

shared hosting 採用管理系統:cPanel

cPanel 支援SSL? 有,Let’s encrypt。

優點:自己爬文找到的,基本上都還可以,只要你會英文,它算是加拿大一家主機供應商,客服都很快速。算是大公司,所以PHP有支援到7.

適合 senior 架站的人。

缺點:Python 在shared hosting 上面架不太起來,放棄。

[A2Hosting] 還在使用

使用過的主機:shared hosting.

機房選擇:美國,新加坡等,我選新加坡。

網址:https://www.a2hosting.com/

使用過的方案:一個月/9.99 US (最便宜 shared hosting 方案)

shared hosting 支援的程式語言:PHP, Python, Ruby

shared hosting 特點:有支援 ssh 不用說,預設就有。

shared hosting 採用管理系統:cPanel

cPanel 支援SSL? 有,Let’s encrypt。

優點:自己爬文找到的,基本上都還可以,只要你會英文,它算是美國一家主機供應商,客服都很快速。算是大公司,所以PHP有支援到7.

適合 senior 架站的人。

缺點:還沒有找到,可能比較貴吧(?

[BandwagonHost] 還在使用

使用過的主機:VPS.

機房選擇:美國,我選美國。

網址:https://bandwagonhost.com/

使用過的方案:一個月/2.99 US (最便宜 VPS 方案)

VPS管理系統:Kiwi VM

虛擬化技術:OpenVZ

優點:自己爬文找到的,基本上都還可以,只要你會英文,它算是美國一家專營 VPS 主機供應商。

以VPS來說,價格算很便宜了,適合 junior VPS 的人。

缺點:連線速度慢,因為機房只有美國可以選擇。

[SugarHost] 俗稱糖果主機,已退訂。

使用過的主機:shared hosting.

機房選擇:美國,香港,台灣等,我選美國。

網址:http://www.sugarhosts.com

使用過的方案:一個月/72.1 NT (最便宜 shared hosting 方案)

shared hosting 管理系統:cPanel

優點:自己爬文找到的,基本上都還可以,它算是英國一家主機供應商(聽說有中資….)。

缺點:所有 shared hosting 中較貴,也沒有 ssh 可以使用。

[GreenGeeks] 已退訂

使用過的主機:shared hosting.

機房選擇:美國,我選美國。

網址:https://www.greengeeks.com/

使用過的方案:一個月/3.95 US (最便宜 shared hosting 方案) 續約後:一個月/9.99 US

shared hosting 管理系統:cPanel

優點:自己爬文找到的,基本上都還可以,只要你會英文,它算是美國一家主機供應商。

缺點:連線速度慢,因為機房只有美國可以選擇,號稱是綠色環保主機,所以價格貴了一點。

不適合新手,以及沒有 ssh 功能可以使用。

[DigitalOcean] 最近沒在使用

知名的 VPS 主機供應商,價格什麼的,網路也是一大堆文章可以看。

使用過的主機:VPS.

機房選擇:美國,新加坡,我選美國。

網址:https://www.digitalocean.com/

使用過的方案:一個月/20 US (VPS 官方推薦的方案) 一個月/10 US

優點:自己爬文找到的,基本上都還可以,只要你會英文,它算是美國一家主機供應商。

虛擬化技術:KVM

VPS 管理系統:官方自行開發的管理系統。

缺點:通常 KVM的虛擬化技術,架上都比較貴,如果架設的環境有用到 Kernel ,也就只能用 KVM的。

像是 OpenVPN 等。

不適合新手,以及沒有 ssh 功能可以使用。

[同場加映]

  1. 付款方式:大多使用 PayPal 付款

  2. SSL:免費的 SSL 就用 Let’s encrypt

或是可以參考付費的:https://cheapsslsecurity.com/comodo/positivessl.html

這個算是SSL經銷商,所以價格比在原來的網站上買要來的便宜。

[參考資料]

  1. LowEndTalk:裡面有很多主機相關的推薦與介紹,很值得一看。

***想到或是用新的主機供應商之後再補充。

安裝 Eclipse IDE(新版)

最近想要回去寫點 JAVA 小程式,所以就在去安裝了:Eclipse 來玩看看。

改版的幅度真的很大@@,而且也多了很多實用的功能,像是 installer 等等。

再者,因為之前有碰過一些 gradle 的 package manager 的經驗,因此這次架設 IDE 之外,我也會使用 gradle wrapper 在專案中使用。

這邊以:Ubuntu 16.04 為例。

預先動作:安裝 JRE 與 JDK


sudo apt-get install default-jdk

sudo apt-get install default-jre

16.04 預設為 JAVA 8

  1. 先到官方網站下載 Eclipse installer,下載點:https://www.eclipse.org/downloads/download.php?file=/oomph/epp/neon/R2a/eclipse-inst-linux64.tar.gz
  2. 下載回來之後解壓縮,會看到如下的檔案

  1. 點擊 eclipse-ins 啟動,會看到一個介面,裡面有各式各樣的 Eclipse IDE的環境料表提供安裝。
  2. 如下圖
  3. 選擇要安裝的Eclipse IDE,這邊就以 Eclipse for JAVA developers為例。
    點進去之後,可以設定要安裝的路徑以及要安裝的版本。
  4. 接著點 INSTALL 就開始安裝了!
  5. 安裝好之後,就會有下面的 Eclipse 的安裝資料夾。
  6. 點擊 eclipse執行。
  7. 就會看到下面的畫面了。
  8. 修改成dark theme,因為我個人不喜歡白色的畫面當作開發的環境。
    可以點選:window->Preferences->General->Appereance
    看到右邊的設定,有 Theme 選擇 Dark 就可以得到下面的截圖裡的樣式了。
  9. 新增 gradle plugin 到市集裡。
    gradle 是一個dependency package manager,如同 PHP 有 Composer 一樣,可以幫助我們輕易的安裝一個 JAVA library。
    在 Help->Eclipse Marketplace,點擊下去之後會出現可以尋找與瀏覽要安裝的 plugin 的畫面。
    我們在 Find 的地方打上:gradle,並按下 enter 鍵,等它搜尋一段時間之後,就會出現下面的清單了。
    把清單拉下來找到下面的有 Gradle IDE Pack 3.8.x 等字樣的套件,點擊旁邊的 install 按鈕,接著就等一段時間等安裝成功。
  10. 在前面的 gradle 套件安裝成功之後,我們就可以新建一個 JAVA (gradle) 專案了。
    點選 File->New->Project…. 並選擇 Gradle->Gradle Project 接著 Next。
    會有一個 Welcome 訊息,就看一看按下一步 (Next)
    這邊就打上 Project name 專案名稱之後,就可以按下 Next 了。
    接下來會要讓我們選擇 Gradle 的版本等,使用預設的即可。接著按下 Next 之後等它跑一段時間了。
    最後結束之後按下 Finish 就建置完成一個 Gradle Project 了。
  11. 透過 gradle 安裝 okhttp library
    打開 build.gradle 拉到最下面有一個 dependencies 的欄位,在大括號裡面我們可以填上:

    compile 'com.squareup.okhttp3:okhttp:3.6.0'
    

    接著,對著專案名稱按下右鍵選擇:Gradle->Refresh Gradle Project
    等它跑一段時間之後,okhttp就成功安裝了,如下圖

  12. 以上就是安裝 Eclipse 以及一些基本的設定,Happy coding with JAVA!
    後面有想到什麼再補充吧!

    [後記]

  13. Reset 所有的 view 畫面,Window->Perspective->Reset Perspective 就可以把所有畫面重設了!