增加 phpMyAdmin 登入時間

phpMyAdmin

phpMyAdmin 是一套管理 MySQL 資料庫的 UI 介面工具,預設登入時間為 1440 秒,這時間是定義在 libraries/config.default.php 內,phpMyAdmin 也是透過 gc-maxlifetime 來決定 Session 存在與否,所以如果要增加登入時間,比如說設定一年 (3600 * 24 * 365) 好了,請按照底下設定

Continue reading “增加 phpMyAdmin 登入時間”

[資料庫] 如何轉換 Mysql varchar type 到 int type

先來說明為什麼有時候需要用到轉換 varchar 到 int 型態,就是因為 order by 的問題,幫學校修改 Mysql 錯誤排序,前人設計全部都用 varchar 型態去存資料,當然包含了學生入學年度,以前不會遇到這問題,但是到了民國100年,就會發生排序錯誤,底下來講個例子,這樣大家就可以瞭解了。 建立 test 資料表,並且先增兩個欄位分別是 a(varchar) 跟 b(int),個別輸入 100, 90 兩列資料
mysql> select * from test;
+------+------+
| a    | b    |
+------+------+
| 100  |  100 |
| 90   |   90 |
+------+------+
先針對 varchar 排序 order by a DESC
mysql> select * from test order by a desc;
+------+------+
| a    | b    |
+------+------+
| 90   |   90 |
| 100  |  100 |
+------+------+
再來針對 int 排序 order by b DESC
mysql> select * from test order by b desc;
+------+------+
| a    | b    |
+------+------+
| 100  |  100 |
| 90   |   90 |
+------+------+
Continue reading “[資料庫] 如何轉換 Mysql varchar type 到 int type”

[網站] 好站連結 (七) Android, javascript, Css, PHP, Perl, FreeBSD, Linux

Windows C# html apache javascript CSS php MySQL Perl FreeBSD MSSQL Android Linux C/C++ Network

[PHP] GoEz Framework

PHP+MySQL 環境下 SQL Injection 攻防戰

OurMySQL Blog 看到這篇:『PHP+MySQL环境下SQL Injection攻防总结』寫的相當不錯,裡面有一些觀念,可以讓初學 PHP & MySQL 的使用者知道如何防護 SQL Injection (資料隱碼),內容提到 magic_quotes_gpc 在 on 跟 off 的狀況如何防護,但是可以清楚看到 PHP 官方文件提到在 PHP 5.3.0 magic_quotes_gpc 預設已經是關閉,在 PHP 6.0 之後正式移除,所以內容寫的 magic_quotes_gpc 狀況,可以大致上瞭解就好,真正防護 SQL Injection 是需要寫程式或者是考慮很多方式去防護。 一般在做文章查詢,都會使用 /articles.php?id=123 網址傳送方式,以 $_GET[‘id’] 送到 PHP 頁面去做處理,如果駭客想要測試是否可以利用 SQL Injection 做攻擊,可以在網址列加上 /articles.php?id=123,請注意網址後面多出 ,如果沒有把 $_GET[‘id’] 做處理的話,就會出現底下錯誤訊息:
supplied argument is not a valid MySQL result resource in
這是因為平常在寫 SQL 語法,會是底下這種寫法:
$sql = "SELECT id, title, content FROM articles WHERE id = '".$_GET['id']."'";
$result = mysq_query($sql);
因為沒有處理跳脫字元 ‘,所以造成 SQL 語法錯誤,才會出現該錯誤訊息,但是如果又針對跳脫字元做防護得時候,還有另一種攻擊方式:
/articles.php?id=0 union select 1,2,load_file(char(47,101,116,99,47,112,97,115,115,119,100))
其中的數字就是/etc/passwd 字符串的ASCII,除此之外,還可以使用字串 16 進位方式:
/articles.php?id=0 union select 1,2,load_file(0×2f6574632f706173737764)
可以參考一下 MySQL LOAD_FILE(file_name),底下文章提到了很多方式解決。 Continue reading “PHP+MySQL 環境下 SQL Injection 攻防戰”

[SQL] Microsoft SQL Server 2008 Management Studio 防止儲存需要資料表重建的變更

最近要寫 ASP.Net 專案,弄 MSSQL Server 2008 當作 Database,利用 SQL 2008 SQL Server Management Studio 管理資料庫,有點類似 MySQL Navicat Lite 軟體,或者是 Web 介面的 phpMyAdmin,在資料表填入欄位新增第一次之後,接下來要去修改資料表,發現會出現錯誤訊息:『防止儲存需要資料表重建的變更MSSQL2008_01 (by appleboy46) 解決方法其實很簡單:工具->選項->左邊選單 Designers,裡面把防止儲存需要資料表重建的變更,取消掉,就可以了 MSSQL2008_02 (by appleboy46) 參考資料:[SQL]使用SQL 2008 SQL Server Management Studio 更改資料表結構 出現錯誤訊息不允許儲存變更

[SQL] MySQL ROW_NUMBER Simulation

在台大 PTT Database 版看到有人問一個問題,我覺得還不錯,問題如下:網頁版
小弟在練習做一個系統遇到以下問題 志願 | 系所 | 功能 1 | a | 退選 2 | b | 退選 3 | c | 退選 4 | d | 退選 5 | e | 退選 網頁介面如上(用for迴圈+mysql_fetch_object抓出資料) 報名序號 | 姓名 | 志願1 | 志願2 | 志願3 | 志願4 | 志願5 1001 小王 a b c d e 資料庫欄位內容如上 想請問~若使用者想退選志願3~~照理說用update把志願3欄位清掉 網頁再一次抓資料會變成志願3的系所變空的~(如下表) 志願 | 系所 | 功能 1 | a | 退選 2 | b | 退選 3 | | 退選 4 | d | 退選 5 | e | 退選 有沒有辦法在select的時候排除空的那欄 也就是說抓資料的時候,以上述為例,只抓出4筆,變成下表 志願 | 系所 | 功能 1 | a | 退選 2 | b | 退選 3 | d | 退選 4 | e | 退選
Continue reading “[SQL] MySQL ROW_NUMBER Simulation”

mydumper 取代 mysqldump 效能

這是我在 gslin 大神 那邊看到的一篇文章:mydumper (取代 mysqldump 的工具)mysqldumper 有平行跟效能方面壓力測試,效果跟時間都壓縮的比 mysqldump 還要快,簡單管理 output 資料,它把 database 每個資料表分別 dump 資料出來寫到檔案,方便觀看檔案資料,不過沒有支援 dump table 的 definitions,所以加速提取 data 寫入到檔案,gslin 大神也把它包進 FreeBSD ports 裡面,在 database/mydumper 這裡。 我想會把這個機制套用到我之前寫的 shell script 裡面:[Linux&FreeBSD] 備份系統資料,MySQL 資料庫,PgSQL 資料庫的自動化 bash shell script 程式,那 mydumper 用法也相當簡單,mydumper –help 就寫的很清楚了,跟 mysqldump 用法差沒多少:
  
-h, --host               連接到 hostname 伺服器
-u, --user               使用者名稱
-p, --password           使用者密碼
-P, --port               MySQL TCP/IP port 
-B, --database           Database 名稱
-t, --threads            Number of parallel threads
-o, --outputdir          輸出的檔案要存放在哪, 預設 ./export-*/
-c, --compress           gzip 壓縮每個檔案,多花一點時間
-x, --regex              Regular expression for 'db.table' matching
Continue reading “mydumper 取代 mysqldump 效能”