由以下示例得出,客戶端連接MySQL時執(zhí)行語句包括如下過程:
1.認(rèn)證
是否可以登錄MySQL服務(wù)端。
2.語法分析
判斷執(zhí)行語句是否合法,無語句錯誤。
3.權(quán)限分析
判斷執(zhí)行語句,是否有對目標(biāo)的相關(guān)權(quán)限。
4.語義分析
判斷是否存在相應(yīng)的表和字段
5.優(yōu)化執(zhí)行
優(yōu)化器優(yōu)化SQL語句后,執(zhí)行并返回結(jié)果。創(chuàng)新互聯(lián)公司長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為靖江企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站制作,靖江網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
1)mysql -utest -h227.0.0.1 -p -P3306 -perror
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'test'@'127.0.0.1' (using password: YES)
mysql> show grants;
+--------------------------------------------------------------------------+
| Grants for test@127.0.0.1 |
+--------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'127.0.0.1' IDENTIFIED BY PASSWORD |
| GRANT SELECT ON `test`.* TO 'test'@'127.0.0.1' |
+--------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql>
mysql>
2)
mysql> select *** from test.t;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '** from test.t' at line 1
mysql>
3)
mysql> select * from a.t;
ERROR 1142 (42000): SELECT command denied to user 'test'@'127.0.0.1' for table 't'
mysql>
mysql>
4)
mysql> select * from test.t;
ERROR 1146 (42S02): Table 'test.t' doesn't exist
mysql>
mysql>