PHP PDO Prepare Debug 印出 SQL 語法

PHP 都建議使用 Prepare 來避免 SQL injection 等等的,但是在 Debug 的時候,最困擾的就是如何把當下 SQL 語法印出來。

此套件支援 Debug 主要是可以將 SQL 語法印出。

閱讀全文〈PHP PDO Prepare Debug 印出 SQL 語法〉

MySQL SQL 語法 需要注意 型態自動轉換問題

MySQL SELECT、UPDATE、DELETE 加上 WHERE 條件,想說應該就沒有問題,但是若型態不對,可能會出現意想不到的結果。

閱讀全文〈MySQL SQL 語法 需要注意 型態自動轉換問題〉

MySQL 於 CLI 對所有 DB、Table 做 OPTIMIZE

MySQL 可以在 SQL 語法做 OPTIMIZE、Repair 等等的動作,於 CLI 也可以做,作法如下:

對所有 Database 做 OPTIMIZE 語法:

  • mysqlcheck -o --all-databases
  • mysqlcheck -o --all-databases -u [username] -p[password]

比較常用的 Analyze、Repair、Optimize 語法:

  • mysqlcheck -u [username] -p[password] -o [database name]
  • mysqlcheck --all-databases # -A
  • mysqlcheck --all-databases --analyze # -Aa
  • mysqlcheck --all-databases --auto-repair # -A --auto-repair
  • mysqlcheck --all-databases --optimize # -Ao
  • 於上述命令後面自己加上 -u root -p
  • 上述 指令「不能」複合一起下

debian-sys-maint 問題造成 MySQL 無法重新啟動 修復

MySQL restart failed,然後 journalctl -xe 查看,才發現下述錯誤:

error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

閱讀全文〈debian-sys-maint 問題造成 MySQL 無法重新啟動 修復〉

MySQL 查看 GRANT 使用者授權內容

MySQL 使用者權限後,查詢通常可以查看 MySQL 內部的 mysql.user Table 來查詢各個權限,不過想查看更詳細的,可以靠 SHOW GRANTS 來達成。

MySQL 的 SHOW GRANTS 參數不多,蠻簡單的~

  • SHOW GRANTS [FOR user_or_role [USING role [, role] ...]]
  • SHOW GRANTS;
  • SHOW GRANTS FOR CURRENT_USER;
  • SHOW GRANTS FOR CURRENT_USER();
  • e.g:
    • SHOW GRANTS;
    • SHOW GRANTS FOR username@localhost;
    • SHOW GRANTS FOR 'username'@'localhost';

不過這次除了這些操作外,還遇到一些習慣上的問題,查詢才知道 SHOW GRANTS 都不支援,在此順便做點紀錄,避免自己再犯浪費時間~

閱讀全文〈MySQL 查看 GRANT 使用者授權內容〉