Grant บน mySQL

26 10 2010

การเขียน web application ติดต่อ mySQL นั้น บ่อยครั้งที่หลายคนมักจะใช้ account root ในการใช้งานซึ่งจัดเป็นวิธีการที่ไม่ปลอดภัยเป็นอย่างยิ่ง

จริงๆแล้ว DB Admin แค่ run คำสั่งง่ายๆแค่ 3 คำสั่งคือ

1. สร้าง user ที่ต้องการใช้งาน
CREATE USER 'ambient'@'localhost' IDENTIFIED BY 'p@ssw0rd'
2. enable การ access ไปที่ mysql
GRANT USAGE ON *.* TO 'ambient'@'localhost' IDENTIFIED BY 'p@ssw0rd';
3. grant สิทธิ์บน database นั้นๆ
GRANT ALL PRIVILEGES ON testDB.* to 'ambient'@'localhost';

Empty MySQL table rapidly

8 04 2010

It is not fun if we need to clear a huge table in MySQL. If we just delete all rows or truncate the table, it will take a very long time to finish. Moreover, spaces in used are not reclaimed immediately, you need to run “optimize” which takes a lot longer time to complete. I had an experience on this situation after waiting for 4 days, it still optimised my table. That’s annoying. So, I introduced a simpler method to clean MySQL table.

0. Before cleaning our table, let’s see the total consumed space
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p1 529G 405G 98G 81% /
mysql> show tables;
| Tables_in_syslog |
| actions |
| cemdb |
| logs |
| search_cache |
| user_access |
| users |
6 rows in set (0.00 sec)
mysql> SHOW columns in logs;
... The result is left

1. Copy the structure of the table we want to empty, not data
mysql> CREATE TABLE logs2 LIKE logs;
Query OK, 0 rows affected (1.22 sec)

2. Drop the target table
mysql> DROP TABLE logs;
Query OK, 0 rows affected (6 min 30.45 sec)

3. Resurrect the old table
mysql> CREATE TABLE logs LIKE logs2;
Query OK, 0 rows affected (0.00 sec)

4. Now, remove our temporary table
mysql> DROP TABLE logs2;
Query OK, 0 rows affected (0.00 sec)

5. Find the available space we have
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p1 529G 102G 401G 21% /

That’s it. Easier and quicker method are all we claim with this technique.