一、服務啟動與停止命令
net start mysql (啟動服務)
net stop mysql (終止服務)
二、登錄登出命令
mysql -u用戶名 -p密碼 -h連接的主機IP -p端口號 (登錄)
exit、quit(登出)
三、修改密碼命令
1、登錄mysql;
2、use mysql;
3、update user set password=PASSWORD('新密碼') where user='用戶名';
4、flush privileges;#更新權限
5、quit;#退出
四、增加新用戶
1、 首先以root用戶連入Mysql
2、 grant 權限 on數據庫名 to用戶名@登錄主機 identified by“密碼”;
3、 flush privileges; 更新權限
常見權限,用戶管理命令權限及詳解可參看博客http://www.toxingwang.com/database/mysql/1468.html
全局管理權限:
FILE: 在MySQL服務器上讀寫文件。
PROCESS: 顯示或殺死屬于其它用戶的服務線程。
RELOAD: 重載訪問控制表,刷新日志等。
SHUTDOWN: 關閉MySQL服務。
數據庫/數據表/數據列權限:
ALTER: 修改已存在的數據表(例如增加/刪除列)和索引。
CREATE: 建立新的數據庫或數據表。
DELETE: 刪除表的記錄。
DROP: 刪除數據表或數據庫。
INDEX: 建立或刪除索引。
INSERT: 增加表的記錄。
SELECT: 顯示/搜索表的記錄。
UPDATE: 修改表中已存在的記錄。
特別的權限:
ALL: 允許做任何事(和root一樣)。
USAGE: 只允許登錄--其它什么也不允許做。
五、數據庫基本操作
show databases; (顯示數據庫)
use 數據庫名; (使用數據庫)
show tables; (顯示表)
describe 表名; (顯示表結構)
create database 數據庫名;(建數據庫)
drop database 數據庫名;(刪除數據庫)
create table 表名(定義列);(建表)
drop table 表名;(刪除表)
update 表名 set字段=新值,... where條件 (修改表中數據)
alter table 表名 add字段類型其他;(在表中增加字段)
rename table 原表名 to新表名; (更改表名)
update 表名 set字段名 =新內容
update 表名 set字段名 = replace(字段名, '舊內容', '新內容');(更新字段內容)
insert into <表名> values(字段值,字段值,……),……;(插入數據)
delete from 表名 where表達式(刪除表中數據)
六、狀態查看命令(Mysql運行狀態及調優詳解可參看博客http://www.cnblogs.com/gzgccsu/archive/2013/01/23/2873579.html)
Show status; (查看Mysql運行狀態)
Show processlist; (查看哪些線程正在運行,前100條)
Show full processlist; (查看哪些線程正在運行,全部)
Show open tables; (查看那些表是打開的,可查看表是否被線程使用)
Show status like ‘%lock%’;(查看服務器狀態)
Show engine innodb status\G; (查看InnoDB引擎運行時信息)
Show variables like‘%timeout%’;(查看服務器配置參數)
state列具體釋義: Checking table 正在檢查數據表(這是自動的)。Closing tables 正在將表中修改的數據刷新到磁盤中,同時正在關閉已經用完的表。這是一個很快 的操作,如果不是這樣的話,就應該確認磁盤空間是否已經滿了或者磁盤是否正處
于重負中。Connect Out 復制從服務器正在連接主服務器。Copying to tmp table on disk 由于臨時結果集大于 tmp_table_size,正在將臨時表從內存存儲轉為磁盤存儲以
此節省內存。Creating tmp table 正在創建臨時表以存放部分查詢結果。deleting from main table 服務器正在執行多表刪除中的第一部分,剛刪除第一個表。deleting from reference tables 服務器正在執行多表刪除中的第二部分,正在刪除其他表的記錄。Flushing tables 正在執行 FLUSH TABLES 等待其他線程關閉數據表。Killed 發送了一個kill請求給某線程,那么這個線程將會檢查kill標志位,同時會放棄下
一個kill請求。MySQL會在每次的主循環中檢查kill標志位,不過有些情況下該線程可能會過一小段才能死掉。如果該線程程被其他線程鎖住了,那么kill請求會在鎖釋放時馬上生效。
Locked 被其他查詢鎖住了。Sending data 正在處理 SELECT 查詢的記錄,同時正在把結果發送給客戶端。Sorting for group 正在為 GROUP BY 做排序。Sorting for order 正在為 ORDER BY 做排序。Opening tables 這個過程應該會很快,除非受到其他因素的干擾。例如,在執 ALTER TABLE 或
LOCK TABLE 語句行完以前,數據表無法被其他線程打開。 正嘗試打開一個表
Removing duplicates 正在執行一個 SELECT DISTINCT 方式的查詢,但是MySQL無法在前一個階段
優化掉那些重復的記錄。因此,MySQL需要再次去掉重復的記錄,然后再把結果發送給客戶端。
Reopen table 獲得了對一個表的鎖,但是必須在表結構修改之后才能獲得這個鎖。已經釋放鎖, 關閉數據表,正嘗試重新打開數據表。Repair by sorting 修復指令正在排序以創建索引。Repair with keycache 修復指令正在利用索引緩存一個一個地創建新索引。它會比上一條慢些。Searching rows for update 正在講符合條件的記錄找出來以備更新。它必須在 UPDATE 要修改相關的記錄之
前就完成了。Sleeping 正在等待客戶端發送新請求.System lock 正在等待取得一個外部的系統鎖。如果當前沒有運行多個 mysqld 服務器同時請
求同一個表,那么可以通過增加 –skip-external-locking參數來禁止外部系統鎖。
Upgrading lock INSERT DELAYED 正在嘗試取得一個鎖表以插入新記錄。Updating 正在搜索匹配的記錄,并且修改它們。User Lock 正在等待 GET_LOCK()。Waiting for tables 該線程得到通知,數據表結構已經被修改了,需要重新打開數據表以取得新的結構。
然后,為了能的重新打開數據表,必須等到所有其他線程關閉這個表。
七、導出和導入數據、備份與恢復(博文鏈接http://blog.chinaunix.net/uid-16844903-id-3411118.html)
(注:‘省略’代表著如下固定參數:-routines代表備份函數與存儲過程
-u$USER -p$PASSWD -h127.0.0.1 -P3306 —routines—default-character-set=utf8)
————————導出、備份————————
1、 導出全部數據庫備份(-A全庫備份)
mysqldump 省略—lock-all-tables —add-drop-database -A > db.all.sql
2、 導出指定數據庫到本地目錄,例如mysql數據庫(--databases數據庫名)
mysqldump 省略 --databases mysql > db.sql
3、 導出指定數據庫的指定表到本地目錄,例如mysql數據庫的user表(--tables數據庫名表名)
mysqldump 省略 --tables mysql user> db.table.sql
4、 導出指定數據庫的指定表(僅數據)到本地目錄,例如mysql數據庫的user表,帶過濾條件
mysqldump 省略 --no-create-db --no-create-info --tables mysql user --where="host='localhost'"> db.table.sql
5、導出某個數據庫的表結構(--no-data不備份數據)
mysqldump 省略 --no-data --databases mysql > db.nodata.sql
6、導出某個sql查詢的數據以txt文件形式存儲到到本地的目錄(各數據值之間用"制表符"分隔)
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 --skip-column-names -B -e 'select user,host,password from mysql.user;' > mysql_user.txt
7、導出某個sql查詢的數據以txt文件形式存儲到到MySQL服務器,登錄MySQL,將默認的制表符換成逗號.(適應csv格式文件),指定的路徑,mysql要有寫的權限。最好用tmp目錄,文件用完之后,再刪除!
SELECT user,host,password FROM mysql.user INTO OUTFILE '/tmp/mysql_user.csv' FIELDS TERMINATED BY ',';
————————導入、恢復————————
1、 恢復全庫數據到MySQL,因為包含mysql庫的權限表,導入完成需要執行FLUSH PRIVILEGES;命令
第一種方法:
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 < db.all.sql
第二種方法:
登錄MySQL,執行source命令,后面的文件名要用絕對路徑.
......
mysql> source /tmp/db.all.sql;
2、恢復某個庫的數據(mysql庫的user表)
第一種方法:
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 mysql < db.table.sql
第二種方法:
登錄MySQL,執行source命令,后面的文件名要用絕對路徑.
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
......
mysql> use mysql;
mysql> source /tmp/db.table.sql;
3、恢復MySQL服務器上面的txt格式文件(需要FILE權限,各數據值之間用"制表符"分隔)
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
......
mysql> use mysql;
mysql> LOAD DATA INFILE '/tmp/mysql_user.txt' INTO TABLE user ;
4、恢復MySQL服務器上面的csv格式文件(需要FILE權限,各數據值之間用"逗號"分隔)
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
......
mysql> use mysql;
mysql> LOAD DATA INFILE '/tmp/mysql_user.csv' INTO TABLE user FIELDS TERMINATED BY ',';
5、恢復本地的txt或csv文件到MySQL
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
......
mysql> use mysql;
txt
mysql> LOAD DATA LOCAL INFILE '/tmp/mysql_user.txt' INTO TABLE user;
csv
mysql> LOAD DATA LOCAL INFILE '/tmp/mysql_user.csv' INTO TABLE user FIELDS TERMINATED BY ',';
關于mysql參數
--skip-column-names 不顯示數據列的名字
-B 以批處理的方式運行mysql程序.查詢結果將顯示為制表符間隔格式.
-e 執行命令后,退出
關于mysqldump參數
-A 全庫備份
--routines 備份存儲過程和函數
--default-character-set=utf8 設置字符集
--lock-all-tables 全局一致性鎖
--add-drop-database 在每次執行建表語句之前,先執行DROP TABLE IF EXIST語句
--no-create-db 不輸出CREATE DATABASE語句
--no-create-info 不輸出CREATE TABLE語句
--databases 將后面的參數都解析為庫名
--tables 第一個參數為庫名后續為表名
關于LOAD DATA語法
如果LOAD DATA語句不帶LOCAL關鍵字,就在MySQL的服務器上直接讀取文件,且要具有FILE權限.
如果帶LOCAL關鍵字,就在客戶端本地讀取數據文件,通過網絡傳到MySQL.
LOAD DATA語句,同樣被記錄到binlog,不過是內部的機制.
八、mysqladmin指令(所有命令可以被縮短為其唯一的前綴)
create databasename (創建一個新數據庫)
drop databasename (刪除一個數據庫及其所有表)
Extended-status (給出服務器的一個擴展狀態消息)
Flush-hosts (洗掉所有緩存的主機)
Flush-logs (洗掉所有日志)
Flush-tables (洗掉所有表 )
Flush-privileges (再次裝載授權表(同reload) )
kill id,id,... (殺死MySQL線程)
Password (新口令,將老口令改為新口令)
Ping (檢查mysqld是否活著 )
Processlist (顯示服務其中活躍線程列表)
Reload (重載授權表 )
Refresh (洗掉所有表并關閉和打開日志文件)
Shutdown (關掉服務器)
Status (給出服務器的簡短狀態消息)
Variables (打印出可用變量)
Version (得到服務器的版本信息)
九、Mysqld命令詳解參看博客http://blog.itpub.net/29500582/viewspace-1373451/
十、Mysql日志管理詳解參看博客http://www.toxingwang.com/database/mysql/1483.html
十一、Mysql索引詳解參看博客http://blog.csdn.net/zhangliangzi/article/details/51366345
十二、Mysql事務詳解參看博客http://www.toxingwang.com/database/mysql/1454.html
十三、Mysql鎖定機制詳解參看博客http://www.toxingwang.com/database/mysql/1454.html
十四、常見sql指令可參看《mysql必知必會》