《Disney +》 迪士尼、Marvel、彼思、星球大戰…  《地平線:西域禁地》:透過巧思戰勝敵人   Hermen Hulst專訪問答:PlayStation Studios的下一步規劃   《Pikmin Bloom》服務正式啟動!與皮克敏一起逛大街吧!   Quill的史詩冒險將在即將於PS VR上推出的《Moss: Book II》中繼續進行   玩家販賣DOAXVV脱衣魔改影碟 日本玩家被捕將遭起訴   COVER社與dwango社透過聯合舉辦的「ホロポケカップ」募資活動被授予感謝狀   PONOS推出新手遊《本当の幸せ》日本上線!冥想翱翔空中的奇妙動作遊戲!   hololive旗下VTuber湊阿庫婭&獅白牡丹加入電競大賽「Red Bull 5G」官方應援團 

MySQL 使用 mysql_config_editor 避免 CLI 出現密碼

商業

MySQL 在 Bash Shell、Script 執行,若有密碼直接打在命令列裡面,都會出現下述的警告 (Warning):

Warning: Using a password on the command line interface can be insecure

為何會有這個警告呢?

主要是平常 CLI 的命令,用 ps 都可以查看到,若密碼打在上面,密碼很容易就因此洩漏出去(不過 MySQL 新版有避免這個問題,密碼直接輸入,於 ps 是看不到密碼的)。

當然除了 ps 外,還有很多方法可以查看,在此就不繼續探討。

MySQL 使用 mysql_config_editor 避免 CLI 出現密碼

上述講到的 Warning,MySQL 為了解決此問題,有做一個 mysql_config_editor,會將主機的 host、帳號、密碼 等資訊存入並加密(AES ECB),直接使用來登入,相對會安全很多,此篇主要來介紹 mysql_config_editor 的幾個用法。

  • MySQL 官方文件:4.6.7 mysql_config_editor — MySQL Configuration Utility
    • mysql_config_editor [program_options] command [command_options] # 參數說明
    • mysql_config_editor 要注意 --login-path 等同是 project name 類似的意思,設定檔的新增、刪除、使用都是靠這個

下述範例與資料整理自官方文件:

一般設定檔內容:(此篇會用此設定檔當範例來設定 mysql_config_editor)

[client]
user = localuser
password = localpass
host = localhost
[remote]
user = remoteuser
password = remotepass
host = remote.example.com

新增 mysql_config_editor 設定

將上述設定檔,設定入 mysql_config_editor

  1. $ mysql_config_editor set --login-path=client --host=localhost --user=localuser --password Enter password: 輸入 "localpass"
  2. $ mysql_config_editor set --login-path=remote --host=remote.example.com --user=remoteuser --password Enter password: 輸入"remotepass"
  3. $ mysql_config_editor set --login-path=127.0.0.1 --host=127.0.0.1 --user=root --port=3306 --password
  4. ls ~/.mylogin.cnf # 可以看到此檔案,less 看都會是 binary
  5. $ mysql_config_editor print --all # 查看所有設定,密碼不會直接呈現 [client] user = localuser password = host = localhost [remote] user = remoteuser password = host = remote.example.com

使用 mysql_config_editor 登入、操作 SQL 命令

  • $ mysql --login-path=client # 登入 [client]
  • $ mysql --login-path=remote # 登入 [remote]
  • $ mysql --login-path=remote --host=remote2.example.com # 若需要登入其它主機,但是帳號、密碼一樣
  • $ mysql --login-path=client dbname -e "SQL statement" # 直接登入執行 SQL 語法

移除 mysql_config_editor 設定檔

  • $ mysql_config_editor remove --login-path=remote
  • $ mysql_config_editor remove --login-path=remote --user
  • $ mysql_config_editor reset # 全部重設

MySQL 5.7 標準 Client 的 mysql_config_editor 位置

  • 於此篇 mysql-client-5.7 可以查到 mysql_config_editor 的位置:/usr/bin/mysql_config_editor

至於使用 Percona 的話,5.6 版有 mysql_config_editor,5.7 版卻沒有,要怎麼解決呢?

找 Percona 的 mysql_config_editor 套件在哪裡

  1. dpkg -S mysql_config_editor # 找是哪個 package percona-server-client-5.6: /usr/share/man/man1/mysql_config_editor.1.gz percona-server-client-5.6: /usr/bin/mysql_config_editor
  2. sudo apt install percona-server-client # 若是 Percona 5.6 可以這樣查詢、安裝

Percona client 5.7 卻沒有 mysql_config_editor 的解法

  • apt-get install libperconaserverclient20-dev # 最後找到於此套件有 mysql_config_editor

相關網頁

Tsung

隨機商業新聞

NordVPN