標籤:mysql命令詳解
Mysql的所有命令都可以通過線上文檔或者是通過help command方式來獲得協助。
以下說一些工作中經常用到的mysql操作命令。
[mysql資料庫]
[descibe]語句:用來顯示表的結構,即組成表的各欄位(列)的資訊.需要指定"庫名.表名"作為參數
mysql >use mysql; mysql >descibe user;
[create建立]
使用create建立使用者
mysql >create user ‘wangwu‘@‘192.168.1.%‘ identified by ‘123456‘;【建立使用者王五,並限制到192.168.1.0網段】 mysql >create database xianshang character set utf8 collate utf8_bin;【建立資料庫,設定編碼格式,設定定序】
create table [表名] (欄位1 名稱 type,欄位2 名稱 type,.....,primary key (主健名))
[例如]
建立users表,表中包含欄位資訊為username不超過16位元組的字串,userpassword不超過48位元組的字串,default使用者佈建預設的密碼字串為空白,主健為username必須是唯一的.
mysql >use auth; mysql >create talbe users (username char(16) not null,userpassword char(48) defautlt ‘‘,primary key (username));
[刪除一個資料表/庫]
drop table語句:用於刪除庫中的表,指定"庫名.表名"作為參數
mysql >drop table auth.users; mysql >drop database auth;
[插入資料記錄]
insert into用於向表中插入新的資料記錄
格式:insert into [表名](欄位1,欄位2,....)values(欄位1的值,欄位2的值,....)
[例如]
向auth庫的users表插入一條記錄。
mysql >use auth; mysql >insert into users(username,userpassword) values(‘zhangsan‘,password(‘123456‘));
如果插入的記錄包括表中的所有欄位,則可省略欄位部分
mysql >insert into users values(‘zhangsan’,password(‘123456‘));
[查詢資料記錄]
select語句:表示所有欄位時,可以用“*”此時where運算式可以省略。
select 欄位1,欄位2,... from [表名] where 條件運算式
mysql >select * from auth.users; mysql >select username,userpassword from auth.users where username=‘zhangsan‘;
[修改資料記錄]
update語句:
update 表名 set 欄位名1=欄位值1[,欄位名2=欄位值2] where 條件運算式
mysql >update auth.users set userpassword=password(‘‘) where username=‘lisi‘;
在mysql資料庫中的各種使用者包括root的資訊都儲存在mysql的user表中,可以用update語句直接修改mysql庫的user表的password欄位值,也可以使用mysqladmin工具來設定密碼。
[刪除資料記錄]
delete語句:
delete from 表名 where 條件運算式
mysql >delete from auth.users where username=‘lisi’; mysql >select * from auth.users;
mysql資料庫中預設添加了從本機訪問的空使用者(使用者名稱和密碼都為空白)基於安全考慮,應該刪除這些空使用者。
mysql >select host,user,password from mysql.user where user=‘‘; mysql >delete from mysql.user where user=‘‘;
[維護mysql資料庫]
[使用者授權]
grant語句:當使用者存在時,grant用於對使用者資訊修改,否則grant將建立新的使用者
grant 許可權列表 on 庫名.表名 to ‘使用者名稱‘@‘來源地址‘ [identified by ‘密碼‘;] mysql >grant select on auth.* to ‘wangfei‘@‘localhost‘ identified by ‘123‘; grant語句授權的使用者記錄會儲存到mysql庫的user,db,host,tables_priv等相關表中,無需重新整理即可生效。
來源地址可以是[(%代表任何)(網域名稱/ip/網段)]
例如:"%.benet.com","192.168.88.%"等等。
當省略[identified by]時,表示密碼為空白即可登入。
[查看授權]
show grants語句:
show grants for 使用者名稱@來源地址
mysql >show grants for ‘wangfei‘@‘192.168.88.109‘;
[撤銷許可權]
revoke語句:
revoke 許可權列表 on 資料庫名.表名 from 使用者名稱@來源地址
撤銷張三使用者從本機訪問的所有許可權如下:
mysql >revoke all on auth.* from ‘zhangsan‘@‘localhost‘; mysql >show grants for ‘zhangsan‘@‘localhost‘;
[資料庫的備份與恢複]
備份可採用的方式有很多,比如可以打包資料庫檔案夾/var/local/mysql/var/或者使用專用的匯出工具mysqldump
格式1:匯出指定庫中的部分表
mysqldump [選項] 庫名 [表名1] [表名2] ... > /備份路徑/備份檔案名
將mysql庫中的user表匯出為mysql-user.sql
mysql >mysqldump -u root -p mysql user 〉mysql-user.sql
格式2:匯出一個或多個完整的庫{包括其中的所有表}
mysqldump [選項] --databases 庫名1 [庫名2] ... > /備份路徑/備份檔案名
將整個auth庫匯出為auth.sql檔案,都是以root使用者進行身分識別驗證。
mysql >mysqldump -u root -p --databases auth >auth.sql
格式3:匯出所有的庫
mysqldump [選項] --all-databases > /備份路徑/備份檔案名
當需要備份整個mysql伺服器中的所有庫時,資料量相對較大,可以添加--opt選項一最佳化執行速度,例如:以下將建立備份檔案all-data.sql其中包括mysql伺服器的所有庫。
mysql >mysqldump -u root -p --opt --all-databases > all.-data.sql
其中常用的選項包括-u,-p用來指定使用者名稱和密碼。
跨主機備份:
下列的命令可以將host1上的sourceDB複製到host2上的targetDB,前提是host2上已經建立targetDB資料庫。
mysqldump --host=host1 --opt sourceDB | mysql --host=host2 -C targetDB
只備份表結構:
mysqldump --no-data --databases mydatabase1 mydatabase2 mydatabase3 > test.sql
[查看備份檔案內容]
通過mysqldump工具匯出的sql指令碼是文字檔,其中"/*..../"部分或以"--"開頭的行表示注釋資訊。使用grep,less,cat等文本工具可以查看指令碼內容。例如,執行以下操作可以過濾出auth.sql指令碼中的資料庫動作陳述式。
[[email protected] ~]#grep -v "^--" auth.sql |grep -v "^/" |grep -v "^$"
[恢複資料庫]
mysql [選項] [庫名] [表名] < /備份路徑/備份檔案名
以下操作將表匯入到庫test
[[email protected] ~]#mysql -u root -p test 〈 mysql-user.sql
以下操作將恢複所有的庫
[[email protected] ~]#mysql -u root -p 〈 ~/all-data.sql
------------------------------------------------------------------------------------------
【結合crontab命令實現定時備份】
每天的淩晨2:30備份某一個主機上的所有資料庫並壓縮dump檔案為gz格式,crontab -e
30 2 * * * root mysqldump -u root -pPASSWORD --all-databases | gzip > /mnt/disk2/database_`date ‘+%m-%d-%Y‘`.sql.gz
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5B/63/wKioL1UH_qDBD64FAACKdzFSmqw692.jpg" title="111.png" alt="wKioL1UH_qDBD64FAACKdzFSmqw692.jpg" /> 前面五個參數分別表示分鐘,小時,日,月,周,*表示任意,date ‘+%m-%d-%Y‘得到當前日期的MM-DD-YYYY格式。
未完待續。。。
本文出自 “Hello_World” 部落格,請務必保留此出處http://coward.blog.51cto.com/7599475/1621555
Mysql命令詳解