MySQL實現無密碼登入(mysql_config_editor)

甲骨文技術支援發表於2017-02-27

有一個業務需求是從一臺主機上dump MySQL資料庫的資料,但是又不想讓業務人員知道具體MySQL使用者的密碼,可以用mysql_config_editor命令實現

一,測試環境
A機器IP為192.168.3.171
B機器IP為192.168.3.173
打算實現無“密碼”從B連線到A

A和B的資料庫版本

  1. (root@localhost) [(none)]> select version();
  2. +------------+
  3. | version() |
  4. +------------+
  5. | 5.7.17-log |
  6. +------------+
  7. 1 row in set (0.00 sec)
二,在A機器上建立測試使用者並賦予許可權

  1. (root@localhost) [(none)]> create user gl@'192.168.3.173' identified by 'onlygl';
  2. Query OK, 0 rows affected (0.00 sec)

  3. (root@localhost) [(none)]> grant all on *.* to gl@'192.168.3.173';
  4. Query OK, 0 rows affected (0.01 sec)
三,在B機器上執行如下命令,輸入gl使用者的密碼

  1. mysql_config_editor set --login-path=gl --host=192.168.3.171 --user=gl --password
四,執行上面命令後,可以在home的目錄下找到一個隱藏檔案.mylogin.cnf,如下:

  1. -rw------- 1 root root 136 Feb 27 19:04 .mylogin.cnf
五,檢視檔案裡的內容

  1. [root@mysqltest ~]# mysql_config_editor print --all
  2. [gl]
  3. user = gl
  4. password = *****
  5. host = 192.168.3.171
六,登入

  1. [root@mysqltest ~]# mysql --login-path=gl
  2. Welcome to the MySQL monitor. Commands end with ; or \g.
  3. Your MySQL connection id is 311
  4. Server version: 5.7.17-log Mysqlma
  5. Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  6. Oracle is a registered trademark of Oracle Corporation and/or its
  7. affiliates. Other names may be trademarks of their respective
  8. owners.
  9. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  10. (gl@192.168.3.171) [(none)]>
七,如果不想用了,用如下命令刪除

  1. mysql_config_editor remove --login-path=gl
八,適用範圍

  1. mysql
  2. mysqladmin
  3. mysqldump
九,總結
1.顯而易見的是使用者密碼被修改後,需要重新建立login-path
2.該功能僅僅在5.6.6以上版本才支援


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20893244/viewspace-2134390/,如需轉載,請註明出處,否則將追究法律責任。

相關文章