串連參數
串連到一個伺服器,必須指定串連參數,如使用者名稱,主機名稱,密碼,連接埠號碼,socket。MySQL Utilities提供了三種提供這些參數的方法,這些方法都需要通過命令列指定。
使用.mylogin.cnf檔案(加密的,不可見的)。如:<login-path>[:<port>][:<socket>]
使用設定檔(未加密的,不可見的)。只適用於1.5.0以上版本。如:<configuration-file-path>[:<section>]
在命令列指定(未加密的,可見的)。如: <user>[:<passwd>]@<host>[:<port>][:<socket>]
使用login-paths(.mylogin.cnf)
使用該方法串連資料庫是最好的。不僅是檔案加密的,而且任何執行的記錄不會暴露串連資訊。因此,日誌中使用者名稱、密碼、連接埠等資訊是不可見的。這是使用MySQL Utilities工具串連資料庫的首選方法。
注意:MySQL Utilities1.2.1以及以後版本支援login-paths方法。
串連的字串格式為: login-path-name[:port][:socket]。其中port、socket是可選的參數。如果指定,將覆蓋login-path中定義的。
當使用login-paths時,除了Posix系統沒有預設值,當指定通訊端時。在這種情況下,host選項預設值是localhost。這就意味著,結合login-path指定值有兩個可選值port和socket選擇,至少需要指定一個使用者名稱、一個主機名稱、一個port或一個socket。
使用mysql_config_editor工具添加如下串連資訊:
| 代碼如下 |
複製代碼 |
# cd /usr/local/mysql5.6/ # ./bin/mysql_config_editor set --login-path=instance_3366 --host=localhost --user=root --port=3366 --password Enter password: |
將會在家目錄下建立一個隱藏的加密檔案.mylogin.cnf。
查看.mylogin.cnf 內容:
| 代碼如下 |
複製代碼 |
# ./bin/mysql_config_editor print --login-path=instance_3366 [instance_3366] user = root password = ***** host = localhost port = 3366 |
一旦配置了.mylogin.cnf檔案,就只需要指定.mylogin.cnf檔案中的伺服器段進行串連。如,在前面的樣本中建立了“instance_3366”服務段。因此,我們可以使用–server=instance_3366。如下所示指定部分的登入路徑:
# mysqlserverinfo --server=instance_3366 --format=vertical
也可以自訂,如下:
| 代碼如下 |
複製代碼 |
# mysqlserverinfo --server=root:@localhost:3366:/tmp/mysql3366.sock --format=vertical WARNING: Using a password on the command line interface can be insecure. # Source on localhost: ... connected. ************************* 1. row ************************* server: localhost:3366 config_file: /usr/local/mysql5.6/my.cnf, ./my.cnf binary_log: master-bin.000003 binary_log_pos: 151 relay_log: relay_log_pos: version: 5.6.16-log datadir: /usr/local/mysql5.6/data/ basedir: /usr/local/mysql5.6 plugin_dir: /usr/local/mysql5.6/lib/plugin/ general_log: OFF general_log_file: general_log_file_size: log_error: /usr/local/mysql5.6/data/localhost.err log_error_file_size: 2238 bytes slow_query_log: OFF slow_query_log_file: slow_query_log_file_size: 1 row. #...done. |
使用設定檔
MySQL Utilities也可以接受伺服器串連資料的配置路徑和段。這就允許你儲存的一個或多個部分的串連資訊。將資料儲存在設定檔中比在命令列指定安全,但是,該檔案是個文字檔,只有能訪問到該檔案,任何人可讀的。
| 代碼如下 |
複製代碼 |
my.cnf串連段如下所示: # vim my.cnf [client] port = 3366 socket = /tmp/mysql3366.sock user=root |
使用設定檔:
| 代碼如下 |
複製代碼 |
# mysqlserverinfo --server=/usr/local/mysql5.6/my.cnf[client] --format=vertical # Source on localhost: ... connected. ************************* 1. row ************************* server: localhost:3366 config_file: /usr/local/mysql5.6/my.cnf, ./my.cnf binary_log: master-bin.000003 binary_log_pos: 151 relay_log: relay_log_pos: version: 5.6.16-log datadir: /usr/local/mysql5.6/data/ basedir: /usr/local/mysql5.6 plugin_dir: /usr/local/mysql5.6/lib/plugin/ general_log: OFF general_log_file: general_log_file_size: log_error: /usr/local/mysql5.6/data/localhost.err log_error_file_size: 2238 bytes slow_query_log: OFF slow_query_log_file: slow_query_log_file_size: 1 row. #...done. |
使用命令列
通過命令列參數指定串連伺服器資訊,這種方式是最不安全的,資料在命令列可見,在記錄檔中亦是可見的。
這種方式下,指定參數的順序為:<user>[:<passwd>]@<host>[:<port>][:<socket>] 。方括弧代表是可選的參數。
執行個體參見上面的。
在Python庫中定義
如果使用MySQL Utilities庫檔案來建立自己的工具,你會遇到各種各樣的串連方式。
可選的方法有:
一個含有串連參數的Python字典.
一個含有串連參數的字串.
指定一個伺服器執行個體.
字典格式如下:
| 代碼如下 |
複製代碼 |
# Set connection values dest_values = { "user" : "root", "passwd" : "secret", "host" : "localhost", "port" : 3308, "unix_socket" : None, } |
字串格式為:
| 代碼如下 |
複製代碼 |
| <user>[:<passwd>]@<host>[:<port>][:<socket>] |
中括弧是選擇性參數。
該連接字串通過使用options.parse_connection函數進行解析。
也可以指定伺服器類的一個執行個體,在這種情況下,新類將複製這些串連資訊。