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 使用者授權內容〉

MySQL Replication Slave 使用 Bash Script 來忽略錯誤語法

MySQL Replication Slave 遇到 Duplicate entry ... 等等的錯誤,需要使用下述命令跳過:

  1. STOP SLAVE;
  2. SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
  3. START SLAVE;

要寫成 Script 怎麼做呢?

閱讀全文〈MySQL Replication Slave 使用 Bash Script 來忽略錯誤語法〉