如果在WINDOWS上想鏈接在LINUX上的MYSQL有什麼方法,windows上各種GUI,還是打開MYSQL那個原本黑漆漆的小方格。現在你有了新的選擇,MYSQL Shell 全新的連接MYSQL 的方式,一個滿足各種人群連接MYSQL的方式。從官方上下載後,在WINDOWS 上解壓,直接點擊執行。
雙擊mysqlsh
為什麼要有mysql shell,這是ORACLE 的一個計劃,這個工具支持社區和企業版的MYSQL,首先這個工具並不是只針對DBA,或者說白了,他的對象是更廣闊的開發人員和會寫程序的DBA們。
下圖就是ORACLE 對MYSQL Shell 的定位。
如果用過MONGODB的話,就深有體會會JS的優點,操作MONGODB 可以如行雲流水一般。,那mysql shell的功能可是要更廣,看下圖。
原理先不多講,直接使用, 目前MYSQL Shell 自帶了PYTHON3.7 ,以下的案例大部分在 Python中調用一些 MYSQL SHELL 的命令,最後在總結。
打開下載的文件,其中有一個可以執行的文件
雙擊然後\\py, 然後輸入 連接 mysql 的連接字符串, \\connect -mc 用戶名:密碼@IP或域名:端口號
然後就進來了。
\\connect -mc shell:[email protected]:3306
另外下面是一個例子,如何使用 mysql shell 中的 py模塊來遍歷一下數據庫的庫名。
from mysqlsh import mysqlx
mySession = mysqlx.get_session('shell:[email protected]')
schemaList = mySession.get_schemas()
print('Available schemas in this session:\\n')
for schema in schemaList:
print(schema.name)
mySession.close()
寫到這裡,我個人的感覺沒有對這個shell of mysql有一個整體的瞭解,不瞭解的原因沒有從ORACLE 整體的觀點來看這個mysql shell, 他到底要服務於什麼人群,目的是什麼。
從上面的英文介紹來看,MYSQL SHELL 並不是要替換我們現在常用的已知的方式。MYSQL SHELL 面對的人群
1 程序員,尤其不會寫SQL 語句的那些人
2 自動化,或者想他通過程序的方式來自動化管理MYSQL 一部分功能的人
3 將MYSQL 部分管理簡單化的人,尤其與集群方面有關(個人感覺,就是要簡化操作,繼續降低MYSQL 的操作複雜度)
說白了,MYSQL的野心是不小的,他首先的目標要開始轉向 Document store. 說白了MYSQL 8 要開始分割 MONGODB 的市場,尤其是輕量級使用MONGODB 的那部分,然後你習慣,在依賴。為什麼可以從官方給的例子來說的名字,我們只有對MONGODB 的表的稱呼叫 collection,看看MYSQL 對非二維表格的文檔的操作叫什麼。
然後就是面對自己的高可用的業務,INNODB CLUSTER 和 Group Replication ,將高可用的方式進一步程序化。
下面看幾個CRUD 的例子
from mysqlsh import mysqlx
mySession = mysqlx.get_session({'host': '192.168.198.210', 'port': 33060,'user': 'shell', 'password': '1234.Com'})
myDb = mySession.get_schema('employees')
myTable = myDb.get_table('dept_emp')
myResult = myTable.select(['emp_no', 'dept_no']).limit(1).execute()
print(myResult.fetch_all())
上邊是操作普通的表,實際上如果操作 JSON 文檔有怎樣
from mysqlsh import mysqlx
mySession = mysqlx.get_session({'host': '192.168.198.210', 'port': 33060,'user': 'shell', 'password': '1234.Com'})
myDb = mySession.get_schema('test')
myColl = myDb.create_collection('Mongo_json')
myColl.add({'_id': '1', 'name': 'Laurie', 'age': 19}).execute()
myColl.add({'_id': '2', 'name': 'Nadya', 'age': 54}).execute()
myColl.add({'_id': '3', 'name': 'Lukas', 'age': 32}).execute()
docs = myColl.find('name like :param1 AND age < :param2').limit(1).bind('param1','L%').bind('param2',20).execute()
doc = docs.fetch_one()
print(doc)
myDb.drop_collection('my_collection')
從上邊的例子來看,PYTHON 操作下的MYSQL 活脫脫的變成讓我有點熟悉的MONGODB
此時腦洞來了忽然理解了,MYSQL 8 真的不簡單,不是5.8 是8是有道理的野心不小,MYSQL 再也不是那個“單純”的孩子。
這是要做一個生態,讓MYSQL 借程序員之手,要開始大舉進攻 JSON 半結構化得市場,要和誰爭地盤不言而喻了。並且這樣的方式操作起來,還真叫人喜歡。如果推廣開來,那........
因為MYSQL SHELL 並不光支持PYTHON ,還有JS 那是 MONGODB 操作的根本語言。
在看看 X DevAPI 的help 。
以上內容由東方瑞通資深講師 Austin供稿,13年專業DBA經驗,曾任互聯網金融公司Senior DBA、500強制藥企業Senior DBA,精通Mysql、PostgreSQL、Mongo DB、SQLServer。
閱讀更多 天津東方瑞通 的文章