1.1.1 登陸MYSQL登錄MySQL的命令是mysql, mysql 的使用語法如下: mysql [-u username] [-h host] [-p[password]] [dbname] username 與 password 分別是 MySQL 的用戶名與密碼,mysql的初始管理帳號是root,沒有密碼,注意:這個root用戶不是Linux的系統(tǒng)用戶。MySQL默認用戶是root,由于初始沒有密碼,第一次進時只需鍵入mysql即可。 [root@test1 local]# mysql Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 25338 to server version: 5.1.2-alpha-standard Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql> 出現(xiàn)了“mysql>”提示符。 增加了密碼后的登錄格式如下: mysql -u root -p Enter password: (輸入密碼) 其中-u后跟的是用戶名,-p要求輸入密碼,回車后在輸入密碼處輸入密碼。 1.1.2 顯示數(shù)據(jù)庫和數(shù)據(jù)庫中的表mysql> show databases; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.04 sec) Mysql剛安裝完有兩個數(shù)據(jù)庫:mysql和test。mysql庫非常重要,它里面有MySQL的系統(tǒng)信息,我們改密碼和新增用戶,實際上就是用這個庫中的相關(guān)表進行操作。 mysql> use mysql; (打開庫,對每個庫進行操作就要打開此庫,類似于foxpro ) Database changed mysql> show tables; +-----------------+ | Tables_in_mysql | +-----------------+ | columns_priv | | db | | func | | host | | tables_priv | | user | +-----------------+ 6 rows in set (0.01 sec) 注意:MySQL中每個命令后都要以分號;結(jié)尾。 1.1.3 顯示數(shù)據(jù)表的結(jié)構(gòu)describe 表名; 1.1.4 顯示表中的記錄select * from 表名; 例如:顯示mysql庫中user表中的紀錄。所有能對MySQL用戶操作的用戶都 在此表中。 Select * from user; 1.1.5 建庫create database 庫名; 例如:創(chuàng)建一個名字位aaa的庫 mysql> create database aaa; 1.1.6 建表use 庫名; create table 表名 (字段設(shè)定列表); 例如:在剛創(chuàng)建的aaa庫中建立表name,表中有id(序號,自動增長),xm(姓名),xb(性別),csny(出身年月)四個字段 use aaa; mysql> create table name (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date); 可以用describe命令察看剛建立的表結(jié)構(gòu)。 mysql> describe name; +-------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+----------------+ | id | int(3) | | PRI | NULL | auto_increment | | xm | char(8) | YES | | NULL | | | xb | char(2) | YES | | NULL | | | csny | date | YES | | NULL | | +-------+---------+------+-----+---------+----------------+ 1.1.7 增加記錄1.1.7.1 例如:增加幾條相關(guān)紀錄mysql> insert into name values('','張三','男','1971-10-01'); mysql> insert into name values('','白云','女','1972-05-20'); 可用select命令來驗證結(jié)果。 mysql> select * from name; +----+------+------+------------+ | id | xm | xb | csny | +----+------+------+------------+ | 1 | 張三 | 男 | 1971-10-01 | | 2 | 白云 | 女 | 1972-05-20 | +----+------+------+------------+ 1.1.8 將數(shù)據(jù)裝入表中創(chuàng)建表后,需要填入內(nèi)容。通過LOAD DATA和INSERT語句可以完成該任務(wù)。 假定你的寵物紀錄描述如下。(假定在MySQL中期望的日期格式是YYYY-MM-DD;這可能與你習慣的不同。) name | owner | species | sex | Birth | death | Fluffy | Harold | Cat | F | 1993-02-04 |
| Claws | Gwen | Cat | M | 1994-03-17 |
| Buffy | Harold | dog | F | 1989-05-13 |
| Fang | Benny | dog | M | 1990-08-27 |
| Bowser | Diane | dog | M | 1979-08-31 | 1995-07-29 | Chirpy | Gwen | bird | F | 1998-09-11 |
| Whistler | Gwen | bird |
| 1997-12-09 |
| Slim | Benny | snake | M | 1996-04-29 |
|
|
|
|
|
|
|
因為你是從一個空表開始的,填充它的一個簡易方法是創(chuàng)建一個文本文件,每個動物各一行,然后用一個語句將文件的內(nèi)容裝載到表中。 你可以創(chuàng)建一個文本文件“pet.txt”,每行包含一個記錄,用定位符(tab)把值分開,并且以CREATE TABLE語句中列出的列次序給出。對于丟失的值(例如未知的性別,或仍然活著的動物的死亡日期),你可以使用NULL值。為了在你的文本文件中表示這些內(nèi)容,使用N(反斜線,字母N)。例如,Whistler鳥的記錄應(yīng)為(這里值之間的空白是一個定位符): name | owner | species | sex | birth | death | Whistler | Gwen | Bird | N | 1997-12-09 | N |
|
|
|
|
|
|
想將文本文件“pet.txt”裝載到pet表中,使用這個命令: mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet; 請注意如果用Windows中的編輯器(使用
做為行的結(jié)束符)創(chuàng)建文件,應(yīng)使用: mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet -> LINES TERMINATED BY '
';(在運行OS X的Apple機上,應(yīng)使用行結(jié)束符'
'。)如果你愿意,你能明確地在LOAD DATA語句中指出列值的分隔符和行尾標記,但是默認標記是定位符和換行符。這對讀入文件“pet.txt”的語句已經(jīng)足夠。如果該語句失敗,可能是你安裝的MySQL不與使用默認值的本地文件兼容。(關(guān)于如何更改請參見MYSQL中文使用手冊5.6.4節(jié),“LOAD DATA LOCAL安全問題”。) 1.1.9 修改紀錄例如:將張三的出生年月改為1971-01-10 mysql> update name set csny='1971-01-10' where xm='張三'; 1.1.10 刪除紀錄例如:刪除張三的紀錄。 mysql> delete from name where xm='張三'; 1.1.11 刪庫和刪表drop database 庫名; drop table 表名; 1.1.12 增加MySQL用戶使用GRANT GRANT命令用來建立新用戶,指定用戶口令并增加用戶權(quán)限。其格式如下: mysql> GRANT <privileges> ON <what>-> TO <user> [IDENTIFIED BY "<password>"]-> [WITH GRANT OPTION]; |
|
正如你看到的,在這個命令中有許多待填的內(nèi)容。讓我們逐一地對它們進行介 紹,并最終給出一些例子以讓你對它們的協(xié)同工作有一個了解。 <privileges>是一個用逗號分隔的你想要賦予的權(quán)限的列表。你可以指定的 權(quán)限可以分為三種類型: 數(shù)據(jù)庫/數(shù)據(jù)表/數(shù)據(jù)列權(quán)限: ALTER: 修改已存在的數(shù)據(jù)表(例如增加/刪除列)和索引。CREATE: 建立新的數(shù)據(jù)庫或數(shù)據(jù)表。DELETE: 刪除表的記錄。DROP: 刪除數(shù)據(jù)表或數(shù)據(jù)庫。INDEX: 建立或刪除索引。INSERT: 增加表的記錄。SELECT: 顯示/搜索表的記錄。UPDATE: 修改表中已存在的記錄。 |
|
全局管理權(quán)限: FILE: 在MySQL服務(wù)器上讀寫文件。PROCESS: 顯示或殺死屬于其它用戶的服務(wù)線程。RELOAD: 重載訪問控制表,刷新日志等。SHUTDOWN: 關(guān)閉MySQL服務(wù)。 |
|
特別的權(quán)限: ALL: 允許做任何事(和root一樣)。USAGE: 只允許登錄--其它什么也不允許做。 |
|
這些權(quán)限所涉及到的MySQL的特征,其中的一些我們至今還沒看到,而其中的絕大部分是你所熟悉的。 <what> 定義了這些權(quán)限所作用的區(qū)域。*.*意味著權(quán)限對所有數(shù)據(jù)庫和數(shù)據(jù)表有效。dbName.*意味著對名為dbName的數(shù)據(jù)庫中的所有數(shù)據(jù)表有效。dbName.tblName意味著僅對名為dbName中的名為tblName的數(shù)據(jù)表有效。你甚至還可以通過在賦予的權(quán)限后面使用圓括號中的數(shù)據(jù)列的列表以指定權(quán)限僅對這些列有效(在后面我們將看到這樣的例子)。 <user>指定可以應(yīng)用這些權(quán)限的用戶。在MySQL中,一個用戶通過它登錄的用戶名和用戶使用的計算機的主機名/IP地址來指定。這兩個值都可以使用%通配符(例如kevin@%將允許使用用戶名kevin從任何機器上登錄以享有你指定的權(quán)限)。 <password>指定了用戶連接MySQL服務(wù)所用的口令。它被用方括號括起,說明IDENTIFIED BY "<password>"在GRANT命令中是可選項。這里指定的口令會取代用戶原來的密碼。如果沒有為一個新用戶指定口令,當他進行連接時就不需要口令。 這個命令中可選的WITH GRANT OPTION部分指定了用戶可以使用GRANT/REVOKE命令將他擁有的權(quán)限賦予其他用戶。請小心使用這項功能--雖然這個問題可能不是那么明顯!例如,兩個都擁有這個功能的用戶可能會相互共享他們的權(quán)限,這也許不是你當初想看到的。 讓我們來看兩個例子。建立一個名為dbmanager的用戶,他可以使用口令managedb從server.host.net連接MySQL,并僅僅可以訪問名為db的數(shù)據(jù)庫的全部內(nèi)容(并可以將此權(quán)限賦予其他用戶),這可以使用下面的GRANT命令: mysql> GRANT ALL ON db.*-> TO [email protected]> IDENTIFIED BY "managedb"-> WITH GRANT OPTION; |
|
現(xiàn)在改變這個用戶的口令為funkychicken,命令格式如下: 請注意我們沒有賦予任何另外的權(quán)限(the USAGE權(quán)限只能允許用戶登錄),但是用戶已經(jīng)存在的權(quán)限不會被改變。 現(xiàn)在讓我們建立一個新的名為jessica的用戶,他可以從host.net域的任意機器連接到MySQL。他可以更新數(shù)據(jù)庫中用戶的姓名和email地址,但是不需要查閱其它數(shù)據(jù)庫的信息。也就是說他對db數(shù)據(jù)庫具有只讀的權(quán)限(例如,SELECT),但是他可以對Users表的name列和email列執(zhí)行UPDATE操作。命令如下: mysql> GRANT SELECT ON db.*-> TO jessica@%.host.net-> IDENTIFIED BY "jessrules";mysql> GRANT UPDATE (name,email) ON db.Users-> TO jessica@%.host.net; |
|
請注意在第一個命令中我們在指定Jessica可以用來連接的主機名時使用了%(通配符)符號。此外,我們也沒有給他向其他用戶傳遞他的權(quán)限的能力,因為我們在命令的最后沒有帶上WITH GRANT OPTION。第二個命令示范了如何通過在賦予的權(quán)限后面的圓括號中用逗號分隔的列的列表對特定的數(shù)據(jù)列賦予權(quán)限。 使用REVOKE 正如你所預期的那樣,REVOKE命令是用來去除一個用戶以前被賦予的權(quán)限的。命令的語法如下: mysql> REVOKE <privileges> [(<columns>)]-> ON <what> FROM <user>; |
|
這個命令中各部分的功能和在上面的GRANT命令中時一樣。要去除Jessica的合作者的DROP權(quán)限(例如,如果他經(jīng)常錯誤地刪除數(shù)據(jù)庫和表),你可以使用下面的命令: mysql> REVOKE DROP ON *.* FROM idiot@%.host.net; |
|
去除一個用戶的登錄權(quán)限大概是唯一不能使用REVOKE的。REVOKE ALL ON *.*會去除用戶的所有權(quán)限,但是他還可以登錄,要完全地刪除一個用戶,你需要在user表中刪除相應(yīng)的記錄: mysql> DELETE FROM user-> WHERE User="idiot" AND Host="%.host.net"; |
|
用新增的用戶如果登錄不了MySQL,在登錄時用如下命令: mysql -u user_1 -p -h 192.168.113.50 (-h后跟的是要登錄主機的ip地址) 1.1.13 備份與恢復1.1.13.1 備份備份單個據(jù)庫時 mysqldump –u root –p --databases abc >/ abc.sql Enter password: (輸入密碼) 備份多個據(jù)庫時 mysqldump –u root –p --databases abc ,aaa > /abc.sql Enter password: (輸入密碼) 備份全部據(jù)庫時時,命令為mysqldump –u root --all-databases >/backup.sql Enter password: (輸入密碼) 最穩(wěn)妥的MYISAM數(shù)據(jù)庫的備份方法。在默認的情況下,mysqldump程序會在備份每一個數(shù)據(jù)表之前給它加個讀操作鎖以防止它在備份過程中發(fā)生變化,但這并不能防止數(shù)據(jù)表B在mysqldump 程序備份數(shù)據(jù)表A的時候被修改。這就有可能導致一種后果:數(shù)據(jù)表A引用了數(shù)據(jù)表B里的某條記錄,但這條記錄卻在mysqldump 程序備份數(shù)據(jù)表B之前被刪除了。解決這個問題的辦法是用上 --lock-all-tables 選項: >mysqldump –u root –p –lock-all-tables databasename> /back.sql 1.1.13.2 恢復恢復多個數(shù)據(jù)庫時時,命令為 mysql –u root –p < my_back.sql Enter password: (輸入密碼) 恢復單個數(shù)據(jù)庫時時,命令為mysql –u root –p databasename < my_back.sql Enter password: (輸入密碼) 1.1.13.3 計劃備份采用linux 計劃工具crontab Crontab –e 按 “i”鍵開始編寫計劃。 */1 * * * * mysqldump –u root –p --databases dbname1 dabname2 ….> /mysqlback/my_back.sql 注意:計劃工具crontab的使用在《Neoshine Linux Server and Sybase 的安裝.doc》有較詳細介紹。 1.1.13.4 存儲過程的備份與恢復>mysqldump –u root –p “--where=db=’dbname’” --no-create-info Mysql proc > back.sql (“”分兩行寫了,是一條命令) 在下面的例子里,db是proc數(shù)據(jù)表用來存放數(shù)據(jù)庫名字的數(shù)據(jù)列,而--no-create-info 選項的作用是讓mysql在為proc數(shù)據(jù)表制作備份時不生成create table命令,這樣在恢復備份時就不會破壞proc數(shù)據(jù)表里屬于其他數(shù)據(jù)庫的存儲過程了。 這里還有一個細節(jié)問題需要注意:在使用back.sql文件去恢復備份之前,必須要不proc數(shù)據(jù)表里屬于dbname的現(xiàn)有SP全部刪掉---------如果不這樣做,當備份文件里的SP試圖覆蓋數(shù)據(jù)表里的現(xiàn)有SP時就將觸發(fā)一個錯誤。 Delete from mysql.proc where db=’dbname’ 注釋dbname為數(shù)據(jù)庫名。 恢復時命令是一樣的 Mysql –u root –p mysql < back.sql 1.1.13.5 具體操作操作簡單并且快捷的備份和恢復方法,也可以用SQLyog去實現(xiàn),它的備份和恢復功能已經(jīng)很完備(建議使用這種方法備份和恢復)。首先將備份的數(shù)據(jù)庫備份成 xxx.sql文件,然后在將這個文件倒入到你想要恢復的數(shù)據(jù)庫。(在倒入前,先要建立一個要空的數(shù)據(jù)庫,用來將備份的數(shù)據(jù)庫文件倒入。)具體的 操作可以參考第二部分MYSQL圖形使用工具。 啟動SQLyog首先連接要備份的數(shù)據(jù)庫的服務(wù)器,然后右鍵點擊要備份的數(shù)據(jù)庫如下界面,然后選中export databases as sql statement左鍵單擊,在 Export to file 輸入要備份文件的地址,或點擊后面的按紐指定位置。 然后點擊Export,便執(zhí)行將數(shù)據(jù)庫備份到SQL文件。當Export successful,關(guān)閉該界面。 恢復時,同樣用SQLyog連接到要恢復的數(shù)據(jù)庫的服務(wù)器,然后建立好一個空的數(shù)據(jù)庫,用來做恢復剛才備份SQL文件數(shù)據(jù)庫。然后同樣右鍵點擊要恢復的數(shù)據(jù)庫在彈出的窗口中,點按紐指定剛才備份的SQL文件。點擊Execute按紐。便 進行了恢復數(shù)據(jù)庫的操作。待執(zhí)行完畢后,備份恢復的工作就完成了。
信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
|