连接参数
连接到一个服务器,必须指定连接参数,如用户名,主机名称,密码,端口号,socket。MySQL Utilities提供了三种提供这些参数的方法,这些方法都需要通过命令行指定。
使用.mylogin.cnf文件(加密的,不可见的)。如:
使用配置文件(未加密的,不可见的)。只适用于1.5.0以上版本。如:
在命令行指定(未加密的,可见的)。如:
使用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. |
使用命令行
通过命令行参数指定连接服务器信息,这种方式是最不安全的,数据在命令行可见,在日志文件中亦是可见的。
这种方式下,指定参数的顺序为:
实例参见上面的。
在Python库中定义
如果使用MySQL Utilities库文件来创建自己的工具,你会遇到各种各样的连接方式。
可选的方法有:
一个含有连接参数的Python字典.
一个含有连接参数的字符串.
指定一个服务器实例.
字典格式如下:
代码如下 | 复制代码 |
# Set connection values dest_values = { "user" : "root", "passwd" : "secret", "host" : "localhost", "port" : 3308, "unix_socket" : None, } |
字符串格式为:
代码如下 | 复制代码 |
中括号是可选参数。
该连接字符串通过使用options.parse_connection函数进行解析。
也可以指定服务器类的一个实例,在这种情况下,新类将复制这些连接信息。