Thứ Hai, 18 tháng 6, 2012

How To Enable mod_rewrite In Ubuntu Linux

How To Enable mod_rewrite In Ubuntu Linux

mod_rewrite is an Apache web server module which is used to rewrite a URL at the server level. This module has a variety of uses. But it is most frequently used to provide clean, search engine friendly URLs.
This article explains how to enable Apache mod_rewrite in Ubuntu Linux.
Step 1 : Install Apache web server in Ubuntu Linux
I had already explained this step in a previous post. If you don’t know, then read how to install LAMP server in Ubuntu.
Step 2 : Enable mod_rewrite module in Apache web server
mod_rewrite module is disabled by default in Apache web server. So you will have to enable it prior to using it.
Open a terminal and enter the following command to enable mod_rewrite module in Ubuntu Linux.
$ sudo a2enmod rewrite
a2enmod is a command line tool which is used to enable modules in Apache web server.
Step 3 : Edit the site specific file in the /etc/apache2/sites-enabled/ directory
By default Apache will have a file named 000-default in the sites-enabled/ directory. The full path being /etc/apache2/sites-enabled/000-default.
Open the file in a text editor of choice and change all the lines containing AllowOverride None to AllowOverride All. Save the file and exit.
If you are running a website on a separate domain and on a remote server, your file will be different. Choose the file accordingly.
Step 4 : Restart the Apache web server
The final step is to restart the apache web server to make the changes take effect. This is done as follows -
$ sudo /etc/init.d/apache2 restart
Also check out how you can enable mod_rewrite in XAMP server in Windows.
[Reference : Ubuntu Forums]

Thứ Sáu, 8 tháng 6, 2012

Mysql consol


Quản Lý MySQL Server

Sử Dụng
Lệnh Trên Console



Nguyễn Bá Thành - Diễn
Đàn Tin Học






Giới thiệu

Bạn đang quản lý 1 server MySQL, nếu có 1 chương trình giao diện đồ hoạ để giúp 
bạn quản trị hệ thống CSDL nữa thì quá tuyệt vời. Tuy nhiên, trong thực tế có 
nhiều lúc bạn chỉ có thể truy cập được vào server qua 1 cửa sổ lệnh đen xì với 
con trỏ nhấp nháy. Những lý như thế này mà không có vài "chiêu" gõ lệnh command 
line đời có khi "đen tối" ;-)

Bài viết này sẽ giới thiệu vài lệnh SQL cần thiết nhất để quản trị một MySQL 
Server.


Bài viết này sẽ lấy MySQL Server phiên bản 4.1, cài đặt trên Windows 2000 làm 
ví dụ. Bạn có thể tự cài đặt MySQL Server trên máy để thực hành. Hướng dẫn cài 
đặt MySQL Server 4.1 trên Windows bạn có thể tham khảo ở đây:

http://www.diendantinhoc.net/?article=41cca76d6c&cat=database_mysql.


Kết nối vào MySQL Server từ 
dòng lệnh


Để kết nối vào MySQL server, bạn hãy chạy lệnh mysql (file mysql.exe 
trong thư mục Bin của MySQL trên Windows hoặc file mysql trong thư mục 
bin của MySQL trên Linux). Đây là một MySQL Client với giao diện text, giao tiếp 
với người dùng qua dòng lệnh (command line).


mysql -h 192.168.0.1 -u test -ptest test_db

Câu lệnh trên sẽ kết nối vào MySQL Server ở địa chỉ 192.168.0.1 với 
username là test, mật mã là test và sử dụng CSDL có tên là 
test_db
. Nếu không có tham số -h 192.168.0.1, mysql sẽ mặc định kết 
nối vào server localhost.


Nếu bạn không muốn cung cấp mật mã trong câu lệnh kết nối thì bạn chỉ cần 
cung cấp tham số -p, mysql sẽ nhắc bạn nhập vào mật mã sau. VD:

mysql -h localhost -u myuser -p mydb

Nếu bạn không cung cấp tên của CSDL cần sử dụng, thì mặc định sau khi kết nối 
sẽ không có CSDL nào được mở ra để bạn sử dụng cả. VD:

mysql -u root -p

Sau khi kết nối thành công, để thoát khoải chế độ dòng lệnh của mysql và trở 
về hệ điều hành, bạn có thể nhấn Ctrl-C, hoặc \q và Enter.


