iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 3
3
Software Development

從零開始的Laravel RESTful api系列 第 3

Day 03 : 環境架設 part II -- MySQL & phpMyAdmin

  • 分享至 

  • xImage
  •  

前一篇完成了下載 LAMP server 以及介紹其他細節的部份,然而還有一些部份需要再額外設定,這一篇將會介紹如何設置 phpMyAdmin 和 MySQL

phpMyAdmin

雖然本人目前為止已經較少使用圖形化介面,但考量到有些人對 SQL 的基本指令較不熟悉的狀況,故在此還是為該設置步驟做介紹。

  • 首先在終端機輸入以下指令:
    $ sudo apt install phpmyadmin

  • 安裝的過程中會進入設定頁面

此時會要求設定網頁伺服器,由於我們是安裝 LAMP server ,因此選擇 apache2

web server setup

最後要設定的是 dbconfig-common,此處將會建立一個帳號來管理 phpMyAdmin 運行時用到的資料表( 不過通常不太實際操作到資料庫就是了... ),而這個使用者名稱預設為 phpmyadmin,然後再設定這個使用者密碼。

dbconfig

dbconfig password

然而在瀏覽器輸入 localhost/phpmyadmin 後卻無法進入 phpMyAdmin,因此還需要再額外動用設定檔以便 phpMyAdmin 能夠被網頁伺服器辨識

phpmyadmin not found

  • 編輯 apache2 的 configuration file
    $ sudo vim /etc/apache2/apache2.conf

  • 進入設定檔後,在最後一行加入以下指令

    *apache2.conf

Include /etc/phpmyadmin/apache.conf
  • 存檔後,接著重啟 apache
    $ sudo service apache2 restart

重新在瀏覽器輸入 localhost/phpmyadmin 就可以看到 phpMyAdmin 的登入頁面,就算設定完成。

phpmyadmin login page

MySQL

設置完 phpMyAdmin 之後,接下來就來設定 MySQL 的 root 密碼,也就是登入之後能夠實際對資料庫採取增刪改查等動作,並且也可以透過 phpMyAdmin 這個圖形化介面直接操作資料庫。

其實可以不用密碼直接透過本地端登入 MySQL
$ sudo mysql -u root

預設的情形下,MySQL 使用 auth_socket 的驗證 plugin,使得使用者可以透過 sudo 直接登入 root 帳號。我們可以直接使用預設的驗證 plugin,只是就無法透過 phpMyAdmin 登入圖形化介面了 ( phpMyAdmin 預設是需要密碼登入的 )。而除了用以上方式簡單登入外,也可以設定自己的 root 密碼,若要設定密碼,必須接續下列步驟。

phpmyadmin require password

  • 切換至 mysql 資料庫
    mysql> use mysql

  • 讓 root 帳號啟用設定密碼的插件
    mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';

  • 輸入指令重新載入特權表
    mysql> FLUSH PRIVILEGES;

  • 退出 MySQL 的 shell ( 也可以直接輸入 ctrl+z )
    mysql> exit

    或者

    mysql> quit

  • 設定 MySQL 的 root password
    $ sudo mysql_secure_installation

  • 輸入 y 開啟 VALIDATE PASSWORD 插件

initiate validate password plugin

  • 設定密碼的複雜度

password strength

enter password

  • 在以下的詢問中皆輸入 y

    • Remove anonymous users?

    • Disallow root login remotely?

    • Remove test database and access to it?

    • Reload privilege tables now?

到此為止 MySQL 的 root 密碼已經設定完成,就可以登入 phpMyAdmin 了。然而還有一個小問題,在查看任一個資料庫的任一個資料表時會顯示以下錯誤

phpmyadmin error

原因是在 php 7.2 後,count() 沒有添加參數的情形下,就會噴出Warning,而對於這個問題 phpMyAdmin 還沒有排除此錯誤,所以必須靠我們自己手動解決。

其中有兩個部分要修改

  • 針對 Warning in ./libraries/plugin_interface.lib.php#551
    $ sudo vim /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

line 551 in plugin_interface.lib.php

將第 551 行的 count($options) > 0 去掉

if ($options != null ) {
    // …..
}
  • 針對 Warning in ./libraries/sql.lib.php#613
    $ sudo vim /usr/share/phpmyadmin/libraries/sql.lib.php

line 613 in sql.lib.php

將第613行換成以下形式 ( 注意看好括號 )

|| ((count($analyzed_sql_results['select_expr']) == 1)

以上步驟完成之後就可以正常運作了

phpmyadmin complete

下一篇就來設定 Laravel。

參考資料

  1. LAMP server : https://www.linode.com/docs/web-servers/lamp/install-lamp-stack-on-ubuntu-18-04/
  2. LAMP server & phpMyAdmin: https://magiclen.org/lamp/
  3. phpMyAdmin 錯誤排除 :
    (1) phpMyAdmin NOT FOUND : https://dev.to/xeroxism/how-to-install-phpmyadmin-on-linux-ubuntu-4mdn
    (2) phpMyAdmin warning message : https://blog.johnsonlu.org/install-phpmyadmin-on-ubuntu/

上一篇
Day 02 : 環境架設 part I -- LAMP server
下一篇
Day 04 : 環境架設 part III -- Composer & Laravel
系列文
從零開始的Laravel RESTful api30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
火爆浪子
iT邦研究生 1 級 ‧ 2019-10-12 11:30:06

謝謝分享

我要留言

立即登入留言