安装MySQL后,必须初始化data目录,包括数据库中的表mysql
系统模式:
对于某些MySQL安装方法,数据目录初始化是自动的,如第2.10节“安装后设置和测试”.
对于其他安装方法,必须手动初始化data目录。这包括从Unix和类Unix系统上的通用二进制和源代码发行版安装,以及从Windows上的ZIP Archive包安装。
本节介绍如何手动初始化MySQL安装方法的数据目录,对于这些数据目录初始化不是自动的。有关支持测试服务器是否可访问和工作是否正常的一些建议命令,请参见第2.10.3节“测试服务器”.
在MySQL 8.0中,默认的身份验证插件更改为mysql_native_password
来caching_sha2_password
,“根”@“localhost”
管理账户使用caching_sha2_password
默认情况下。如果你喜欢根
帐户使用前面的默认身份验证插件(mysql_native_password
),看caching_sha2_password和根管理帐户.
的用户ID下运行服务器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授权表,这些表决定了允许用户如何连接到服务器。例如:bin / mysqld——初始化用户= mysql
有关该命令的重要信息,特别是关于可能使用的命令选项的信息,请参见数据目录初始化步骤.有关服务器如何初始化的详细信息,请参见数据目录初始化期间的服务器操作.
通常情况下,只有在首次安装MySQL之后才需要初始化数据目录。(对于现有安装的升级,请执行升级过程;看到第2.11节“升级MySQL”)。但是,初始化数据目录的命令不会覆盖任何现有的目录
mysql
Schema表,因此它可以在任何情况下安全运行。如果要部署自动支持安全连接的服务器,请使用mysql_ssl_rsa_setup创建默认的SSL和RSA文件:
bin / mysql_ssl_rsa_setup
有关更多信息,请参见mysql_ssl_rsa_setup -创建SSL/RSA文件.
在没有任何选项文件的情况下,服务器使用默认设置启动。(见第5.1.2节,“服务器配置默认值”)。要显式指定MySQL服务器在启动时应该使用的选项,请将它们放在一个选项文件中,例如
/etc/my.cnf
或/etc/mysql/my.cnf
.(见第4.2.2.2节“使用选项文件”)。例如,您可以使用选项文件来设置secure_file_priv
系统变量。要安排MySQL在系统引导时不进行手动干预地启动,请参见第2.10.5节“自动启动和停止MySQL”.
中创建的时区表
mysql
模式,但不填充它们。要做到这一点,请使用“MySQL服务器时区支持”章节5.1.15.
将位置更改为MySQL安装的顶级目录,这通常是/usr/local/mysql
(根据需要调整系统的路径名):
cd /usr/local/mysql
要初始化数据目录,请调用mysqld与——初始化
或——initialize-insecure
选项,这取决于您是否希望服务器为“根”@“localhost”
帐户,或创建该帐户无密码:
使用
——初始化
为”缺省安全”安装(即包括随机初始值的生成)根
密码)。在这种情况下,密码被标记为过期,您必须选择一个新密码。与
——initialize-insecure
,没有根
生成密码。这是不安全的;假设您打算在将服务器投入生产使用之前及时地为帐户分配密码。
有关分配新“根”@“localhost”
密码,看到初始化后root密码分配.
服务器将任何消息(包括任何初始密码)写入其标准错误输出。这可能会被重定向到错误日志,因此如果您在屏幕上没有看到消息,请查看那里。有关错误日志的信息,包括它的位置,请参见第5.4.2节“错误日志”.
在Windows上,使用——控制台
将消息定向到控制台的选项。
在Unix和类Unix系统上,数据库目录和文件由mysql
登录帐户,以便服务器在以后运行时对它们具有读写访问权限。为了确保这一点,开始吧mysqld从系统根
帐户,并包括——用户
选项如下所示:
Bin /mysqld——initialize——user=mysql Bin /mysqld——initialize-insecure——user=mysql
另外,执行mysqld当以mysql
,在这种情况下,可以省略——用户
选项。
在Windows上,使用以下命令之一:
Bin \mysqld—initialize—insecure—console
如果缺少所需的系统库,数据目录初始化可能会失败。例如,你可能会看到这样的错误:
Bin /mysqld:加载共享库时出现错误:libnuma.so。1:无法打开共享目标文件:没有共享目标文件或目录
如果出现这种情况,则必须手动或使用系统的包管理器安装缺少的库。然后重试数据目录初始化命令。
可能需要指定其他选项,例如——basedir
或——datadir
如果mysqld无法识别安装目录或数据目录的正确位置。例如(在单行中输入命令):
Bin /mysqld——initialize——user=mysql——basedir=/opt/mysql/mysql——datadir=/opt/mysql/ data . Bin /mysqld——initialize——user=mysql——basedir=/opt/mysql/mysql
或者,将相关选项设置放在选项文件中,并将该文件的名称传递给mysqld.对于Unix和类Unix系统,假设选项文件名为/ opt / mysql。/ mysql / etc / my . cnf中所做
.把这些行放入文件中:
(mysqld) basedir = / opt / mysql / mysql datadir = / opt / mysql / mysql /数据
然后调用mysqld如下所示(在单行中输入命令——defaults-file
选择第一个):
Bin /mysqld——defaults-file=/opt/mysql/mysql/etc/my.cnf——initialize——user=mysql . Bin
在Windows上,假设是这样C: \ my.ini
包含这些线:
[mysqld] basedir=C:\\Program Files\\MySQL\\MySQL Server 8.0 datadir=D:\\MySQLdata
然后调用mysqld如下所示(在单行中输入命令——defaults-file
选择第一个):
bin\mysqld——defaults-file=C:\my.ini——初始化——控制台
服务器执行的数据目录初始化序列不能替代mysql_secure_installation而且mysql_ssl_rsa_setup.看到章节4.4.2,“mysql_secure_installation -提高MySQL安装安全性”,mysql_ssl_rsa_setup -创建SSL/RSA文件.
的方法调用时——初始化
或——initialize-insecure
选项,mysqld在数据目录初始化顺序中执行以下操作:
服务器检查数据目录是否存在,如下所示:
如果数据目录不存在,则由服务器创建。
如果数据目录存在但不为空(即它包含文件或子目录),服务器在产生错误消息后退出:
初始化指定但数据目录存在。流产。
在这种情况下,请删除或重命名数据目录,然后重试。
如果每个条目的名称都以句点(
.
).
在数据目录中,服务器创建
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.服务器创建一个
“根”@“localhost”
超级用户帐户和其他保留帐户(参见第6.2.9节“保留帐户”).部分保留帐户被锁定,客户端无法使用“根”@“localhost”
用于管理用途,您应该为其分配一个密码。的密码相关的服务器操作
“根”@“localhost”
帐户取决于你如何调用它:与
——初始化
但不是——initialize-insecure
,服务器生成一个随机密码,将其标记为过期,并写一条显示密码的消息:[警告]“root@localhost: iTag*AfrH5ej”生成临时密码
与
——initialize-insecure
,无论有或没有——初始化
因为——initialize-insecure
意味着——初始化
),服务器不生成密码或标记其过期,并写一个警告消息:[警告]root@localhost是用空密码创建的!请考虑关闭——initialize-insecure选项。
有关分配新
“根”@“localhost”
密码,看到初始化后root密码分配.类使用的服务器端帮助表
帮助
声明(见第13.8.3节,“HELP语句”).服务器不填充时区表。要手动执行此操作,请参见“MySQL服务器时区支持”章节5.1.15.如果
init_file
给出系统变量命名一个SQL语句文件,服务器执行文件中的语句。此选项使您能够执行自定义引导序列。当服务器在引导模式下运行时,一些限制文件中允许的语句的功能是不可用的。这些包括与帐户管理相关的报表(例如
创建用户
或格兰特
)、复制和全局事务标识符。服务器退出。
在通过启动服务器来初始化数据目录之后——初始化
或——initialize-insecure
,正常启动服务器(也就是说,不包含这些选项),并分配“根”@“localhost”
帐户新密码:
启动服务器。说明,请参阅第2.10.2节“启动服务器”.
连接到服务器:
如果你使用
——初始化
但不是——initialize-insecure
要初始化数据目录,请以根
:Mysql -u root -p
然后,在密码提示时,输入服务器在初始化过程中生成的随机密码:
输入密码:(此处输入随机root密码)
如果不知道此密码,请查看服务器错误日志。
如果你使用
——initialize-insecure
要初始化数据目录,请以根
没有密码:Mysql -u root——skip-password
连接完成后,使用
改变用户
语句来分配一个new根
密码:修改用户root @ localhost根密码”;
试图连接到主机127.0.0.1
通常解析为本地主机
帐户。但是,如果服务器运行的是skip_name_resolve
启用。如果您计划这样做,请确保存在一个可以接受连接的帐户。例如,能够连接作为根
使用——主机= 127.0.0.1
或——主机=::1
,创建以下帐户:
创建用户“root”@“127.0.0.1”根密码”;创建用户“root”@“::1”根密码”;
方法可以将这些语句放入要执行的文件中init_file
系统变量,如在数据目录初始化期间的服务器操作.