Blogger Information
Blog 36
fans 0
comment 0
visits 26567
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MYSQL 安装相关的程序
T
Original
545 people have browsed it

1.comp_err 编译MYSQL 错误消息文件


comp_err 创建 errmsg.sys文件,被mysqld使用来决定为不同错误代码显示错误信息。comp_err通常在MYsql 被构建的时候自动运行。其在位于sql/share/errmsg.txt MYSQL 源分布文件中编译errmsg.sys文件。


comp_err 也生成mysqld_error.h, mysqld_ername.h, 和sql_state.h 头文件


调用方式:

shell> comp_err [options]

支持的选项:


--hel ,-?

显示一个帮助信息并退出

--charset=dir_name,-C dir_name

字符串设置目录,默认是 ../sql/share/charsets

--debug=debug_options, -# debug_options




写debugging 日志。一个通常的 debug_options字符串是:d:t:O,file_name. 默认是d:t:O,/tmp/comp_err.trace.


--debug-info,-T

程序退出时打印一些调试信息。

--header_file=file_name, -H file_name

错误头文件的名称。 默认是mysqld_error.h。

--in_file=file_name, -F file_name

输入文件的名称。 默认是../sql/share/errmsg.txt。


--name_file=file_name, -N file_name


错误名称文件的名称。 默认是mysqld_ername.h。



--out_dir=dir_name, -D dir_name

输出基本目录的名称。 默认是../sql/share/。

--out_file=file_name, -O file_name


输出文件的名称。 默认是errmsg.sys。


--statefile=file_name, -S file_name


SQLSTATE头文件的名称。 缺省值是sql_state.h。


--version ,-V

显示版本信息并退出。



2.mysql_install_db -- 初始化 MYSQL 数据目录


注意:

从MySQL 5.7.6开始,mysql_install_db被弃用,因为它的功能

已经被集成到MySQL服务器mysqld中。 初始化一个MySQL

安装时,使用--initialize或--initializeinsecure选项调用mysqld。


mysql_install_db处理MySQL服务器mysqld准备就绪之前必须执行的初始化任务:


它初始化MySQL数据目录并创建它包含的系统表。它初始化管理InnoDB表所需的系统表空间和相关的数据结构。



它加载服务器端帮助表。它安装了sys方案。它创建一个管理帐户。 旧版本的mysql_install_db可能会创建匿名用户帐户。


在MySQL 5.7.5之前,mysql_install_db是一个Perl脚本,需要安装Perl。 从5.7.5开始,mysql_install_db用C ++编写,并以二进制分发形式作为可执行的二进制文件提供。 另外,还增加了一些新的选项,删除了旧的选项。 如果你发现一个选项不能像你期望的那样工作,一定要检查你的mysql_install_db版本中哪个选项适用(用--help选项调用它)。



安全-默认 部署


当前版本的mysql_install_db产生默认安全的MySQL部署。 建议您使用MySQL 5.7.5或以上的mysql_install_db以获得最佳安全性,但为了完整性(在MySQL 5.7中分阶段引入了默认安全部署),此处包含有关安全特性的版本相关信息。


MySQL 5.7.5及以上版本默认是安全的,具有以下特点:


使用随机生成的密码创建一个名为“root”@“localhost”的管理帐户,该密码被标记为过期。没有匿名用户帐户被创建。所有用户都不能创建测试数据库。--admin-xxx选项可用于控制管理帐户的特征。--random-password-file选项可用于控制随机密码的写入位置。--insecure选项可用于抑制随机生成密码。




--5.7.3和之前的版本默认不是安全的。


如果mysql_install_db生成一个随机的管理密码,它将密码写入一个文件并显示文件名。 密码条目包括一个时间戳,以指示它的写入时间。默认情况下,运行脚本的有效用户的主目录中的文件是.mysql_secret。使用模式600创建的mysql_secret只能由它被创建的系统用户访问。



重要:

当mysql_install_db为管理帐户生成随机密码时,必须在运行mysql_install_db启动服务器之后,使用具有写入.mysql_secret文件的密码的管理帐户进行连接,并指定新的管理密码。 在此之前,管理帐户不能用于其他任何事情。 要更改密码,可以使用SET PASSWORD语句(例如,使用mysql或mysqladmin客户端)。 重置密码后,删除.mysql_secret文件; 否则,如果您运行mysql_secure_installation,该命令可能会看到该文件,并再次过期根密码,作为确保安全部署的一部分。


调用语法


MySQL 5.7.5中对mysql_install_db进行了一些更改,这些更改会影响调用语法。 将位置更改为MySQL安装目录,并使用适合您的MySQL版本的命令:



MYSQL 5.7.5以上的调用语法:

shell> bin/mysql_install_db --datadir=path/to/datadir [other_options]


--datadir选项是强制的。 mysql_install_db创建数据目录,该目录一定不存在:

1. 如果数据目录已经存在,那么您正在执行升级操作(而不是安装操作),应该运行mysql_upgrade而不是mysql_install_db。

2. 如果数据目录不存在,但mysql_install_db失败,则必须先删除任何部分创建的数据目录,然后再次运行mysql_install_db。


