一、串連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> mysqldump -u root -p -ddatabasename > a.sql
如果只想卸出插入資料的sql命令,而不需要建表命令,則命令如下:
shell> mysqldump -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的字串類型,預設是Null 字元串。對於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';