Mysql命令詳解

來源:互聯網
上載者:User

標籤: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命令詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.