1. 程式人生 > >linux mysql 操作命令

linux mysql 操作命令

轉自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/18/2216279.html

1.linux下啟動mysql的命令:
mysqladmin start
/ect/init.d/mysql start (前面為mysql的安裝路徑)

2.linux下重啟mysql的命令:
mysqladmin restart
/ect/init.d/mysql restart (前面為mysql的安裝路徑)

3.linux下關閉mysql的命令:
mysqladmin shutdown
/ect/init.d/mysql shutdown (前面為mysql的安裝路徑)

4.連線本機上的mysql:
進入目錄mysql\bin,再鍵入命令mysql -uroot -p, 回車後提示輸入密碼。
退出mysql命令:exit(回車)

5.修改mysql密碼:
mysqladmin -u使用者名稱 -p舊密碼 password 新密碼
或進入mysql命令列SET PASSWORD FOR root=PASSWORD("root");

6.增加新使用者。(注意:mysql環境中的命令後面都帶一個分號作為命令結束符)
grant select on 資料庫.* to 使用者名稱@登入主機 identified by "密碼"
如增加一個使用者test密碼為123,讓他可以在任何主機上登入, 並對所有資料庫有查詢、插入、修改、刪除的許可權。首先用以root使用者連入mysql,然後鍵入以下命令:
grant select,insert,update,delete on *.* to " Identified by "123";

二、有關mysql資料庫方面的操作
必須首先登入到mysql中,有關操作都是在mysql的提示符下進行,而且每個命令以分號結束

1、顯示資料庫列表。
show databases;
2、顯示庫中的資料表:
use mysql; //開啟庫
show tables;
3、顯示資料表的結構:
describe 表名;
4、建庫:
create database 庫名;

GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
UTF8: CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
5、建表:
use 庫名;
create table 表名(欄位設定列表);
6、刪庫和刪表:
drop database 庫名;
drop table 表名;
7、將表中記錄清空:
delete from 表名;

truncate table  表名;
8、顯示錶中的記錄:
select * from 表名;

9、編碼的修改
如果要改變整個mysql的編碼格式:  
啟動mysql的時候,mysqld_safe命令列加入  
--default-character-set=gbk 

如果要改變某個庫的編碼格式:在mysql提示符後輸入命令  
alter database db_name default character set gbk;

10.重命名錶

alter table t1 rename t2;

11.檢視sql語句的效率

 explain < table_name >

例如:explain select * from t3 where id=3952602;

12.用文字方式將資料裝入資料庫表中(例如D:/mysql.txt)

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

三、資料的匯入匯出

1、文字資料轉到資料庫中
文字資料應符合的格式:欄位資料之間用tab鍵隔開,null值用來代替。例:
1 name duty 2006-11-23
資料傳入命令 load data local infile "檔名" into table 表名;

2、匯出資料庫和表
mysqldump --opt news > news.sql(將資料庫news中的所有表備份到news.sql檔案,news.sql是一個文字檔案,檔名任取。)
mysqldump --opt news author article > author.article.sql(將資料庫news中的author表和article表備份到author.article.sql檔案, author.article.sql是一個文字檔案,檔名任取。)
mysqldump --databases db1 db2 > news.sql(將資料庫dbl和db2備份到news.sql檔案,news.sql是一個文字檔案,檔名任取。)
mysqldump -h host -u user -p pass --databases dbname > file.dump
就是把host上的以名字user,口令pass的資料庫dbname匯入到檔案file.dump中
mysqldump --all-databases > all-databases.sql(將所有資料庫備份到all-databases.sql檔案,all-databases.sql是一個文字檔案,檔名任取。)

3、匯入資料
mysql < all-databases.sql(匯入資料庫)
mysql>source news.sql;(在mysql命令下執行,可匯入表)


一、連線MySQL  
格式: mysql -h主機地址 -u使用者名稱 -p使用者密碼

1、例1:連線到本機上的MYSQL。

首先在開啟DOS視窗,然後進入目錄 mysqlbin,再鍵入命令mysql -uroot -p,回車後提示你輸密碼,如果剛安裝好MYSQL,超級使用者root是沒有密碼的,故直接回車即可進入到MYSQL中了,MYSQL的提示符是: mysql>。

2、例2:連線到遠端主機上的MYSQL。假設遠端主機的IP為:110.110.110.110,使用者名稱為root,密碼為abcd123。則鍵入以下命令:

mysql -h110.110.110.110 -uroot -pabcd123

(注:u與root可以不用加空格,其它也一樣)

3、退出MYSQL命令: exit (回車)。

二、修改密碼

格式:mysqladmin -u使用者名稱 -p舊密碼 password 新密碼

1、例1:給root加個密碼ab12。首先在DOS下進入目錄mysqlbin,然後鍵入以下命令:

mysqladmin -uroot -password ab12

