2019年5月3日 星期五

一個小密訣解替您決密碼加密保存的問題


您的自動執行的MySQL批次作業是如登入MySQL?將密碼寫入脚本?還是到一個存有密碼的檔案裡去讀取?您是否曾經為了設法符合公司規定的不能以明碼的型式保存密碼而傷腦筋?MySQL有一個較不為人所知的程式-mysql_config-editor(MySQLbin目錄下能找到它)能為您解決這個問題,做法如下:
1.          建立login path: ./bin/mysql_config_editor set --login-path='mysql-cli' --user='root' --host='127.0.0.1' --port=3306 –password
l   建一個名為mysql-clilogin path,它會在user的目錄之下建一個名為.mysql_config.cnf的加密檔案,當您type它時只能看到亂碼
2.          如果想要查有那些login path,它們的參數為何,可以用以下指令 :
./bin/mysql_config_editor print --all
[root@localhost:33060]
user = root
password = *****
host = localhost
port = 33060
[mysql-cli]
user = root
password = *****
host = 127.0.0.1
port = 3306
您能看到所有的連線參數,但密碼都是”*”
3.  登入MySQL時只要指定login path就行了
./bin/mysql --login-path='mysql-cli' sys
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.16-commercial MySQL Enterprise Server - Commercial
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

root@localhost:3306[sys]>

登登... !!! 不用打密碼 進入資料庫😄
當然,您必需要好好保護這個.mylogin.cnf檔,因為任何人拿到它都可以用root登入資料庫😨

2019年4月25日 星期四

Oracle 推出 MySQL 8.0.16, 再度將MySQL推向另一個顚峰


MySQL425日晚上推出最新的MySQL更新版-MySQL 8.0.16,由於品質控能力和向下相容性的加強,自從MySQL 邁入8.0後版本發佈模式就改為持續交付模式(CDM),在每個更新版都加入新的功能.8.0.168.0正式發行以來第五個更新版,它除了修正200個以上的bug
讓它更穩定外,還推出了多項新加能,其中比較重要的有:
1.          加強對中文的支持, 增加一個字符集的文字排序(collation) – utf8mb4_zh_0900_as_cs, “as”代表重音敏感,”cs”代表大小寫敏感,在這個字符集下,SQL命令的order by 順序可依四聲音符的順序排序.這為中文環境提供了許多的方便性和運用空間
2.          建模的宣告制約支援check constraint – 等你好久了!!!
3.          地理訊息系統(GIS)ST_LENGTH()函式可指定其輸出值的單位,例如公尺、英吋等.
4.          優化器的改良,進一步推升MySQL的性能,包括:
  • SQL命令中WHERE子句中有對常數的比對時,減少資料型別的轉換
  • 子查詢的EXIST子句的SQL執行計畫改為semi-join ,MySQL 5.6即引進semi-join將執行計由巢式(nest loop)改為只查是否符合的join方式,使得某些原來要一天以上的SQL大幅改進到只要數分鐘即可返回結果,這次的改進是將semi-join的範圍擴大到EXIST子句.
  • 引進volcano iterator design join提供更好的EXPLAIN分析,我相信這也能為將來支援parallel query定一個基礎!

5.          Replication binlog中加上table partition的訊息,applier(或SQL線程)能更好的處理併發性.另外.另外,binlog檔案可以AES運算法加密,同時也支援主鑰的輪換.
6.          群組複製
  • 可動態調整XCOM緩存的空間,和設定該緩存的大小之上限,從而改進群組複製在面對大量交易時的性能和穩定性.
  • 群組中的節點下線後,在重新開啟後,不需管理者動手,能自加回,這使得DBA輕鬆多了
  • 支援封包傳輸的分割,這使MGR處理大訊息(交易)的能力更佳,減少因為碰到大交易而使節點被退出群組的機會.
  • 離開群組的節點的可設為READ_ONLYABORT_SERVER.

7.          動態開關(enable/disable)表空間的加密功能.
8.          權限管理,多了SYSTEM_USER權限.以及CONNECT_ADMIN權限中分出KILL線程權限,還可以回收部份權限.
9.          安全管理:
  • libmysql支援TLS1.3
  • 可更改變運行中的MySQL實例之SSL設定,例如更換certificates
  • Performance_schema能記錄key ring訊息

10.      連線的改良:
  • 傳統連線protocol, C API能做非阻塞對話
  • X Protocol當連到錯的protocol,能發出錯誤訊息
  • X protocol能傳對話相關訊息到server,例如應用的名稱、版本、作業系統、和PID
  • X protocol在切換對話時能保留連線訊而不需要再登入或再開連線.

11.      Router:
  • 支援REST endpoint和網路介面和TLS/HTTPS登入
  • 能在單主和多主模式動態切換
  • 支援多種日誌存放方式(file/syslog/console)
  • 運作中的router可動態rotate log
 想了解更多相關訊息請參考 MySQL release node https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-16.html#mysqld-8-0-16-bug
和MySQL開發團隊的部落格 https://mysqlserverteam.com/the-mysql-8-0-16-maintenance-release-is-generally-available/