在MYSQL 5.7.5: 之前的调用语法:


shell> scripts/mysql_install_db [options]

由于MySQL服务器mysqld在稍后运行时必须访问数据目录,因此应该使用来自将用于运行mysqld的相同系统帐户的mysql_install_db,或者以root用户身份运行它并指定--user选项以指示用户 mysqld将运行的名称。 如果mysql_install_db没有为安装目录使用正确的位置,可能需要指定其他选项,例如--basedir。例如:

shell> bin/mysql_install_db --user=mysql \

--basedir=/opt/mysql/mysql \

--datadir=/opt/mysql/mysql/data

注意:

在mysql_install_db设置了InnoDB系统表空间之后,对某些表空间特性的更改需要设置一个全新的实例。 这包括系统表空间中第一个文件的文件名和undo日志的数量。 如果您不想使用默认值,请确保在运行mysql_install_db之前,innodb_data_file_path和innodb_log_file_size配置参数的设置位于MySQL配置文件中。 还要确保指定其他影响InnoDB文件创建和位置的参数,例如innodb_data_home_dir和innodb_log_group_home_dir。


如果这些选项位于您的配置文件中,但是该文件不在MySQL默认读取的位置,请在运行mysql_install_db时使用--defaults-extrafile选项指定文件位置。



如果在执行安装时设置了自定义的TMPDIR环境变量,并且指定的目录不可访问,则mysql_install_db可能会失败。 如果是这样,请取消设置TMPDIR或将TMPDIR设置为指向系统临时目录(通常为/ tmp)。




管理帐户创建