注:因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。

2、例2:再將root的密碼改為djg345。

mysqladmin -uroot -pab12 password djg345

三、增加新使用者。(注意:和上面不同,下面的因為是MySQL環境中的命令,所以後面都帶一個分號作為命令結束符)

格式:grant select on 資料庫.* to 使用者名稱@登入主機 identified by \"密碼\"

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

grant select,insert,update,
delete on *.* to [email protected]\"%\" Identified by \"abc\";

但例1增加的使用者是十分危險的,你想如某個人知道test1的密碼,那麼他就可以在internet上的任何一臺電腦上登入你的MySQL資料庫並對你的資料可以為所欲為了,解決辦法見例2。

例2、增加一個使用者test2密碼為abc,讓他只可以在localhost上登入,並可以對資料庫mydb進行查詢、插入、修改、刪除的操作 (localhost指本地主機,即MySQL資料庫所在的那臺主機),這樣使用者即使用知道test2的密碼,他也無法從internet上直接訪問資料 庫,只能通過MySQL主機上的web頁來訪問。

grant select,insert,update,
delete on mydb.* to [email protected] identified by \"abc\";

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

grant select,insert,update,delete on mydb
.* to [email protected] identified by \"\";

啟動:net start mySql;
進入:mysql -u root -p/mysql -h localhost -u root -p databaseName;
列出資料庫:show databases;
選擇資料庫:use databaseName;
列出表格:show tables;
顯示錶格列的屬性:show columns from tableName;
建立資料庫:source fileName.txt;
匹配字元:可以用萬用字元_代表任何一個字元,%代表任何字串;
增加一個欄位:alter table tabelName add column fieldName dateType;
增加多個欄位:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;
多行命令輸入:注意不能將單詞斷開;當插入或更改資料時,不能將欄位的字串展開到多行裡,否則硬回車將被儲存到資料中;
增加一個管理員帳戶:grant all on *.* to [email protected] identified by "password";
每條語句輸入完畢後要在末尾填加分號';',或者填加'\g'也可以;
查詢時間:select now();
查詢當前使用者:select user();
查詢資料庫版本:select version();
查詢當前使用的資料庫:select database();

1、刪除student_course資料庫中的students資料表:
rm -f student_course/students.*

2、備份資料庫:(將資料庫test備份)
mysqldump -u root -p test>c:\test.txt
備份表格:(備份test資料庫下的mytable表格)
mysqldump -u root -p test mytable>c:\test.txt
將備份資料匯入到資料庫:(導回test資料庫)
mysql -u root -p test

3、建立臨時表:(建立臨時表zengchao)
create temporary table zengchao(name varchar(10));

4、建立表是先判斷表是否存在
create table if not exists students(……);

5、從已經有的表中複製表的結構
create table table2 select * from table1 where 1<>1;

6、複製表
create table table2 select * from table1;

7、對錶重新命名
alter table table1 rename as table2;

8、修改列的型別
alter table table1 modify id int unsigned;//修改列id的型別為int unsigned
alter table table1 change id sid int unsigned;//修改列id的名字為sid,而且把屬性修改為int unsigned

9、建立索引
alter table table1 add index ind_id (id);
create index ind_id on table1 (id);
create unique index ind_id on table1 (id);//建立唯一性索引

10、刪除索引
drop index idx_id on table1;
alter table table1 drop index ind_id;

11、聯合字元或者多個列(將列id與":"和列name和"="連線)
select concat(id,':',name,'=') from students;

12、limit(選出10到20條)<第一個記錄集的編號是0>
select * from students order by id limit 9,10;

13、MySQL不支援的功能
事務,檢視,外來鍵和引用完整性,儲存過程和觸發器


14、MySQL會使用索引的操作符號
<,<=,>=,>,=,between,in,不帶%或者_開頭的like

15、使用索引的缺點
1)減慢增刪改資料的速度;
2)佔用磁碟空間;
3)增加查詢優化器的負擔;
當查詢優化器生成執行計劃時,會考慮索引,太多的索引會給查詢優化器增加工作量,導致無法選擇最優的查詢方案;

16、分析索引效率
方法:在一般的SQL語句前加上explain;
分析結果的含義:
1)table:表名;
2)type:連線的型別,(ALL/Range/Ref)。其中ref是最理想的;
3)possible_keys:查詢可以利用的索引名;
4)key:實際使用的索引;
5)key_len:索引中被使用部分的長度(位元組);
6)ref:顯示列名字或者"const"(不明白什麼意思);
7)rows:顯示MySQL認為在找到正確結果之前必須掃描的行數;
8)extra:MySQL的建議;

