文章類別

Hard Ware (3) iSCSI (2) Joomla (1) Linux (9) MySQL (3) NAS (2) Postfix (3) SAN (2) VMWare (1)

2010年6月14日 星期一

MySQL

在命令列下進行批次處理:
shell> mysql -h host -u user -p < batch-file
Enter password: ********

一、帳號與權限

設定 root 和其他 user 的密碼

* mysqladmin -u root password '新密碼'
* mysqladmin -u root -p
* Enter password:    此時再輸入密碼(建議採用)
* use mysql;
mysql> UPDATE user SET password=password('新密碼') where user='root'; 
  只改 root 的密碼,如果沒有用 where ,則表示改全部 user 的密碼
* mysql> FLUSH PRIVILEGES; 在 mysql 資料庫內,一定要用 flush 更新記憶體上的資料

刪除空帳號

* mysql> DELETE FROM user WHERE User = '';
* mysql> FLUSH PRIVILEGES;
 

建立新帳號

* mysql> GRANT 權限 ON 資料庫或資料表 TO 使用者 IDENTIFIED BY '密碼';
  權限
   
  資料庫或資料表
   *.* 所有資料庫裡的所有資料表
   * 預設資料庫裡的所有資料表
   資料庫.* 某一資料庫裡的所有資料表   
   資料庫.資料表 某一資料庫裡的特定資料表
   資料表  預設資料庫裡的某一資料表

設定/修改權限  

* 用 root 登入 MySQL
  mysqladmin -u root -p
 Enter password:   
* mysql> GRANT all ON db35.* TO s35@'localhost' IDENTIFIED BY 's35';
   把 db35 這個資料庫(含其下的所有資料表),授權給 s35,從 localhost 上來,密碼為s35
 
* mysql> GRANT all ON *.* 把所有資料庫及資料表授權給別人,太危險了!
 
* mysql> GRANT all??? ON www.* TO '*'@'*' IDENTIFIED BY '';
    把 www 這個資料庫(含其下的所有資料表),授權給 任何機器任何人,無密碼(通常給不特定人士使用)
 
* mysql> FLUSH PRIVILEGES; (最後一定要強迫更新權限)


二、資料庫/資料表/欄位的操作

建立資料庫 CREATE DATABASE 資料庫名;
語法:CREATE DATABASE db_name

使用資料庫 USE 資料庫名;
語法:USE db_name

刪除資料庫 DROP DATABASE 資料庫名;
語法:DROP DATABASE [IF EXISTS] db_name
 
建立資料表
 CREATE TABLE 資料表名 (欄位1 資料型態, 欄位2 資料型態, ......);
語法:
CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [select_statement]

資料表最佳化  OPTIMIZE TABLE 資料表名
語法:OPTIMIZE TABLE tbl_name
 欄位長度有變動、刪除大量資料,都應進行資料表最佳化

copy frm : http://www.hmes.kh.edu.tw/~jona/redhat/mysqlphp/mysqlsyntax.htm