mysql_install_db默认创建一个名为"root"@"localhost"的管理帐户。 (在MySQL 5.7.4之前,mysql_install_db会创建额外的root帐号,比如'root'@127.0.0.1',这已经不复存在了。


从MySQL 5.7.5开始,mysql_install_db提供了一些选项,使您可以控制管理帐户的几个方面:


•要更改帐户名称的用户或主机部分,请使用--login-path或--admin-user和--admin-host。

• - securedcure禁止生成随机密码。

•--admin-auth-plugin指定身份验证插件。

•--admin-require-ssl指定帐户是否必须使用SSL连接。


mysql_install_db为用户表行分配一个非空的插件列值来设置认证插件。 默认值是mysql_native_password。 可以使用MySQL 5.7.5及更高版本中的--admin-auth-plugin选项更改该值(如前所述),或者将MySQL 5.7.2中的default_authentication_plugin系统变量设置为5.7.4。



默认 my.cnf文件


从MySQL 5.7.5开始,mysql_install_db不会创建默认的my.cnf文件。


在MySQL 5.7.5之前,mysql_install_db将在基本安装目录中创建一个名为my.cnf的默认选项文件。 该文件是从包含在名为mydefault.cnf的分发包中的模板创建的。 您可以在基本安装目录下或其下找到该模板。 当开始使用mysqld_safe时,服务器默认使用my.cnf文件。 如果my.cnf已经存在,mysql_install_db会假定它正在被使用,并写入一个名为my-new.cnf的新文件。


有一个例外,默认选项文件中的设置被注释,并没有效果。 例外是该文件将sql_mode系统变量设置为NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES。 此设置会生成一个服务器配置,导致错误,而不是警告修改事务表的操作中的错误数据。


mysql_install_db支持以下选项,可以在命令行或选项文件的[mysql_install_db]组中指定。



--help,-?

显示帮助信息并退出。

--admin-auth-plugin=plugin_name


用于管理帐户的身份验证插件。 默认是mysql_native_password。

这个选项在 MYSQL 5.7.5 被增加


--admin-host=host_name


用于管理帐户名称的主机部分。 默认是localhost。 如果还指定了--login-path,则忽略此选项.

这个选项在MYSQL 5.7.5被增加


--admin-require-ssl


是否需要管理帐户的SSL。 默认是不需求。 启用此选项后,mysql_install_db用来创建帐户的语句包含REQUIRE SSL子句。 因此,管理帐户在连接到服务器时必须使用安全连接。

这个选项在MYSQL 5.7.5被增加


--admin-user=user_name


用于管理帐户名称的用户部分。 默认是root。 如果还指定了--login-path,则忽略此选项.

这个选项在MYSQL 5.7.5被增加


--basedir=dir_name

MySQL安装目录的路径。


--builddir=dir_name


用于--srcdir和out-of-source构建。 将其设置为构建文件所在目录的位置。


--cross-bootstrap

供内部使用。 该选项用于在另一个主机上构建系统表。

这个选项在MYSQL 5.7.5被移除


--datadir=dir_name

MySQL数据目录的路径。 如果不存在,则只创建路径名的最后一个组件; 父目录必须已经存在或发生错误。


注意:

从MySQL 5.7.5开始,--datadir选项是强制性的,并且数据目录 一定不能存在 (父目录必须存在。)


--defaults


这个选项使得mysql_install_db以这样的方式调用mysqld:它从默认位置读取选项文件。 如果没有指定--no-defaults和--defaults-file或--defaults-extrafile,则mysql_install_db会将--no-defaults传递给mysqld,以防止读取选项文件。 如果由于从选项文件读取未知选项而导致程序启动失败,这可能会有所帮助。

这个选项是在MySQL 5.7.5中添加的。 (在5.7.5之前,只支持--no-defaults变体。)


--defaults-extra-file=file_name


在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。 如果文件不存在或无法访问,则会发生错误。 如果以相对路径名而不是完整路径名的形式给出file_name,则相对于当前目录进行解析。

这个选项被mysql_install_db传递给mysqld。


--defaults-file=file_name


只使用给定的选项文件。 如果文件不存在或无法访问,则会发生错误。 如果以相对路径名而不是完整路径名的形式给出file_name,则相对于当前目录进行解析。

这个选项被mysql_install_db传递给mysqld。


--extra-sql-file=file_name, -f file_name


该选项命名一个文件,其中包含在标准引导语句后执行的附加SQL语句。 文件中接受的语句语法与mysql命令行客户端类似,包括支持多行C风格的注释和分隔符处理以启用存储程序的定义。

这个选项是在MySQL 5.7.5中添加的。



--force

导致即使DNS不起作用也会运行mysql_install_db。 通常使用主机名创建的表格条目将使用IP地址。

这个选项从MYSQL 5.7.5被移除


--insecure

不要为管理帐户生成随机密码。


注意:--insecure选项被添加到MySQL 5.7.5中,替换了--skiprandom-passwords选项。

如果没有给出--insecure,则必须在运行mysql_install_db启动服务器之后,使用管理帐户连接并将密码写入.mysql_secret文件,并指定一个新的管理密码。 在此之前,管理帐户不能用于其他任何事情。 要更改密码,可以使用SET PASSWORD语句(例如,使用mysql或mysqladmin客户端)。 重置密码后,请删除.mysql_secret文件;否则,如果运行mysql_secure_installation,该命令可能会看到该文件,再次过期根密码,作为确保安全部署的一部分。



--keep-my-cnf


告诉mysql_install_db保存任何现有的my.cnf文件,而不是创建一个新的默认my.cnf文件。

这个选项在MySQL 5.7.4中添加,并在5.7.5中删除。 从5.7.5开始,mysql_install_db不会创建默认的my.cnf文件。


--lc-messages=name


用于出现错误消息的语言环境。 缺省值是en_US。 参数转换为语言名称,并与--lc-messages-dir的值组合以生成错误消息文件的位置。

这个选项是在MySQL 5.7.5中添加


--lc-messages-dir=dir_name


错误消息所在的目录。 该值与--lcmessages的值一起用于生成错误消息文件的位置。

这个选项在MySQL 5.7.5中添加


--ldata=dir_name

--datadir的同义词

这个选项在MySQL 5.7.5中移除


--login-file=file_name

如果指定了--login-path = file_name选项,则从中读取登录路径的文件。 默认文件是.mylogin.cnf。

这个选项是在MySQL 5.7.5中添加


--login-path=name

从.mylogin.cnf登录路径文件中的指定登录路径读取选项。 默认登录路径是客户端。 (要读取其他文件,请使用--login-file = name选项。)“登录路径”是一个选项组,包含指定要连接哪个MySQL服务器以及要认证哪个帐户的选项。 要创建或修改登录路径文件,请使用mysql_config_editor实用程序。


如果指定了--login-path选项,则将从登录路径获取用户,主机和密码值,并用于创建管理帐户。 必须在登录路径中定义密码或发生错误,除非还指定了--insecure选项。 另外,使用--login-path,任何--admin-host和--admin-user选项都将被忽略。

这个选项是在MySQL 5.7.5中添加的。


--mysqld-file=file_name


要执行的mysqld二进制文件的路径名称。 选项值必须是绝对路径名否则会产生错误。

如果没有给出这个选项,mysql_install_db在这些位置搜索mysqld:

在--basedir选项值下的bin目录下,如果给出了该选项。

在--srcdir选项值下的bin目录中,如果给出了该选项。

在bin目录下的--builddir选项值下,如果给出了这个选项。

在本地目录和本地目录下的bin和sbin目录中。

在/usr/bin中,/usr/sbin,/usr/local/bin,/usr/local/sbin,/opt/local/bin,/opt/local/sbin中。

这个选项是在MySQL 5.7.5中添加的。


--no-defaults


在MySQL 5.7.5之前,不要读取任何选项文件。 如果由于从选项文件中读取未知选项而导致程序启动失败,可以使用--no-defaults来防止读取它们。 对于从MySQL 5.7.5开始的此选项的行为,请参阅--defaults的描述。



--random-password-file=file_name


用于为管理帐户编写随机生成的密码的文件的路径名。 选项值必须是绝对路径名或发生错误。 默认是$HOME/.mysql_secret。

这个选项是在MySQL 5.7.5中添加的。


--random-passwords


注意:

这个选项在MySQL 5.7.4中被删除,并被替换为--skip-randompasswords,然后在MySQL 5.7.5中被删除,并替换为--insecure。


在Unix平台上,这个选项提供了更安全的MySQL安装。 使用--random-passwords调用mysql_install_db将导致它除了正常的操作外还执行以下操作:


初始随机根密码被写入HOME环境变量所指定的目录中的.mysql_secret文件。 根据操作系统的不同,使用诸如sudo之类的命令可能会导致HOME的值引用根系统用户的主目录。 .mysql_secret使用模式600创建,只能由创建它的系统用户访问。如果.mysql_secret已经存在,那么新的密码信息会被附加到它。 每个密码输入都包含一个时间戳,以指示何时写入。没有匿名用户MySQL帐户被创建。

由于这些操作,安装后必须启动服务器,使用写入.mysql_secret文件的密码以root身份进行连接,并指定新的root密码。 在这之前,root不能做任何事情。 这必须为您打算使用的每个根帐户完成。 要更改密码,可以使用SET PASSWORD语句(例如,使用mysql客户端)。 您也可以使用mysqladmin或mysql_secure_installation。

使用RPM软件包和Solaris PKG软件包的新安装操作(不是升级)使用--random-passwords选项调用mysql_install_db(使用RPM安装Unbreakable Linux Network的操作不受影响,因为它们不使用mysql_install_db。

对于使用二进制.tar.gz发行版或源代码发行版的安装操作,可以使用--random-passwords选项手动调用mysql_install_db,以使MySQL安装更加安全。 建议这样做,特别是对于敏感数据的站点。


--rpm


供内部使用。 在MySQL安装过程中使用此选项来执行使用RPM软件包执行的安装操作。

这个选项在MySQL 5.7.5中移除


--skip-name-resolve


创建授权表条目时使用IP地址而不是主机名。 如果您的DNS不起作用,此选项可能很有用。

MySQL 5.7.5中删除了这个选项。


--skip-random-passwords


注意:--skip-random-passwords选项被添加到MySQL 5.7.4中,取代了--random-passwords选项。 --skip-random-passwords在MySQL 5.7.5中被移除,并被替换为--insecure。


从MySQL 5.7.4开始,使用mysql_install_db生成的MySQL部署默认是安全的。 当没有使用--skip-random-passwords选项时,mysql_install_db使用这些默认的部署特性:


安装过程会创建一个单独的root帐户“root”@“localhost”,自动为该帐户生成随机密码,并将密码过期。最初的随机root密码被写入运行脚本的有效用户的主目录中的.mysql_secret文件。 .mysql_secret使用模式600创建,只能由创建它的系统用户访问。如果.mysql_secret已经存在,那么新的密码信息会被附加到它。 每个密码输入都包含一个时间戳,以指示何时写入。没有匿名用户MySQL帐户被创建。没有测试数据库被创建。

由于这些操作,安装后必须启动服务器,使用写入到.mysql_secret文件的密码以root身份进行连接,并指定新的root密码。 在此之前,管理帐户不能用于其他任何事情。 要更改密码,可以使用SET PASSWORD语句(例如,使用mysql客户端)。 您也可以使用mysqladmin或mysql_secure_installation。



要生成缺省情况下不安全的MySQL部署,必须在调用mysql_install_db时明确指定--skip-random-passwords选项。 使用此选项,mysql_install_db执行以下操作:


"root"@"localhos帐t"户没有生成随机密码。测试数据库被创建,任何用户都可以访问。



--skip-sys-schema

从MySQL 5.7.7开始,mysql_install_db安装sys模式。 --skip-sys-schema选项可以抑制这种行为。 这个选项是在MySQL 5.7.7中添加的。

--srcdir=dir_name

供内部使用。 此选项指定mysql_install_db查找支持文件的目录,如错误消息文件和用于填充帮助表的文件。


--user=user_name, -u user_name

用于运行mysqld的系统(登录)用户名。 由mysqld创建的文件和目录将归这个用户所有。 您必须是系统根用户才能使用此选项。 默认情况下,mysqld使用您当前的登录名运行,它创建的文件和目录将由您拥有。

这个选项的-u形式是在MySQL 5.7.5中添加的。


--version, -V

显示版本信息并退出。

这个选项是在MySQL 5.7.5中添加


--windows


供内部使用。 此选项用于创建Windows分发。 这是--cross-bootstrap的别名。

MySQL 5.7.5中删除了这个选项。


3.mysql_plugin --配置MySQL服务器插件


mysql_plugin工具使MySQL管理员可以管理MySQL服务器加载的插件。 它提供了在服务器启动时手动指定--plugin-load选项或在运行时使用INSTALL PLUGIN和UNINSTALL PLUGIN语句的替代方法。


根据是否调用mysql_plugin来启用或禁用插件,它将插入或删除作为插件注册表的mysql.plugin表中的行。 (为了执行这个操作,mysql_plugin以引导模式调用MySQL服务器,这意味着服务器不能在运行。)对于正常的服务器启动,服务器会自动加载并启用mysql.plugin中列出的插件。


每次调用mysql_plugin都会读取一个配置文件,以确定如何配置包含在单个插件库对象文件中的插件。 要调用mysql_plugin,请使用以下语法:


mysql_plugin [options] plugin {ENABLE|DISABLE}

plugin是要配置的插件的名称。 ENABLE或DISABLE(不区分大小写)指定是否启用或禁用配置文件中指定的插件库组件。 插件和ENABLE或DISABLE参数的顺序无关紧要。


例如,要在Linux上配置名为myplugins.so的插件库文件的组件,或者在Windows上配置myplugins.dll,请指定myplugins的插件值。 假设这个插件库包含三个插件,plugin1,plugin2和plugin3,所有这些都应该在mysql_plugin控制下配置。 按照惯例,配置文件的后缀为.ini,插件库的基名相同,所以这个插件库的默认配置文件名是myplugins.ini。 配置文件内容如下所示:


myplugins

plugin1

plugin2

plugin3

myplugins.ini文件中的第一行是库对象文件的名称,没有任何扩展名,例如.so或.dll。 其余行是要启用或禁用组件的名称。 文件中的每个值应该在一个单独的行上。 第一个字符为“#”的行将被视为注释并被忽略。


要启用配置文件中列出的插件,可以这样调用mysql_plugin:

shell> mysql_plugin myplugins ENABLE

要禁用插件,请使用DISABLE而不是ENABLE。


如果mysql_plugin找不到配置文件或插件库文件,或者mysql_plugin无法启动MySQL服务器,则会发生错误。


mysql_plugin支持以下选项,可以在命令行或任何选项文件的[mysqld]组中指定。 对于[mysqld]组中指定的选项,mysql_plugin会识别--basedir,--datadir和--plugin-dir选项并忽略其他选项。


mysql_plugin 选项:


--help,-?


显示帮助信息并退出。


--basedir=dir_name, -b dir_name

服务器的基础目录。


--datadir=dir_name, -d dir_name


服务器数据目录。


--my-print-defaults=file_name, -b file_name

my_print_defaults程序的路径。


--mysqld=file_name, -b file_name

到mysql服务器的路径。


--no-defaults, -p


不要读取配置文件中的值。 该选项使管理员可以跳过从配置文件读取默认值。

使用mysql_plugin,不需要在命令行中首先给出这个选项,与大多数其他支持--no-defaults的MySQL程序不同。


--plugin-dir=dir_name, -p dir_name

服务器插件目录。


--plugin-ini=file_name, -i file_name


mysql_plugin配置文件。 相对路径名称相对于当前目录进行解释。 如果没有给出这个选项,plugin目录中的默认值是plugin.ini,其中plugin是命令行上的plugin参数。



--print-defaults, -P


显示配置文件中的默认值。 这个选项会导致mysql_plugin在配置文件中找到--basedir,--datadir和--plugin-dir的默认值。 如果找不到变量的值,则不显示任何内容。

使用mysql_plugin,不需要在命令行中首先给出该选项,这与大多数其他支持--print-defaults的MySQL程序不同。



--verbose,-v

详细模式。 打印关于该程序的更多信息。 此选项可以多次使用以增加信息量。

--version, -V

显示版本信息并退出。


4.mysql_secure_installation --提高MySQL安装安全性

该程序使您能够通过以下方式提高MySQL安装的安全性:



您可以为root帐户设置密码您可以删除可从本地主机外访问的根帐户。您可以删除匿名用户帐户。您可以删除测试数据库(默认情况下可以被所有用户访问,甚至是匿名的用户)以及允许任何人访问名称以test_开头的数据库的权限。




从MySQL 5.7.2开始,mysql_secure_installation是所有平台上可用的可执行二进制文件。在5.7.2之前,这是一个可用于Unix和类Unix系统的脚本。


正常的用法是连接到本地的MySQL服务器; 不带参数调用mysql_secure_installation:


shell> mysql_secure_installation


执行时,mysql_secure_installation会提示您确定要执行的操作。

从MySQL 5.7.2开始,mysql_secure_installation支持这些附加功能:


validate_password插件可用于密码强度检查。 如果没有安装插件,mysql_secure_installation会提示用户是否安装它。 如果启用了插件,那么之后输入的密码会被检查。大多数通常的MySQL客户端选项,例如--host和--port都可以在命令行和选项文件中使用。 例如,要使用端口3307通过IPv6连接到本地服务器,请使用以下命令:



shell> mysql_secure_installation --host=::1 --port=3307


mysql_secure_installation支持以下选项,可以在命令行或选项文件的 [mysql_secure_installation]和[client]组中指定。



5.mysql_ssl_rsa_setup --创建SSL / RSA文件


此程序创建支持使用SSL进行安全连接所需的SSL证书和密钥文件以及RSA密钥对文件,并在未加密的连接上使用RSA安全地进行密码交换(如果缺少这些文件)。 如果现有的文件已经过期,mysql_ssl_rsa_setup也可以用来创建新的SSL文件。


注意:

mysql_ssl_rsa_setup使用openssl命令,所以它的使用是依赖于的

在你的机器上安装了OpenSSL。

生成SSL和RSA文件的另一种方法是使用OpenSSL编译的MySQL发行版,服务器会自动生成这些文件。

mysql_ssl_rsa_setup有助于降低生成所需文件的难度,从而降低使用SSL的难度。 但是,由mysql_ssl_rsa_setup生成的证书是自签名的,不是很安全。 获得使用mysql_ssl_rsa_setup创建的二手域名文件的经验后,请考虑从注册证书颁发机构获取CA证书。



调用如下:

shell> mysql_ssl_rsa_setup [options]


典型的选项是--datadir来指定在哪里创建文件,以及--verbose来查看mysql_ssl_rsa_setup执行的openssl命令。


mysql_ssl_rsa_setup尝试使用一组默认的文件名创建SSL和RSA文件。 它的工作原理如下:

1.mysql_ssl_rsa_setup在由PATH环境变量指定的位置检查openssl二进制文件。 如果openssl没有找到,mysql_ssl_rsa_setup什么都不做。 如果存在openssl,则mysql_ssl_rsa_setup将在--datadir选项指定的MySQL数据目录中查找默认的SSL和RSA文件,如果未提供该选项,则在编译的数据目录中查找。


2.mysql_ssl_rsa_setup使用以下名称检查数据目录中的SSL文件:


ca.pem

server-cert.pem

server-key.pem


3.如果有任何这些文件存在,mysql_ssl_rsa_setup将不会创建SSL文件。 否则,它会调用openssl来创建它们,再加上一些额外的文件:

ca.pem Self-signed CA certificate

ca-key.pem CA private key

server-cert.pem Server certificate

server-key.pem Server private key

client-cert.pem Client certificate

client-key.pem Client private key


这些文件使用SSL实现安全的客户端连接;


4.mysql_ssl_rsa_setup使用以下名称检查RSA文件的数据目录:

private_key.pem Private member of private/public key pair

public_key.pem Public member of private/public key pair


5.如果存在这些文件中的任何一个,则mysql_ssl_rsa_setup不会创建RSA文件。 否则,它会调用openssl来创建它们。 这些文件使用RSA通过sha256_password插件验证的帐户的未加密连接启用安全密码交换;



启动时,MySQL服务器自动使用由mysql_ssl_rsa_setup创建的SSL文件来启用SSL,如果没有给出明确的SSL选项而不是--ssl。 如果您希望明确指定文件,请在启动时使用--ssl-ca, - ssl-cert和--ssl-key选项来命名ca.pem,server-cert.pem和server-key. pem文件。


如果没有给出明确的RSA选项,服务器也会自动使用由mysql_ssl_rsa_setup创建的RSA文件来启用RSA。


如果服务器启用SSL,则客户端只需在命令行上使用--ssl即可使用SSL进行连接。 要显式指定证书和密钥文件,请使用--ssl-ca,--ssl-cert和--ssl-key选项来命名ca.pem,client-cert.pem和client-key.pem文件, 但是,可能首先需要一些额外的客户端设置,因为默认情况下,mysql_ssl_rsa_setup在数据目录中创建这些文件。 数据目录的权限通常是运行MySQL服务器的系统帐户,所以客户端程序不能使用位于那里的文件。 要使这些文件可用,请将它们复制到客户端可读(但不可写)的目录中:



对于本地客户端,可以使用MySQL安装目录。 例如,如果数据目录是安装目录的子目录,并且您的当前位置是数据目录,则可以像这样复制文件:

shell> cp ca.pem client-cert.pem client-key.pem ..


对于远程客户端,使用安全通道分发这些文件,以确保它们在传输过程中不被篡改。



如果用于MySQL安装的SSL文件已经过期,您可以使用mysql_ssl_rsa_setup来创建新文件:


关闭服务器重命名或删除现有的SSL文件。 你可能希望先做一个备份。 (RSA文件不会过期,所以你不需要删除它们.mysql_ssl_rsa_setup会看到它们存在,不会覆盖它们。)使用--datadir选项运行mysql_ssl_rsa_setup以指定在哪里创建新文件。重启服务器



mysql_ssl_rsa_setup支持以下命令行选项,它们可以在命令行或选项文件的[mysql_ssl_rsa_setup],[mysql_install_db]和[mysqld]组中指定。




--datadir=dir_name


mysql_ssl_rsa_setup应该检查缺省SSL和RSA文件的目录的路径,如果它们缺失,它应该在其中创建文件。 缺省值是编译数据目录。


--suffix=str


X509证书中通用名称属性的后缀。 后缀值限制为17个字符。 默认是基于MySQL版本号。


--uid=name, -v


应该是所有创建文件的所有者的用户的名称。 该值是用户名,而不是数字用户标识。 在没有这个选项的情况下,由mysql_ssl_rsa_setup创建的文件由执行它的用户拥有。 只有在支持chown()系统调用的系统上以root身份执行程序时,此选项才有效。 这个选项是在MySQL 5.7.8中添加的。



6.mysql_tzinfo_to_sql -- 加载时区表


mysql_tzinfo_to_sql程序在mysql数据库中加载时区表。 它用于具有zoneinfo数据库(描述时区的文件集)的系统上。 这样的系统的例子是Linux,FreeBSD,Solaris和OS X.这些文件的一个可能位置是/usr/share/zoneinfo目录(Solaris上的/usr/share/lib/zoneinfo)。



可以用几种方法调用mysql_tzinfo_to_sql:

shell> mysql_tzinfo_to_sql tz_dir

shell> mysql_tzinfo_to_sql tz_file tz_name

shell> mysql_tzinfo_to_sql --leap tz_file


对于第一个调用语法,将zoneinfo目录路径名称传递给mysql_tzinfo_to_sql并将输出发送到mysql程序。 例如:


shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql


mysql_tzinfo_to_sql读取系统的时区文件,并从中生成SQL语句.mysql处理这些语句以加载时区表。


第二种语法会导致mysql_tzinfo_to_sql加载与时区名称tz_name对应的单个时区文件tz_file:


shell> mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql


如果您的时区需要考虑闰秒,请使用第三种语法调用mysql_tzinfo_to_sql,以初始化闰秒信息。 tz_file是您的时区文件的名称:


shell> mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql


运行mysql_tzinfo_to_sql之后,最好重新启动服务器,以便它不会继续使用任何以前缓存的时区数据。


7.mysql_upgrade -- 检查和升级MYSQL 表

mysql_upgrade检查所有数据库中与当前版本的MySQL服务器不兼容的所有表 。 mysql_upgrade还会升级系统表,以便您可以利用可能已添加的新特权或功能。


如果mysql_upgrade发现表有可能的不兼容性,它将执行表检查,如果发现问题,则尝试修复表。

每次升级MySQL时,都应该执行mysql_upgrade。


从MySQL 5.7.5开始,mysql_upgrade直接与MySQL服务器通信,向其发送执行升级所需的SQL语句。 在5.7.5之前,mysql_upgrade调用mysql和mysqlcheck客户端程序来执行所需的操作。 对于较早的实现,如果您在Linux上从RPM软件包安装MySQL,则必须安装服务器和客户端RPMs。mysql_upgrade包含在服务器RPM中,但需要客户端RPM,因为后者包含mysqlcheck。



注意:

如果您从5.7.2以前的版本升级到MySQL 5.7.2或更高版本,那么对mysql.user表的更改需要一系列特殊的步骤来使用mysql_upgrade执行升级。

在Windows Server 2008,Vista和更新版本上,您必须具有管理员权限 运行mysql_upgrade。 您可以通过以管理员身份运行命令提示符并运行该命令来完成此操作。 否则可能导致升级失败,无法正确执行。


--升级之前 做好当前安装的备份


要使用mysql_upgrade,请确保服务器正在运行。 然后像这样调用它来检查和修复表并升级系统表:


shell> mysql_upgrade [options]


运行mysql_upgrade之后,停止服务器并重新启动它,以便对系统表所做的任何更改生效。


如果您有多个MySQL服务器实例正在运行,请使用适合连接到所需服务器的连接参数调用mysql_upgrade。 例如,对于部件3306到3308上的本地主机上运行的服务器,通过连接到适当的端口来升级它们中的每一个:


shell> mysql_upgrade --protocol=tcp -P 3306 [other_options]

shell> mysql_upgrade --protocol=tcp -P 3307 [other_options]

shell> mysql_upgrade --protocol=tcp -P 3308 [other_options]


对于Unix上的本地主机连接,--protocol=tcp选项强制使用TCP/IP而不是Unix套接字文件进行连接。


mysql_upgrade处理所有数据库中的所有表,这可能需要很长时间才能完成。 每个表都被锁定,因此在处理其他会话时不可用。 检查和维修操作可能非常耗时,特别是对于大型表。


所有检查和修复的表都标有当前的MySQL版本号。 这可以确保下次使用相同版本的服务器运行mysql_upgrade时,可以确定是否需要再次检查或修复表。


mysql_upgrade还将MySQL版本号保存在数据目录中名为mysql_upgrade_info的文件中。 这用于快速检查是否所有的表都已经被检查过,所以可以跳过一些表检查。 要忽略此文件并执行检查,请使用--force选项。



从MySQL 5.7.2开始,mysql_upgrade检查用户表行,对于任何具有空plugin列的行,根据Password列值的哈希格式将该列设置为“mysql_native_password”或“mysql_old_password”。 从MySQL 5.7.5开始,对4.1之前的密码哈希和mysql_old_password的支持被删除,所以如果密码列使用与该插件兼容的哈希格式,mysql_upgrade会将空的插件值设置为“mysql_native_password”。 具有4.1之前密码散列的行必须手动升级


mysql_upgrade不会升级帮助表的内容


从MySQL 5.7.7开始,除非使用--skip-sys-schema选项进行调用,mysql_upgrade会在未安装sys方案的情况下安装sys方案,否则将升级到当前版本。 如果一个sys方案存在但是没有版本视图,mysql_upgrade会返回一个错误,假设它缺席表示一个用户创建的方案:

Error occurred: A sys schema exists with no sys.version view. If

you have a user created sys schema, this must be renamed for the

upgrade to succeed.


要在这种情况下升级,请首先删除或重命名现有的sys方案。


在MySQL 5.7.9和更高版本中,mysql_upgrade检查使用通用分区处理程序创建的分区InnoDB表,并尝试将它们升级到InnoDB本地分区(在MySQL 5.7.6和更高版本中使用)。 (bug#76734,bug #20727344)也从MySQL 5.7.9开始,您可以使用ALTER TABLE ... UPGRADE PARTITIONING SQL语句在mysql客户端中单独升级这些表。


默认情况下,mysql_upgrade作为MySQL根用户运行。 如果运行mysql_upgrade时root密码已过期,您将看到一条消息,表明您的密码已过期,导致mysql_upgrade失败。 要解决这个问题,请重置根密码以解除它并再次运行mysql_upgrade。 首先,以root身份连接到服务器:


shell> mysql -u root -p

Enter password: **** <- enter root password here


使用适当的SQL语句重置密码。 从MySQL 5.7.6开始,使用ALTER USER:


mysql> ALTER USER USER() IDENTIFIED BY 'root-password';


在5.7.6之前 使用 SET PASSWORD:

mysql> SET PASSWORD = PASSWORD('root-password');


然后退出mysql并再次运行mysql_upgrade:


shell> mysql_upgrade [options]


mysql_upgrade支持以下选项,可以在命令行或选项文件的[mysql_upgrade]和[client]组中指定。




--basedir=dir_name

MySQL安装目录的路径。 MySQL 5.7.2中删除了这个选项。


--bind-address=ip_address


在具有多个网络接口的计算机上,使用此选项来选择连接到MySQL服务器的网卡。 这个选项是在MySQL 5.7.5中添加的。


--character-sets-dir=dir_name


安装字符集的目录


--compress, -C


压缩客户端和服务器之间发送的所有信息(如果两者都支持压缩)。 这个选项的-C形式是在MySQL 5.7.5中添加的。


--datadir=dir_name


数据目录的路径。 MySQL 5.7.2中删除了这个选项。


--debug[=debug_options], -# [debug_options]

编写一个调试日志。 典型的debug_options字符串是d:t:o,file_name。 缺省值是d:t:O,/tmp/mysql_upgrade.trace。


--debug-check

程序退出时打印一些调试信息。


--debug-info, -T


打印程序退出时的调试信息,内存和CPU使用情况统计信息。


--default-auth=plugin


有关使用客户端身份验证插件的提示


--default-character-set=charset_name


使用charset_name作为默认字符集


--defaults-group-suffix=str

不仅要读取通常的选项组,还要读取通常名称和后缀str的组。

例如,mysql_upgrade通常读取[client]和[mysql_upgrade]组。如果给出--defaults-group-suffix = _other选项,mysql_upgrade也会读取[client_other]和[mysql_upgrade_other]组。



--force


即使已经为当前版本的MySQL执行了mysql_upgrade,也可以忽略mysql_upgrade_info文件并强制执行


--host=host_name, -h host_name


连接到给定主机上的MySQL服务器。


--max-allowed-packet=value

客户端/服务器通信的最大缓冲区大小。 默认值是24MB。 最小值和最大值是4KB和2GB。 这个选项是在MySQL 5.7.5中添加的。


--net-buffer-length=value

客户端/服务器通信的缓冲区的初始大小。 默认值是1MB - 1KB。 最小值和最大值分别是4KB和16MB。 这个选项是在MySQL 5.7.5中添加的。


--pipe, -W

在Windows上,使用命名管道连接到服务器。 此选项仅适用于服务器支持命名管道连接。


--plugin-dir=dir_name

查找插件的目录。 如果使用--default-auth选项指定认证插件,但是mysql_upgrade找不到它,请指定此选项


--skip-sys-schema

从MySQL 5.7.7开始,mysql_upgrade会在没有安装的情况下安装sys模式,并将升级到当前版本。 --skip-sys-schema选项可以抑制这种行为。 这个选项是在MySQL 5.7.7中添加的。


--tmpdir=dir_name, -t dir_name

用于创建临时文件的目录的路径名称。 由于重新实现不再使用临时文件,因此在MySQL 5.7.5中删除了该选项。


--upgrade-system-tables, -s


只升级系统表,不升级数据。


--version-check, -k

检查mysql_upgrade连接到的服务器的版本,以验证它是否与构建mysql_upgrade的版本相同。 如果没有,mysql_upgrade退出。 这个选项是默认启用的; 要禁用检查,请使用--skip-version-check。 这个选项是在MySQL 5.7.2中添加的。


--write-binlog


默认情况下,mysql_upgrade的二进制日志记录被禁用。 如果您希望将其操作写入二进制日志,请使用--write-binlog调用该程序。



对于启用全局事务标识符的MySQL服务器,不建议运行mysql_upgrade(bug#13833710)。 这是因为启用GTID意味着mysql_upgrade可能需要在使用非事务性存储引擎(如MyISAM)的系统表上执行的任何更新失败。


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post