17、使用較短的定長列
1)儘可能使用較短的資料型別;
2)儘可能使用定長資料型別;
a)用char代替varchar,固定長度的資料處理比變長的快些;
b)對於頻繁修改的表,磁碟容易形成碎片,從而影響資料庫的整體效能;
c)萬一出現數據表崩潰,使用固定長度資料行的表更容易重新構造。使用固定長度的資料行,每個記錄的開始位置都是固定記錄長度的倍數,可以很容易被檢測到,但是使用可變長度的資料行就不一定了;
d)對於MyISAM型別的資料表,雖然轉換成固定長度的資料列可以提高效能,但是佔據的空間也大;

18、使用not null和enum
儘量將列定義為not null,這樣可使資料的出來更快,所需的空間更少,而且在查詢時,MySQL不需要檢查是否存在特例,即null值,從而優化查詢;
如果一列只含有有限數目的特定值,如性別,是否有效或者入學年份等,在這種情況下應該考慮將其轉換為enum列的值,MySQL處理的更快,因為所有的enum值在系統內都是以標識數值來表示的;

19、使用optimize table
對於經常修改的表,容易產生碎片,使在查詢資料庫時必須讀取更多的磁碟塊,降低查詢效能。具有可變長的表都存在磁碟碎片問題,這個問題對blob資料型別更為突出,因為其尺寸變化非常大。可以通過使用optimize table來整理碎片,保證資料庫效能不下降,優化那些受碎片影響的資料表。 optimize table可以用於MyISAM和BDB型別的資料表。實際上任何碎片整理方法都是用mysqldump來轉存資料表,然後使用轉存後的檔案並重新建資料表;

20、使用procedure analyse()
可以使用procedure analyse()顯示最佳型別的建議,使用很簡單,在select語句後面加上procedure analyse()就可以了;例如:
select * from students procedure analyse();
select * from students procedure analyse(16,256);
第二條語句要求procedure analyse()不要建議含有多於16個值,或者含有多於256位元組的enum型別,如果沒有限制,輸出可能會很長;

21、使用查詢快取
1)查詢快取的工作方式:
第一次執行某條select語句時,伺服器記住該查詢的文字內容和查詢結果,儲存在快取中,下次碰到這個語句時,直接從快取中返回結果;當更新資料表後,該資料表的任何快取查詢都變成無效的,並且會被丟棄。
2)配置快取引數:
變數:query_cache _type,查詢快取的操作模式。有3中模式,0:不快取;1:快取查詢,除非與 select sql_no_cache開頭;2:根據需要只快取那些以select sql_cache開頭的查詢; query_cache_size:設定查詢快取的最大結果集的大小,比這個值大的不會被快取。

22、調整硬體
1)在機器上裝更多的記憶體;
2)增加更快的硬碟以減少I/O等待時間;
尋道時間是決定效能的主要因素,逐字地移動磁頭是最慢的,一旦磁頭定位,從磁軌讀則很快;
3)在不同的物理硬碟裝置上重新分配磁碟活動;
如果可能,應將最繁忙的資料庫存放在不同的物理裝置上,這跟使用同一物理裝置的不同分割槽是不同的,因為它們將爭用相同的物理資源(磁頭)。

相關推薦

linux mysql 操作命令

轉自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/18/2216279.html 1.linux下啟動mysql的命令:mysqladmin start/ect/init.d/mysql start (前面為mysql的安裝路徑)

LinuxMysql 操作命令

root 性能 密碼 簡單 nes pla not 註意 解決 Linux下Mysql 操作命令 一、連接MySQL 格式: mysql -h主機地址 -u用戶名 -p用戶密碼 1、例1:連接到本機上的MYSQL。 首先在打開DOS窗口,然後進入目錄 mysqlbin,

Linux基本操作命令

程序 詳細 位置 tool -1 擁有 Owner ss命令 單位 一、 ls ls最常用的參數有三個: -a -l -F 1、ls -a Linux上的文件以.開頭的文件被系統視為隱藏文件,僅用ls命令是看不到他們的,而用ls -a除了顯示 一般文件名外,連隱藏文

linux目錄操作命令 tree

識別碼 繪圖 符號連接 linux float ica files 範圍 ims linux目錄操作命令 tree新建linux運維,常用命令目錄tree 命令語法選項參數實例 tree 命令 ls命令以目錄樹的方式來顯示目錄的內容。 語法 tree

linux目錄操作命令 pwd

實例 語法 lis sans back code inf ans overflow linux目錄操作命令 pwd新建linux運維,常用命令目錄pwd 命令語法選項參數實例 pwd 命令 pwd命令是用來"查看”當前工作目錄“的完整路徑。 語法 p

linux常用操作命令

bsp 文件內容 查找 remove move 分頁 force pwd 搜索 常用指令 ls   顯示文件或目錄(list) -l 列出文件詳細信息l(list) -a 列出當前目錄下所有文件及目錄,

Linux常用操作命令之cat