Lưu ý: Đa phần các lệnh về quản trị MySQL server đòi hỏi bạn phải 
login vào server với account có quyền cao nhất (vd account root).


Chọn CSDL để làm việc

Sau khi kết nối thành công vào MySQL Server,
bạn có thể chọn hoặc CSDL để làm việc bằng câu lệnh USE tên_CSDL:

USE mysql;

(cuối câu lệnh SQL bạn nhớ thêm dấu chấm phảy ;)

Bạn cũng có thể liệt kê danh sách các CSDL trong hệ thống bằng lệnh:


SHOW DATABASES;

bạn có thể nhận được kết quả tương tự như sau:

+----------+

| Database |

+----------+

| mysql    |

| test     |


+----------+

2 rows in set (1.20 sec)

Tài liệu tham khảo:



Hiển thị thông tin về 
table


Sau khi kết nối và chọn CSDL để làm việc xong, bạn có thể liệt kê danh sách các 
table trong CSDL bằng lệnh:

SHOW TABLES;

bạn có thể nhận được kết quả tương tự như sau:

+---------------------------+


| Tables_in_mysql           |

+---------------------------+

| columns_priv              
|

|
db                      
|

|
func                    
|


| help_category             
|

| help_keyword              
|

| help_relation             
|

| help_topic                
|

|
host                    

|

| tables_priv               
|

| time_zone                 
|

| time_zone_leap_second     |

| time_zone_name            
|


| time_zone_transition      |

| time_zone_transition_type |

|
user                    
|

+---------------------------+

15 rows in set (0.58 sec)

Bạn cũng có thể liệt kê thông tin chi tiết về table bằng lệnh SHOW TABLE 
STATUS
.



  • Lệnh SHOW TABLE STATUS; không tham số sẽ liệt kê 
    thông tin về tất cả các table có trong CSDL hiện tại.

  • Lệnh SHOW TABLE STATUS FROM db_name; sẽ liệt kê 
    thông tin về tất cả các table trong CSDL có tên là db_name.


  • Lệnh SHOW TABLE STATUS FROM db_name LIKE 'tbl_name'; 
    sẽ liệt kê thông tin về table có tên là tbl_name trong CSDL 
    db_name
    ;

  • và lệnh SHOW TABLE STATUS LIKE 'tbl_name'; sẽ liệt 
    kê thông tin về table có tên là tbl_name trong CSDL hiện tại.


Lệnh SHOW TABLE STATUS sẽ trả về các thông tin sau:


  • Name: tên của table.

  • Engine: kiểu của table (VD: InnoDB, MYISAM...).

  • Version: phiên bản của table.


  • Row_format: kiểu dòng của table (Fixed, Dynamic hoặc Compressed).

  • Rows: số lượng dòng có trong table (lưu ý: với một số kiểu table 
    như InnoDB số lượng dòng chỉ là ước lượng chứ không chính xác, bạn cần dùng 
    lệnh SELECT COUNT(*) FROM tbl_name; để lấy chính xác số 
    dòng).

  • Avg_row_length: kích thước/độ dài trung bình của một dòng trong 
    table.

  • Data_length: kích thước của file lưu trữ table.


  • Max_data_length: kích thước tối đa của file lưu trữ table.

  • Index_length: kích thước của file index.

  • Data_free: dung lượng được cấp phát nhưng chưa được sử dụng trong 
    file.

  • Auto_increment: giá trị tiếp theo của cột có kiểu AUTO_INCREMENT 
    trong table.

  • Create_time: thời điểm table được tạo.


  • Update_time: thời điểm table được cập nhật lần cuối.

  • Check_time: thời điểm table được kiểm tra lần cuối.

  • Collation: lưu trữ thông tin về charset sử dụng trong table.

  • Checksum: giá trị kiểm tra checksum của table.

  • Create_options: lưu trữ các thông tin của lệnh CREATE TABLE khi 
    tạo table.


  • Comment: thông tin chú thích về table.

Và cuối cùng, với lệnh SHOW CREATE TABLE tên_table, MySQL sẽ trả về 
cho bạn câu lệnh SQL dùng để tạo ra table đó. VD câu lệnh:

SHOW CREATE TABLE db;

sẽ trả về câu lệnh SQL dùng để tạo table db tương tự như sau:

CREATE TABLE `db` (


  
`Host`                  
char(60) binary   NOT NULL default '',

  
`Db`                    
char(64) binary   NOT NULL default '',

  
`User`                  

char(16) binary   NOT NULL default '',

    `Select_priv`             
enum('N','Y')     NOT NULL default 'N',

    `Insert_priv`             
enum('N','Y')     NOT NULL default 'N',


    `Update_priv`             
enum('N','Y')     NOT NULL default 'N',

    `Delete_priv`             
enum('N','Y')     NOT NULL default 'N',

    `Create_priv`             

enum('N','Y')     NOT NULL default 'N',

    `Drop_priv`               
enum('N','Y')     NOT NULL default 'N',

    `Grant_priv`              
enum('N','Y')     NOT NULL default 'N',


    `References_priv`         
enum('N','Y')     NOT NULL default 'N',

    `Index_priv`              
enum('N','Y')     NOT NULL default 'N',

    `Alter_priv`              

enum('N','Y')     NOT NULL default 'N',

    `Create_tmp_table_priv`   enum('N','Y')     
NOT NULL default 'N',

    `Lock_tables_priv`        
enum('N','Y')     NOT NULL default 'N',


    PRIMARY KEY (`Host`,`Db`,`User`),

    KEY `User` (`User`)

) TYPE=MyISAM COMMENT='Database privileges';

Tài liệu tham khảo:




Tạo CSDL và user 
account


Để tạo CSDL mới, MySQL cung cấp cho ta lệnh CREATE DATABASE:

CREATE DATABASE db_name;

Câu lệnh trên sẽ tạo 1 CSDL mới có tên là db_name. Bạn cũng có thể xoá 
bỏ một CSDL với lệnh DROP DATABASE:

DROP DATABASE db_name;

Tuy nhiên, CSDL mà đã bị xoá rồi thì không thể khôi phục lại được, cho nên 
bạn hãy cẩn thận khi dùng lệnh DROP DATABASE.

Và bạn cũng có thể xem lại cú pháp câu lệnh CREATE DATABASE của 1 CSDL đã có 
sẵn bằng lệnh SHOW CREATE DATABASE:

SHOW CREATE DATABASE db_name;


Để tạo account mới và gán quyền truy cập vào MySQL server cho account đó, 
MySQL cung cấp cho ta lệnh GRANT. Cú pháp đơn giản của lệnh GRANT như sau:

GRANT quyền ON tên_csdl TO tên_user IDENTIFIED BY 'mật_mã';


  • Quyền có dạng như sau:

    • ALL PRIVILEGES: tất cả mọi quyền.

    Các quyền sau đây có thể được kết hợp với nhau, phân cách bằng dấu phảy 
    (,):



    • ALTER: cho phép user sử dụng lệnh ALTER TABLE.

    • CREATE: cho phép user sử dụng lệnh CREATE TABLE.

    • CREATE TEMPORARY TABLES: cho phép user sử dụng 
      lệnh CREATE TEMPORARY TABLE.

    • CREATE VIEW: cho phép user sử dụng lệnh CREATE 
      VIEW.


    • DELETE: cho phép user sử dụng lệnh DELETE.

    • DROP: cho phép user sử dụng lệnh DROP TABLE.

    • FILE: cho phép user sử dụng lệnh SELECT ... INTO 
      OUTFILE và LOAD DATE INFILE.

    • INDEX: cho phép user sử dụng lệnh CREATE INDEX 
      và DROP INDEX.

    • INSERT: cho phép user sử dụng lệnh INSERT.


    • LOCK TABLES: cho phép user sử dụng lệnh LOCK 
      TABLES trên những table nào user có quyền SELECT.

    • PROCESS: cho phép user sử dụng lệnh SHOW FULL 
      PROCESSLIST.

    • RELOAD: cho phép user sử dụng lệnh FLUSH.

    • SELECT: cho phép user sử dụng lệnh SELECT.

    • SHOW DATABASES: khi user sử dụng lệnh SHOW 
      DATABASES, danh sach của toàn bộ các CSDL trong hệ thống.


    • SHOW VIEW: cho phép user sử dụng lệnh SHOW 
      CREATE VIEW.

    • UPDATE: cho phép user sử dụng lệnh UPDATE.

    Ngoài ra một quyền đặt biệc là USAGE sẽ gán toàn bộ 
    các quyền của user là "không được phép". Quyền này thường được gán cho các 
    account không có quyền global trên hệ thống. Thường sau khi gán quyền USAGE, 
    quản trị viên của server sẽ tiếp tục gán một vài quyền nhất định cho account 
    trên một số CSDL nhất định.

     


  • Tên_CSDL có dạng như sau:

    • *.*: toàn bộ các CSDL và table trên hệ thống.

    • db_name.*: giới hạn quyền trên CSDL có tên là 
      db_name và các table của CSDL này.

    • db_name.tbl_name: giới hạn quyền trên table có 
      tên tbl_name trên CSDL có tên db_name.


       

  • Tên_user có dạng như sau:

    • 'nbthanh'@'localhost': account với username 
      nbthanh có thể kết nối từ localhost.

    • 'nbthanh'@'%': account với username nbthanh có 
      thể kết nối từ bất kỳ nơi nào trừ localhost.


       

  • Nếu trong câu lệnh GRANT không có phần IDENTIFIED BY 'mật_mã' thì 
    account sẽ được tạo với mật mã là rỗng.

