安装MySQL后,必须初始化数据目录,包括表中的表mysql.
系统模式:
对于一些MySQL安装方法,数据目录初始化是自动的,如上所述第2.10节“Postalalallation设置和测试”。
有关其他安装方法,您必须手动初始化数据目录。这些包括从UNIX和UNIX的系统上的通用二进制和源分发,以及在Windows上的zip存档包。
本节介绍如何为MySQL安装方法手动初始化数据目录初始化不是自动的。有关一些建议的命令,请启用测试服务器是否可访问并正常工作,请参阅第2.10.3节“测试服务器”。。
在MySQL 8.0中,默认的身份验证插件已经从mysql_native_password
至caching_sha2_password.
,而且'root'@'localhost'
管理账户使用caching_sha2_password.
默认情况下。如果你更喜欢根
帐号使用先前的默认身份验证插件(mysql_native_password
), 看caching_sha2_password和root管理帐户。
在这里显示的示例中,服务器打算在mysql.
登录帐户。如果不存在,则创建帐户(参见创建MySQL用户和组),或替换计划用于运行服务器的另一个现有登录帐户的名称。
将位置更改为MySQL安装的顶级目录,通常是
/ usr / local / mysql
(根据需要调整系统的路径名):cd /usr/local/mysql
在此目录中,您可以找到多个文件和子目录,包括
箱
包含服务器的子目录以及客户端和实用程序。这
secure_file_priv
系统变量将导入和导出操作限制为特定目录。创建一个目录,其位置可以指定为该变量的值:mkdir mysql-files
将目录用户和组的所有权授予
mysql.
用户和mysql.
组,并适当设置目录权限:chown mysql:mysql mysql-files chmod 750 mysql-files
使用服务器初始化数据目录,包括
mysql.
包含初始MySQL Grant表的架构确定如何允许用户连接到服务器。例如:bin / mysqld --initialize --user = mysql
有关命令的重要信息,特别是有关您可以使用的命令选项,请参阅数据目录初始化过程。有关服务器如何执行初始化的详细信息,请参阅数据目录初始化过程中的服务器动作。
通常,只有在首次安装MySQL之后,只需要完成数据目录初始化。(要升级到现有安装,请执行升级程序;请参阅第2.11节“升级mysql”。)但是,初始化数据目录的命令不会覆盖任何现有的命令
mysql.
模式表,因此在任何情况下都可以安全地运行。如果要为安全连接自动支持部署服务器,请使用mysql_ssl_rsa_setup.实用程序来创建默认的SSL和RSA文件:
bin / mysql_ssl_rsa_setup.
有关更多信息,请参阅第4.4.3节“mysql_ssl_rsa_setup - 创建SSL / RSA文件”。
在没有任何选项文件的情况下,服务器将以默认设置启动。(见第5.1.2节“服务器配置默认值”。。)要明确指定MySQL Server应在启动时使用的选项,请将它们放在选项文件中,例如
/etc/my.cnf
或/etc/mysql/my.cnf
。(见第4.2.2.2节,“使用选项文件”)。例如,可以使用选项文件设置secure_file_priv
系统变量。要安排MySQL在没有手动干预系统启动时启动,请参阅第2.10.5节“自动启动和停止MySQL”。
数据目录初始化会在中初始化创建时区表
mysql.
架构但没有填充它们。为此,请使用指令MySQL服务器时区支持。
将位置更改为MySQL安装的顶级目录,通常是/ usr / local / mysql
(根据需要调整系统的路径名):
cd /usr/local/mysql
要初始化数据目录,请调用mysqld.与- 初始化
或——initialize-insecure
选项,具体取决于您是否希望服务器为该服务器生成随机初始密码'root'@'localhost'
帐户,或创建没有密码的帐户:
使用
- 初始化
为了“缺省安全“安装(即,包括随机初始化的生成根
密码)。在这种情况下,密码标记为已过期,您必须选择一个新的。和
——initialize-insecure
,没有根
密码生成。这是不安全的;假设您打算在将服务器置于生产使用之前及时为帐户分配密码。
有关分配新的说明'root'@'localhost'
密码,看到后初始化根密码分配。
服务器将任何邮件(包括任何初始密码)写入其标准错误输出。这可以重定向到错误日志,因此如果您没有看到屏幕上的消息,请查看此处。有关错误日志的信息,包括所在的位置,请参阅第5.4.2节“错误日志”。
在Windows上,使用- 安慰
选项将消息定向到控制台。
在UNIX和UNIX的系统上,对数据库目录和文件拥有非常重要mysql.
登录帐户使服务器在稍后运行时对它们具有读写访问权限。确保这一点,开始mysqld.来自系统根
帐户并包含——用户
选项如下所示:
bin / mysqld --initialize --user = mysql bin / mysqld --initialize-incure --user = mysql
或者,执行mysqld.当登录为mysql.
,在这种情况下,您可以省略——用户
来自命令的选项。
在Windows上,使用其中一个命令:
Bin \mysqld——initialize——console
如果缺少必需的系统库,则数据目录初始化可能会失败。例如,您可能会看到这样的错误:
Bin / MySQLD:加载共享库时出错:libnuma.so.1:无法打开共享对象文件:没有这样的文件或目录
如果发生这种情况,您必须手动安装缺少的库或使用系统的包管理器。然后重试数据目录初始化命令。
可能有必要指定其他选项,例如- 巴西尔
或--datadir.
如果mysqld.无法识别安装目录或数据目录的正确位置。例如(在单行上输入命令):
bin / mysqld --initialize --user = mysql --basedir = / opt / mysql / mysql --datadir = / opt / mysql / mysql / data
或者,将相关的选项设置放在选项文件中并将该文件的名称传递给mysqld.。对于UNIX和UNIX的系统,假设选项文件名是/opt/mysql/mysql/etc/my.cnf.
。将这些行放在文件中:
(mysqld) basedir = / opt / mysql / mysql datadir = / opt / mysql / mysql /数据
然后调用mysqld.如下所示(在一行上使用--defaults文件
选择首先):
bin / mysqld --defaults-file = / opt / mysql / mysql / etc / my.cnf --initialize --user = mysql
在Windows上,假设是这样C: \ my.ini
包含这些线:
[MySQLD]大型= C:\\ Program Files \\ MySQL \\ MySQL Server 8.0 Datadir = D:\\ mysqldata
然后调用mysqld.如下所示(在一行上使用--defaults文件
选择首先):
bin \ mysqld --defaults-file = c:\ my.ini --initalize --console
由服务器执行的数据目录初始化序列并不替代由mysql_secure_installation.和mysql_ssl_rsa_setup.。看到第4.4.2节“mysql_secure_installation - 提高MySQL安装安全性”,第4.4.3节“mysql_ssl_rsa_setup - 创建SSL / RSA文件”。
随着它的调用时- 初始化
或——initialize-insecure
选项,mysqld.在数据目录初始化序列中执行以下操作:
服务器检查数据目录是否存在,方法如下:
如果数据目录不存在,服务器将创建它。
如果数据目录存在但不为空(即,它包含文件或子目录),则服务器在生成错误消息后退出:
[错误] - 指定的 - Initialize但数据目录存在。中止。
在这种情况下,请删除或重命名数据目录,然后重试。
如果每个条目有一个以句点开始的名称,则允许存在现有数据目录是非空的
。
)。
在数据目录中,服务器创建
mysql.
系统模式及其表,包括数据字典表、授权表、时区表和服务器端帮助表。看到5.3节,“mysql系统架构”。服务器初始化系统表空间和相关的数据结构需要管理
InnoDB
表。笔记后mysqld.建立
InnoDB
系统表空间,对表空间特征的某些更改需要建立一个全新的实例。限定更改包括系统表空间中的第一个文件的文件名和撤消日志的数量。如果您不想使用默认值,请确保的设置innodb_data_file_path.
和innodb_log_file_size
配置参数都在MySQL中配置文件前运行mysqld.。还要确保指定影响创建和位置的必要参数InnoDB
文件,例如innodb_data_home_dir.
和Innodb_log_group_home_dir.
。如果这些选项位于您的配置文件中,但该文件不在默认情况下读取MySQL读取的位置,请使用该文件指定文件位置
--defaults-extra-file
运行时选项mysqld.。服务器创建一个
'root'@'localhost'
超级用户帐户和其他保留帐户(见第6.2.9节“保留账户”)。一些保留帐户被锁定,客户端不能使用,但是'root'@'localhost'
用于管理使用,您应该将其分配密码。服务器操作相对于密码
'root'@'localhost'
帐户取决于你如何调用它:和
- 初始化
但不是——initialize-insecure
,服务器生成随机密码,将其标记为已过期,并写入显示密码的消息:[警告]为root @ localhost生成临时密码:iTag * Afrh5ej
和
——initialize-insecure
,(有或没有- 初始化
因为——initialize-insecure
暗示- 初始化
),服务器不会生成密码或标记它已过期,并写出警告消息:[警告] root @ localhost是用空密码创建的!请考虑关闭--Initialize-Insecure选项。
有关分配新的说明
'root'@'localhost'
密码,看到后初始化根密码分配。控件使用的服务器端帮助表
帮助
声明(参见第13.8.3节“帮助陈述”)。服务器不会填充时区表。手动这样做,看MySQL服务器时区支持。如果
init_file.
系统变量被提供为命名SQL语句的文件,服务器执行文件中的语句。此选项使您可以执行自定义引导序列。当服务器在引导模式下运行时,某些功能不可用,从而限制文件中允许的语句。这些包括与账户管理有关的陈述(例如
创建用户
或授予
),复制和全局事务标识符。服务器退出。
通过启动服务器初始化数据目录后- 初始化
或——initialize-insecure
,正常启动服务器(也就是说,没有这些选项中的任何一个),并分配'root'@'localhost'
帐户新密码:
启动服务器。有关说明,请参阅第2.10.2节“启动服务器”。
连接到服务器:
如果你用过
- 初始化
但不是——initialize-insecure
要初始化数据目录,请连接到服务器根
:Mysql -u root -p
然后,在密码提示处,输入初始化序列期间生成的服务器的随机密码:
输入密码:(在这里输入随机的根密码)
如果不知道该密码,请查看服务器错误日志。
如果你用过
——initialize-insecure
要初始化数据目录,请连接到服务器根
没有密码:mysql -u root --skip-password
连接后,使用
改变用户
语句赋值一个新根
密码:更改用户的“obloghost”标识的'root-password';
也可以看看第2.10.4节,“保护初始MySQL帐户”。
尝试连接到主机127.0.0.1.
通常解决localhost.
帐户。但是,如果服务器使用skip_name_resolve.
启用。如果您计划这样做,请确保存在可以接受连接的帐户。例如,能够连接为根
使用——主机= 127.0.0.1
或- host = :: 1
,创建这些帐户:
创建用户'root'@'127.0.0.1'root密码'创建用户的“root”@':: 1'标识root密码'
可以将这些语句放在要使用的文件中执行init_file.
如讨论的系统变量数据目录初始化过程中的服务器动作。