Open enter3017sky opened 5 years ago
初次排除:雲端虛擬主機部署完成之後,首先當然是放些東西確認看看。後來發現留言板編輯、刪除、更新都正常。但是新增留言就是 sql fail,最後在 add_comments.php
裡面用 var_dump($variable)
印出有嫌疑的變數,發現 if($stmt->execute())
的結果是 false,然後最後 $conn->error
印出 _General error: 1364 Field 'userID' doesn't have a default value,發現 user_id 沒有用到,phpmyadmin 裡面與沒有設定預設值,但這個也蠻奇怪的,在自己的伺服器跟mentor 的伺服器都沒遇到,或許有設定配置的問題。最後在 phpmyadmin 直接設定預測值為 null,就正常運作了。
第二次解決:後來在 CLI 練習指令的時候,又發現了這個問題 insert into
時,如果某個值沒放輸入又沒預設值,就會跳 ERROR。然後找到了,原來 sql_mode
是嚴格模式的關係。
SSH 連線到伺服器的 root,輸入sudo vim /etc/mysql/conf.d/disable_strict_mode.cnf
,以新增並建立一個 disable_strict_mode.cnf 檔案,
輸入
[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
sudo service mysql restart
為了確認strict mode模式是不是已經被關閉了,可以在 phpMyAdmin 的 sql 中輸入 SELECT @@GLOBAL.sql_mode 進行測試 如果顯示 IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FO 則表示 strict mode 模式已經被關閉。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
1.
sudo vim /var/log/syslog
之後,才發現問題是出現想解決「伺服器開啟含有中文字的檔案(.js, .md)會亂碼」的問題時,在 vim /etc/mysql/my.cnf
加上的參數 default-character-set=utf8
。
2.
vim /etc/mysql/my.cnf
裡面關於 [mysqld] 的配置,恢復配置後解決最後一個 ERROR 2002 的問題### note
[mysqld]
# 會出現錯誤
# bind-address = ec2_public_IP
# 最後註解下行就解決了 ERROR 2002
# socket=/var/lib/mysql/mysql.sock
參考資料
/etc/init.d/mysqld start
/etc/init.d/mysqld stop
/etc/init.d/mysqld restart
# or
/etc/init.d/mysql start
/etc/init.d/mysql stop
/etc/init.d/mysql restart
# 像這樣
[ ok ] Starting mysql (via systemctl): mysql.service.
[ ok ] Stopping mysql (via systemctl): mysql.service.
[ ok ] Restarting mysql (via systemctl): mysql.service.
systemctl start|stop|restart mysql.service
這種類型的就不會顯示參考資料:
執行 sudo vim /var/log/syslog
查看系統 log 的時候,發現時間是錯誤的。
輸入 date -R
確認系統現在的時間
參考 Ubuntu 16.04 改變 Timezone 時區設定
timedatectl set-timezone Asia/Taipei
timedatectl
date
再確認一次tail -(筆數, 數字) 檔案名稱
範例:查看 mysql 最後十筆錯誤訊息tail -10 /etc/log/mysql/error.log
You can view log files that are compressed.
zcat /var/log/mysql/error.1.gz | more
部署 AWS EC2 虛擬主機 + Ubuntu LAMP 環境 + phpmyadmin
AWS EC2 跟 ubuntu 環境都建立好了之後。
在 CLI 登入雲端虛擬主機
ssh -i ~/.ssh/awsKey.pem ubuntu@ec2-xx-xxx-xxx-xx.ap-northeast-1.compute.amazonaws.com
ssh -i ~/.ssh/awsKey.pem ubuntu@IP(public)
sudo vim /etc/php/7.2/apache2/php.ini
vim
,按/
輸入關鍵字,按n
查找下一個,`找到 short_open_tag = 改成 ONq!
指令強制離開。MySQL 設定時區
locate my.cnf
sudo vim /etc/mysql/my.cnf
[mysqld]
,在下面增加設定值default-time-zone = '+8:00'
參考資料:修改 MySQL 時區
在 CLI 操作 MySQL
登入資料庫
mysql -u root -p
如果已經用
sudo -i
或sudo -u
登入 root 的話,不需要指定使用者,直接mysql -p
後輸入密碼登入。不登入查詢資料庫
mysqlshow -h localhost -u root -p
mysqlshow -h localhost -u root -p --count
mysqlshow -p
mysqlshow -p --count
說明
-h
: 指定資料庫伺服器的主機名稱或 IP-u
: 連接資料庫伺服器的使用者名稱-p
: 連接資料庫伺服器的使用者密碼在 MySQL 的 CLI 上使用
資料庫基本操作
create database your_database_name;
show databases;
drop database your_database_name;
use your_database_name;
選擇資料庫
USE your_database
之後。show tables
describe your_table_name
就可以操作 CRUD 相關指令
用 FileZilla 連接 EC2
打開“文件”-> “站點管理器” , 點擊左邊的“新站點”按鈕, 在右邊“常規”標籤中填入主機信息(即AWS Console中 的 Public DNS)
參考資料:用 FileZilla 連接 EC2
AWS EC2 設置固定IP地址
參考資料: (AWS EC2) Service for EC2 指定固定IP及釋放IP Amazon EC2防止被扣费的方法
使用 SSH 設定檔簡化指令與連線網址:
設定 ssh config
開始使用 alias 連線
參考資料:
ssh_config
配置上有問題,可以看這篇 How to setup SSH config :使用 SSH 設定檔簡化指令與連線網址ssh_config(5):OpenSSH SSH客戶端配置文件 - Linux手冊頁 增進 SSH 使用效率 - ssh_config Using an SSH Config File - Media Temple 使用 SSH config 文件
故障排除
Ubuntu 下 phpMyAdmin 的 404 Not Found 頁面
方法1:(我用這個解決的)
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
,並刷新您的phpmyadmin頁面方法2:
方法3: 關於phpmyadmin的問題
sudo dpkg-reconfigure phpmyadmin
參考資料: 解決 Ubuntu 下 phpMyAdmin 的 404 Not Found 頁面 - kuoe0's dots 鏈結檔案 ln 指令
phpmyadmin 一直出現錯誤訊息
在 PHP 7.2 之後,count method 如果傳入 NULL 參數就會噴
Warning: count(): Parameter must be an array or an object that implements Countable
目前 phpMyAdmin 尚未修正此問題,因此需要手動調整。其他參考資料:
參考資料:
大家來學VIM(一個歷久彌新的編輯器)[六] 阿旺的 Linux 開竅手冊 Linux常用指令整理
設定留言參考資料: How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 18.04 45 How To Install and Secure phpMyAdmin on Ubuntu 18.04 How to Install a LAMP Stack on Ubuntu 18.04 How to setup Linux, Apache, MySQL, PHP (LAMP) Stack on Ubuntu 16.04 ubuntu 默認防火牆安裝、啟用、查看狀態ufw