『壹』 如何運行mysql
Mysql分客戶端和服務端。成功安裝後,在伺服器端,保證mysqld服務成功啟動後,便可以通過客戶端工具訪問mysql了。
在命令行可通過以下命令登陸mysql:
mysql
-uroot
-ppassword
(-u指定用戶名,-p指定密碼)
另外也可以通過基於瀏覽器的工具訪問mysql,如phpmyadmin。
『貳』 怎樣在win7中使用命令行啟動mysql資料庫服務
1、Win菜單鍵+R組合打開Winodws7運行窗口,在打開編輯框中輸入cmd命令,打開Doc終端,如下圖所示:
其中,Win菜單鍵即是在鍵盤左下角【Ctrl控制】鍵與【Alt換擋】鍵之間的那個鍵,帶有Windows視窗標記。
2、登錄MySQL命令行界面,連接MySQL
在終端界面中輸入mysql
-hlocalhost
-uroot
-p123,出現MySQL的命令行界面,如下所示:
注意:上面的-h代表主機IP地址或者域名,localhost即代表本機地址127.0.0.1,-u是指MySQL用戶名,此處為MySQL安裝時的root用戶,-p代表用戶密碼,安裝MySQL
5.0.22時設置的密碼為123。這個需要根據自己的情況進行輸入。
3、顯示MySQL資料庫
可以看到MySQL裡面有4個資料庫,其中studb是新建的一個資料庫,其餘三個是MySQL默認提供的。。
4、選擇資料庫,使用use
資料庫名;命令,如下所示:
假如選擇新建的studb資料庫:use
studb;
可以看到student表中有三個欄位:id,name和math,有4列值
5、運行SQL查詢語句
在studb資料庫中建了一張student表
select
*
from
student;
運行如下
進入到mysql命令行界面後,其他的SQL語句和第7步的也差不多了,不多贅述,另外,如果要方便使用MySQL的話,可以安裝一個MySQL圖形界面GUI工具。
『叄』 如何在mysql shell命令中執行sql命令行
本文介紹 MySQL 8.0 shell 子模塊 Util 的兩個導入特性 importTable/import_table(JS和python 版本的命名差異)、importJson/import_json的使用方法。
其中 import_table 是通過傳統 MySQL 協議來通信,Import_json 是通過 X 插件協議來通信。MySQL 一直以來提供導入文件 SQL 命令 load data infile(單線程)以及對應的可執行文件 mysqlimport(多線程)。
比如我導入 100W 行示例數據到表 ytt.tl1,花了 24 秒。這個已經是 MySQL 默認導入來的最快的。分析那我們現在看下 mysqlimport 工具的升級版,mysqlshell 的 util 工具集。
使用這兩個工具之前,必須得臨時開啟 local_infile 選項。1. import_table建立 3306 埠的新連接我這里切換為 python 模式清空掉示例表 Ytt.tl1import_table 有兩個參數,第一個參數定義導入文件的路徑,第二個定義相關選項,比如導入的格式,並發的數量等。定義文件路徑(參數1)定義選項(參數2)執行導入:只花了不到 17 秒,比傳統 mysqlimport 快了不少。
我們上面指定了顯式指定了欄位分隔符,那有沒有已經定義好的組合格式呢? 答案是有的,選項 dialect 可以指定以下格式:csv,tsv,json,csv-unix那麼上面的導入,我們可以更簡單,改下變數 y_options1 的定義導入時間差不多。這里要說明下,dialect 選項的優先順序比較低,比如添加了'linesTerminatedBy':' ', 則覆蓋他自己的' '。
選項 diaelect 還有一個可選值為 json,可以直接把 json 結果導入到文檔表裡。比如我新建一張表 tl1_json重新定義文件以及導入選項。導入 JSON 數據速度也還可以,不到 24 秒。那導入 json 數據,就必須得提到以 X 插件協議通信的工具 import_json了。2. imort_json我們切換到 mysqlx 埠import_json 參數和 Import_table 參數類似,這里我改下選項我在手冊上沒有看到多線程的選項,所以單線程跑 35 秒慢了些。查看剛剛導入的數據import_json 不僅僅可以導入 Json 數據,更重要的是可以在 BSON 和 JSON 之間平滑的轉換,有興趣的同學可以去 TRY 下。
『肆』 如何用命令行執行mysql的sql文件
使用source命令執行sql腳本。
進入mysql的控制台後,使用source命令執行
Mysql>source 【sql腳本文件的路徑全名】
具體步驟:
假設運行sql腳本是hello.sql,在控制台下輸入:
mysql>source c:\hello world\hello.sql(注意路徑不用加引號) 或者 \. c:\hello world\hello.sql
然後回車即可
『伍』 Mysql安裝好後怎麼進入命令行界面
1、執行mysql命令
2、如果已經把mysql\bin增加到PATH環境變數,windows在cmd命令行,linux在shell命令行,執行mysql即可進入mysql命令界面
3、如果沒有增加,需要進入mysql/bin目錄再執行mysql
『陸』 mysql命令行工具如何執行腳本文件
mysql
-u
root
-p
#輸入root密碼
如果這個SQL里有
create
database
member;
這句,那麼直接執行下面的語句,如果沒有,那麼你需要先
create
database
member;
use
member;
再執行下面的語句
source
/xxx/create_db_member.sql
『柒』 如何從命令行啟動mysqld伺服器
1、在命令行中啟動mysql: 首先點擊選擇【開始】菜單欄中的【運行】,
『捌』 如何用批處理進入mysql命令行客戶端進行各種操作
mysql既可以互動式地使用mysql輸入查詢並且查看結果。也可以以批模式運行mysql。為了做到這些,把你想要運行的命令放在一個文件中,然後告訴mysql從文件讀取它的輸入:
shell>
mysql
<
batch-file1
如果在Windows下運行mysql,並且文件中有一些可以造成問題的特殊字元,可以這樣操作:
C:\>
mysql
-e
"source
batch-file"1
如果你需要在命令行上指定連接參數,命令應為:
shell>
mysql
-h
host
-u
user
-p
<
batch-file
Enter
password:
********12
當這樣操作mysql時,則創建一個腳本文件,然後執行腳本。
如果你想在語句出現錯誤的時候仍想繼續執行腳本,則應使用–force命令行選項。
『玖』 mysql命令行下怎樣實現數據的回滾操作
當啟動Binlog後,事務會產生Binlog Event,這些Event被看做事務數據的一部分。因此要保證事務的Binlog Event和InnoDB引擎中的數據的一致性。所以帶Binlog的CrashSafe要求MySQL宕機重啟後能夠保證:
- 所有已經提交的事務的數據仍然存在。
- 所有沒有提交的事務的數據自動回滾。
- 所有已經提交了的事務的Binlog Event也仍然存在。
- 所有沒有提交事務沒有記錄Binlog Event。
這些要求很好理解,如果重啟後數據還在,但是Binlog Event沒有了,就沒辦法復制到其他節點上了。如果重啟後,數據沒了,但是Binlog Event還在,那麼不存在的數據就會被復制到其他節點上,從而導致主從的不一致。
為了保證帶Binlog的CrashSafe,MySQL內部使用的兩階段提交(Two Phase Commit)。
2 - MySQL的Two Phase Commit(2PC)
在開啟Binlog後,MySQL內部會自動將普通事務當做一個XA事務來處理:
- 自動為每個事務分配一個唯一的ID
- COMMIT會被自動的分成Prepare和Commit兩個階段。
- Binlog會被當做事務協調者(Transaction Coordinator),Binlog Event會被當做協調者日誌。
想了解2PC,可以參考文檔:【https://en.wikipedia.org/wiki/Two-phase_commit_protocol。】
- 分布式事務ID(XID)
使用2PC時,MySQL會自動的為每一個事務分配一個ID,叫XID。XID是唯一的,每個事務的XID都不相同。XID會分別被Binlog和InnoDB記入日誌中,供恢復時使用。MySQ內部的XID由三部分組成:
- 前綴部分
前綴部分是字元串"MySQLXid"
- Server ID部分
當前MySQL的server_id
- query_id部分
為了保證XID的的唯一性,數字部分使用了query_id。MySQL內部會自動的為每一個語句分配一個query_id,全局唯一。
參考代碼:sql/xa。h的struct xid_t結構。
- 事務的協調者Binlog
Binlog在2PC中充當了事務的協調者(Transaction Coordinator)。由Binlog來通知InnoDB引擎來執行prepare,commit或者rollback的步驟。事務提交的整個過程如下:
1. 協調者准備階段(Prepare Phase)
告訴引擎做Prepare,InnoDB更改事務狀態,並將Redo Log刷入磁碟。
2. 協調者提交階段(Commit Phase)
2.1 記錄協調者日誌,即Binlog日誌。
2.2 告訴引擎做commit。
注意:記錄Binlog是在InnoDB引擎Prepare(即Redo Log寫入磁碟)之後,這點至關重要。
在MySQ的代碼中將協調者叫做tc_log。在MySQL啟動時,tc_log將被初始化為mysql_bin_log對象。參考sql/binlog.cc中的init_server_components():
if (opt_bin_log) tc_log= &mysql_bin_log;
而在事務提交時,會依次執行:
tc_log->prepare();
tc_log->commit();
參考代碼:sql/binlog.cc中的ha_commit_trans()。當mysql_bin_log是tc_log時,prepare和commit的代碼在sql/binlog.cc中:
MYSQL_BIN_LOG::prepare();
MYSQL_BIN_LOG::commit();
-協調者日誌Xid_log_event
作為協調者,Binlog需要將事務的XID記入日誌,供恢復時使用。Xid_log_event有以下幾個特點:
- 僅記錄query_id
因為前綴部分不變,server_id已經記錄在Event Header中,Xid_log_event中只記錄query_id部分。
- 標志事務的結束
在Binlog中相當於一個事務的COMMIT語句。
一個事務在Binlog中看起來時這樣的:
Query_log_event("BEGIN");DML產生的events; Xid_log_event;
- DDL沒有BEGIN,也沒有Xid_log_event 。
- 僅InnoDB的DML會產生Xid_log_event
因為MyISAM不支持2PC所以不能用Xid_log_event ,但會有COMMIT Event。
Query_log_event("BEGIN");DML產生的events;Query_log_event("COMMIT");
問題:Query_log_event("COMMIT")和Xid_log_event 有不同的影響嗎?
- Xid_log_event 中的Xid可以幫助master實現CrashSafe。
- Slave的CrashSafe不依賴Xid_log_event
事務在Slave上重做時,會重新產生XID。所以Slave伺服器的CrashSafe並不依賴於Xid_log_event 。Xid_log_event 和Query_log_event("COMMIT"),只是作為事務的結尾,告訴Slave Applier去提交這個事務。因此二者在Slave上的影響是一樣的。
3 - 恢復(Recovery)
這個機制是如何保證MySQL的CrashSafe的呢,我們來分析一下。這里我們假設用戶設置了以下參數來保證可靠性:
- 恢復前事務的狀態
在恢復開始前事務有以下幾種狀態:
- InnoDB中已經提交
根據前面2PC的過程,可知Binlog中也一定記錄了該事務的的Events。所以這種事務是一致的不需要處理。
- InnoDB中是prepared狀態,Binlog中有該事務的Events。
需要通知InnoDB提交這些事務。
- InnoDB中是prepared狀態,Binlog中沒有該事務的Events。
因為Binlog還沒記錄,需要通知InnoDB回滾這些事務。
- Before InnoDB Prepare
事務可能還沒執行完,因此InnoDB中的狀態還沒有prepare。根據2PC的過程,Binlog中也沒有該事務的events。 需要通知InnoDB回滾這些事務。
- 恢復過程
從上面的事務狀態可以看出:恢復時事務要提交還是回滾,是由Binlog來決定的。
- 事務的Xid_log_event 存在,就要提交。
- 事務的Xid_log_event 不存在,就要回滾。
恢復的過程非常簡單:
- 從Binlog中讀出所有的Xid_log_event
- 告訴InnoDB提交這些XID的事務
- InnoDB回滾其它的事務
『拾』 怎麼用命令提示符運行mysql
方法/步驟
1
登陸mysql
打cmd命令終端,如果已經添加了mysql的環境變數,可以直接使用命令
mysql -uroot
直接回車,之後按提示輸入密碼,
如果未添加mysql的環境變數,可以切換到mysql的安裝目錄下的bin目錄,再使用
mysq -uroot
你也可以手動為mysql添加環境變數。這里就不介紹怎麼添加環境變數的方法了
密碼輸入正確之後,就會出現「Welcome to the MySQL monitor. Commands end with ; or \g. ......」字樣,
命令行出現「mysql>」字元前綴。現在你就可以使用命令對mysql進行操作了。曾經有沒有過這樣的經歷,原來看見別人在命令行裡面咔咔的猛敲時,就一通的崇拜,覺得這人很牛,現在你也可以讓別一通崇拜了。
mysql的所有命令都以";"或者\g為結束符
2
新建資料庫
在新建資料庫之後,我們先設置一下字元集
mysql>SET NAMES utf8;
然後再創建資料庫
mysql>CREATE DATABASE lesson
3
顯示所有資料庫
mysql>SHOW DATABASES;
使用資料庫
mysql>USE 資料庫名;
新建表
mysql>CREATE TABLE study(
id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '學生id號',
username varchar(30) NOT NULL DEFAULT '' COMMENT '學生名字',
class tinyint(3) unsigned NOT NULL,
sex enum('男','女','保密') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '保密' COMMENT '性別',
addtime int(10) NOT NULL DEFAULT '0',
PRIMARY KEY (id)
)ENGINE=InnoDB COMMENT = '學生表';
顯示所有表
mysql>SHOW TABLES;
修改表的名稱
mysql>RENAME TABLE study TO study_new ;
或者
mysql>ALTER TABLE study_new RENAME TO study;
顯示欄位信息
SHOW COLUMNS FROM study或者DESCRIBE study
插入數據
mysql> insert into study (username,class,sex)VALUES('小王',1,'男'),('小四',2,'女');
查詢數據(使concat函數拼接數據)
mysql> SELECT username,CONCAT(class,'班'),sex FROM study;
刪除數據
mysql>DELETE FROM study WHERE id=1;
刪除數據表
DROP TABLE study;
刪除資料庫
mysql> DROP DATABASE lesson;