收集的一些常用mysql命令

一、連接MySQL

        格式: mysql -h 主機地址 -u 用戶名 -p 用戶密碼

二、修改密碼

        格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼

 

三、增加新用戶。

(註意:和上面不同,下面的因為是MySQL環境中的命令,所以後面都帶一個分號作為命令結束符)

        格式:grant select on 數據庫.* to 用戶名@登錄主機 identified by "密碼" [with grant option]或者[with admin option]

        例1、增加一個用戶test1密碼為abc,讓他可以在任何主機上登錄,並對所有數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入MySQL,然後鍵入以下命令:

       grant select,insert,update, delete on *.* to test2@localhostidentified by "abc";

        如果你不想test2有密碼,可以再打一個命令將密碼消掉。

       grant select,insert,update,delete on mydb .* to test2@localhostidentified by "";

with admin option 用於系統權限授權,with grant option 用於對象授權。
但給一個用戶授予系統權限 帶上with admin option 時,此用戶可把此系統權限授予其他用戶或角色,但收回這個用戶的系統權限時,這個用戶已經授予其他用戶或角色的此系統權限不會因傳播無效,如授予A系統權 限create session with admin option,然後A又把createsession權限授予B,但管理員收回A的create session權限時,B依然擁有create session的權限,但管理員可以顯式收回B create session的權限,即直接revoke create session from B.

而with grantoption用於對象授權時,被授予的用戶也可把此對象權限授予其他用戶或角色,不同的是但管理員收回用with grant option授權的用戶對象權限時,權限會因傳播而失效,如grant select on table with grant option to A,A用戶把此權限授予B,但管理員收回A的權限時,B的權限也會失效,但管理員不可以直接收回B的SELECT ONTABLE 權限。

如:GRANT ALLPRIVILEGES ON *.* TO monty@localhostIDENTIFIED BY ’pwd’ WITH GRANT OPTION;

 

四、刪除用戶授權revokeall privileges on *.* from root@”%”;

五、重命名表:

mysql > alter table t1 rename t2;

六、備份數據庫

shell> mysqldump -h host -u root -pdbname >dbname_backup.sql

恢復數據庫

shell> mysqladmin -h myhost -u root -pcreate dbname

shell> mysqldump -h host -u root -pdbname < dbname_backup.sql

如果隻想卸出建表指令,則命令如下:

shell> mysqladmin -u root -p -ddatabasename > a.sql

如果隻想卸出插入數據的sql命令,而不需要建表命令,則命令如下:

shell> mysqladmin -u root -p -t databasename> a.sql

那麼如果我隻想要數據,而不想要什麼sql命令時,應該如何操作呢?

   mysqldump-T./ phptest driver

其中,隻有指定瞭-T參數才可以卸出純文本文件,表示卸出數據的目錄,./表示當前目錄,即與mysqldump同一目錄。如果不指定driver 表,則將卸出整個數據庫的數據。每個表會生成兩個文件,一個為.sql文件,包含建表執行。另一個為.txt文件,隻包含數據,且沒有sql指令。

七、可將查詢存儲在一個文件中並告訴mysql從文件中讀取查詢而不是等待鍵盤輸入。可利用外殼程序鍵入重定向實用程序來完成這項工作。例如,如果在文件my_file.sql 中存放有查

詢,可如下執行這些查詢:

例如,如果您想將建表語句提前寫在sql.txt中:

mysql > mysql -h myhost -u root -pdatabase < sql.txt

七、1)創建數據庫staffer

      mysql>create database staffer

2)創建表create table

     col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] 

[PRIMARY KEY] [reference_definition]  

or PRIMARY KEY (index_col_name,…)  

or KEY [index_name] (index_col_name,…)  

or INDEX [index_name] (index_col_name,…)  

or UNIQUE [INDEX] [index_name] (index_col_name,…) 

or [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,…) 

[reference_definition]  

or CHECK (expr) 

col_name:表中列的名字。必須符合標識符規則,而且在表中要唯一。

type:列的數據類型。有的數據類型需要指明長度n,並用括號括起。目前MySQL提供的數據類型詳見MySQL進階_列類型篇。

NOT NULL | NULL:指定該列是否允許為空。如果既不指定NULL也不指定NOT NULL,列被認為指定瞭NULL。

DEFAULT default_value:為列指定默認值。如果沒有為列指定默認值,MySQL自動地分配一個。如果列可以取NULL作為值,缺省值是NULL。如果列被聲明為NOT NULL,缺省值取決於列類型:

1、對於沒有聲明AUTO_INCREMENT屬性的數字類型,缺省值是0。對於一個AUTO_INCREMENT列,缺省值是在順序中的下一個值。

2、對於除TIMESTAMP的日期和時間類型,缺省值是該類型適當的“零”值。對於表中第一個TIMESTAMP列,缺省值是當前的日期和時間。

3、對於除ENUM的字符串類型,缺省是空字符串。對於ENUM,缺省值是第一個枚舉值。

AUTO_INCREMENT:設置該列有自增屬性,隻有整型列才能設置此屬性。當你插入NULL值或0到一個AUTO_INCREMENT列中 時,列被設置為value+1,在這裡 value是此前表中該列的最大值。AUTO_INCREMENT順序從1開始。每個表隻能有一個AUTO_INCREMENT列,並且它必須被索引。

 

create table department

          (

             id int not null auto_increment,

             name varchar(20) not null default '系統部', #設定默認值

             description varchar(100),

             primary key PK_department (id)   #設定主鍵

          );

八、修改結構alter命令

    mysql>

    #表position增加列test

    alter table positionadd(test char(10));

    #表position修改列test

    alter table positionmodify test char(20) not null;

    #表position修改列test默認值

    alter table positionalter test set default 'system';

    #表position去掉test默認值

    alter table positionalter test drop default;

    #表position去掉列test

    alter table positiondrop column test;

    #表depart_pos刪除主鍵

    alter table depart_posdrop primary key;

    #表depart_pos增加主鍵

alter tabledepart_pos add primary key PK_depart_pos (department_id,position_id);

九、1:使用SHOW語句找出在服務器上當前存在什麼數據庫:

mysql> SHOW DATABASES;

2:2、創建一個數據庫MYSQLDATA

mysql> Create DATABASE MYSQLDATA;

3:選擇你所創建的數據庫

mysql> USE MYSQLDATA; (按回車鍵出現Database changed 時說明操作成功!)

4:查看現在的數據庫中存在什麼表

mysql> SHOW TABLES;

5:創建一個數據庫表

mysql> Create TABLE MYTABLE (nameVARCHAR(20), sex CHAR(1));

6:顯示表的結構:

mysql> DESCRIBE MYTABLE;

7:往表中加入記錄

mysql> insert into MYTABLE values("hyq","M");

8:用文本方式將數據裝入數據庫表中(例如D:/mysql.txt)

mysql> LOAD DATA LOCAL INFILE"D:/mysql.txt" INTO TABLE MYTABLE;

9:導入.sql文件命令(例如D:/mysql.sql)

mysql>use database;

mysql>source d:/mysql.sql;

10:刪除表

mysql>drop TABLE MYTABLE;

11:清空表

mysql>delete from MYTABLE;

12:更新表中數據update命令

mysql>update MYTABLE setsex="f" where name='hyq';

作者“懶人小何”

發佈留言