Ví dụ:

GRANT ALL PRIVILEGES ON *.* TO 'nbthanh'@'localhost' IDENTIFIED BY 
'my_password';


Lệnh trên sẽ tạo 1 account có username là nbthanh với mật mã là 

my_password
, được phép kết nối từ localhost và có mọi quyền 
trên tất cả các CSDL có trên hệ thống.

GRANT SELECT ON *.* TO 'nbthanh'@'%' IDENTIFIED BY 'my_password2';

Lệnh trên sẽ tạo 1 account có username là nbthanh với mật mã là 

my_password2
, được phép kết nối từ bất cứ nơi đâu ngoại trừ localhost, 
nhưng chỉ có quyền đọc (SELECT) trên tất cả các CSDL có trên hệ 
thống.

Đôi khi bạn sẽ có nhu cầu đổi mật mã cho 1 account mà không muốn thay đổi lại 
các quyền hiện có của account đó, MySQL cung cấp lệnh SET PASSWORD để thực hiện 
thao tác này:

SET PASSWORD FOR 'nbthanh'@'localhost' = PASSWORD('new_password');

Lệnh trên sẽ đổi mật mã của account nbthanh, kết nối từ localhost, 
thành new_password.


SET PASSWORD FOR 'nbthanh'@'%' = PASSWORD('new_password2');

Lệnh trên sẽ đổi mật mã của account nbthanh, kết nối từ bất cứ nơi đâu 
ngoại trừ localhost
, thành new_password2.

Và cuối cùng, để xoá account ra khỏi hệ thống, MySQL cung cấp cho ta lệnh 
DROP USER:

DROP USER 'nbthanh'@'localhost';

Xoá account có username là nbthanh, kết nối từ localhost, ra khỏi 
hệ thống (lệnh này không xoá các account khác như 'nbthanh'@'%').


DROP USER 'nbthanh'@'%';

Xoá account có username là nbthanh, kết nối từ bất cứ nơi đâu ngoài 
trừ localhost
, ra khỏi hệ thống (lệnh này không xoá các account khác như 
'nbthanh'@'localhost').

Lưu ý: Đôi khi bạn cần phải thực hiện lệnh FLUSH PRIVILEGES; 
sau khi thực hiện các thao tác thêm/xoá/thay đổi account thì các thao tác mới có 
hiệu lực.

Tài liệu tham khảo:




Đến đây là kết thúc bài viết. Hi vọng qua bài viết bạn sẽ nắm được một số 
lệnh và thao tác cơ bản để quản trị một MySQL Server khi trong tay không có các 
công cụ nào khác ngoài cái màn hình console đen xì với con trỏ lệnh nhấp nháy. 
Tuy nhiên, những gì đã trình bày trong bài viết chỉ là một phần nhỏ, rất nhỏ 
trong toàn bộ những gì bạn cần phải nắm vững khi làm việc và quản trị một MySQL 
Server. 
MySQL Manual
 là tài liệu không thể thiếu khi bạn muốn làm việc với MySQL 
Server.

Các góp ý, bổ xung, thông báo lỗi về bài viết xin gởi về


Nguyễn Bá Thành - 
btnguyen2k@yahoo.com. Các câu hỏi, thắc mắc, trao đổi, 
thảo luận về cài đặt và sử dụng MySQL bạn hãy gởi lên
Diễn đàn 
MySQL Server
.

Hẹn gặp lại các bạn trong các bài viết sau!