常用操作命令 文本內容電視cat:顯示文本文件 使用cat命令可以顯示文本文件的內容,也可以把幾個文件的內容追加到另一個文件中。如果沒有指定文件,或者文件為“-”,那麽就從標準輸入讀取。命令語法: cat [選項] [文件]選項: -n :對輸出的所有行編號 -b :

linux目錄操作命令大全 linux系統開發學習

dir 一次 時間 掛載 變換 方式 遞歸 介紹 inux Linux的目錄結構為樹形結構,最頂級的目錄為根目錄,其他目錄通過掛載添加到樹中,通過解除掛載來進行刪除,除此之外,還可以對目錄進行其他處理操作,常用的目錄處理命令如下:1. ls命令(列出目錄)常用用法:ls –

linux基本操作命令的使用

lin usr 查看 特殊符號 nbsp files 進一步 image mem 為了盡快完成對公司的linux服務器的部署,安裝,操作,需要進一步學習Linux系統中基本的文件和目錄管理命令,同時要熟悉獲取命令幫助的常用方法以便及時了解與服務器管理、維護相關的其他命令的用

linux日常操作命令

linux 啟動 linu nbsp reboot ebo div 系統啟動 blog who -b #查看最後一次系統啟動的時間。 last reboot #查看Linu

Python多線程登錄遠端linux執行操作命令

Python多線程登錄遠端linux執行什麽是進程?進程,就是程序的一個運行狀態。 什麽是線程?為什麽要使用線程? 線程,是進程內部的“執行單元”。一個進程,可以包含多個線程,每個線程又可以執行不同的代碼。即,通過多個線程,可以使一個進程同時執行多個功能!前提安裝sshpass解法1.#!/usr/bin/p

Linux學習並不難》Linux常用操作命令(10):cal命令顯示日歷信息

Linux cal 日歷 8.10 《Linux學習並不難》Linux常用操作命令(10):cal命令顯示日歷信息 使用cal命令可以顯示計算機系統的日歷。 命令語法: cal [選項] [[[日] 月] 年] 命令中各選項的含義如表所示。 選項 選項含義 -j顯示

Linux學習並不難》Linux常用操作命令(6):uname命令顯示計算機和系統相關信息

Linux8.6 《Linux學習並不難》Linux常用操作命令(6):uname命令顯示計算機和系統相關信息 使用uname命令可以顯示計算機以及操作系統的相關信息,比如計算機硬件架構、內核發行號、操作系統名稱、計算機主機名等。 命令語法: uname [選項] 命令中各選項的

Linux常用操作命令(7):date命令顯示或設置系統日期和時間

Linux 日期 date 8.7 《Linux學習並不難》Linux常用操作命令(7):date命令顯示或設置系統日期和時間 使用date命令可以顯示和設置計算機系統的日期和時間。只有超級用戶才有權限使用date命令設置 日期和時間,而一般用戶只能使用date命令顯示日期和時間。

Linux學習並不難》Linux常用操作命令(13):uptime命令顯示系統已經運行的時間

Linux uptime 8.13 《Linux學習並不難》Linux常用操作命令(13):uptime命令顯示系統已經運行的時間使用uptime命令可以顯示系統已經運行了多長時間,它依次顯示下列信息:現在時間、系統已經運行了多長時間、目前有多少登錄用戶、系統在過去的1分鐘、5分鐘和15分鐘內的平均

Linux學習並不難》Linux常用操作命令(1): cat命令顯示文本文件內容

Linux cat 8.1 《Linux學習並不難》Linux常用操作命令(1): cat命令顯示文本文件內容使用cat命令可以顯示文本文件的內容,也可以把幾個文件內容附加到另一個文件中。如果沒有指定文件,或者文件為“-”,那麽就從標準輸入讀取。命令語法:cat [選項] [文件]命令中各選項的含義

Linux-MySQL基本命令-SQL語句

bash ngs 男女 mysql基本命令 去掉 好的 name 分頁 最好 服務端命令SQL在數據庫系統中,SQL語句不區分大小寫(建議用大寫) ?SQL語句可單行或多行書寫,以“;”結尾 ?關鍵詞不能跨多行或簡寫 ?用空格和縮進來提高語句的可讀性 ?子句通常位於獨立行

mysql 操作命令小結

show databases; create database mydb; 顯示資料庫 建立資料庫 use xxdatabse; 使用xxdatabse資料庫 show tables;

Linux常用操作命令+詳解

系統資訊 arch 顯示機器的處理器架構(1) uname -m 顯示機器的處理器架構(2) uname -r 顯示正在使用的核心版本 dmidecode -q 顯示硬體系統部件 - (SMBIOS / DMI) hdparm -i /dev/hda 羅列一個磁碟的架構特性

Linux shell 操作命令 cd

1、簡介     cd 命令是 change directory 的縮寫     2、主要功能     切換當前目錄至指定的目錄     3、