安装MySQL后,需要初始化数据目录,包括数据库中的表mysql
系统数据库:
对于某些MySQL安装方法,数据目录的初始化是自动的,如第2.10节,“安装后的设置和测试”.
其他安装方法需要手动初始化data目录。这包括从Unix和类Unix系统上的通用二进制和源代码发行版安装,以及从Windows上的ZIP Archive包安装。
对于非自动初始化数据目录的MySQL安装方式,需要手动初始化数据目录。有关启用测试服务器是否可访问和工作正常的建议命令,请参见第2.10.3节,“测试服务器”.
在这里显示的示例中,服务器将在用户ID下运行mysql
登录帐户。如果帐户不存在,可以创建该帐户(参见创建mysql用户和组),或者替换您计划用于运行服务器的其他现有登录帐户的名称。
将位置更改为MySQL安装的顶级目录,这通常是
/usr/local/mysql
(根据需要调整系统的路径名):cd /usr/local/mysql
在这个目录中有几个文件和子目录,包括
箱子
包含服务器、客户端和实用程序的子目录。的
secure_file_priv
系统变量将导入和导出操作限制到特定目录。创建一个目录,其位置可以指定为该变量的值:mkdir mysql-files
将目录用户和组的所有权授予
mysql
用户和mysql
组,并适当设置目录权限:chmod 750 mysql-files . Chown mysql:mysql mysql-files
使用服务器初始化数据目录,包括
mysql
数据库中包含初始的MySQL授权表,该授权表决定用户如何被允许连接到服务器。例如:bin / mysqld——初始化用户= mysql
有关该命令的重要信息,特别是有关可能使用的命令选项的信息,请参见初始化数据目录.服务器的初始化方法请参见数据目录初始化期间的服务器操作.
通常,只有在首次安装MySQL之后才需要进行数据目录初始化。(若要升级现有安装,请执行升级程序;看到第2.11节,“升级MySQL”)。但是,初始化数据目录的命令不会覆盖任何现有的目录
mysql
数据库表,因此在任何情况下运行它都是安全的。请注意如果缺少所需的系统库,数据目录的初始化可能会失败。例如,你可能会看到这样的错误:
Bin /mysqld:加载共享库时出错。1:无法打开共享对象文件:没有共享对象文件或目录
如果发生这种情况,您必须手动或使用系统的包管理器安装丢失的库。重试数据目录初始化命令。
如果希望部署自动支持安全连接的服务器,请使用mysql_ssl_rsa_setup工具创建默认的SSL和RSA文件:
bin / mysql_ssl_rsa_setup
有关更多信息,请参见第4.4.5节,“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
数据库,但不填充它们。要这样做,请使用说明第5.1.13节,“MySQL服务器时区支持”.
将位置更改为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
可能需要指定其他选项,例如——basedir
或——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-file
选择第一个):
Bin /mysqld——defaults-file=/opt/mysql/mysql/etc/my.cnf——initialize——user=mysql
在Windows上,假设是这样C: \ my.ini
包含这些线:
[mysqld] basedir=C:\\Program Files\ MySQL\ MySQL Server 5.7 datadir=D:\\MySQLdata
然后调用mysqld如下所示(在一行上使用——defaults-file
选择第一个):
bin\mysqld——defaults-file=C:\my.ini——initialize——console
服务器执行的数据目录初始化序列不能代替mysql_secure_installation而且mysql_ssl_rsa_setup.看到第4.4.4节,“mysql_secure_installation -提高MySQL安装安全性”,第4.4.5节,“mysql_ssl_rsa_setup -创建SSL/RSA文件”.
当使用——初始化
或——initialize-insecure
选项,mysqld数据目录初始化顺序如下:
服务器检查数据目录是否存在,检查方法如下:
如果不存在数据目录,服务器将创建它。
如果数据目录存在但不为空(即包含文件或子目录),服务器会在产生错误消息后退出:
初始化指定但数据目录存在。流产。
在这种情况下,请删除或重命名数据目录,然后重试。
在MySQL 5.7.11中,一个现有的数据目录允许非空,如果每个条目都有一个以句号(
.
)或使用——ignore-db-dir
选择。请注意避免使用
——ignore-db-dir
选项,自MySQL 5.7.16以来已弃用。
在数据目录中,服务器创建
mysql
系统数据库及其表,包括授权表、时区表和服务器端帮助表。看到第5.3节,“mysql系统数据库”.服务器初始化系统表空间以及需要管理的相关数据结构
InnoDB
表。请注意后mysqld设置
InnoDB
系统表空间,对表空间特征的某些更改需要建立一个全新的表空间实例.符合条件的更改包括系统表空间中第一个文件的文件名和undo日志的数量。如果不想使用默认值,请确保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.8节,“保留帐户”).部分保留帐户被锁定,客户端无法使用,但是“根”@“localhost”
用于管理使用,您应该为其指定密码。与密码相关的服务器操作
“根”@“localhost”
Account取决于您如何调用它:与
——初始化
但不是——initialize-insecure
,服务器生成一个随机密码,将其标记为过期,并写入一条显示密码的消息:[警告]root@localhost: iTag*AfrH5ej生成临时密码
与
——initialize-insecure
,有或没有——初始化
因为——initialize-insecure
意味着——初始化
)时,服务器不生成密码或标记密码过期,并写入警告消息:[警告]root@localhost创建密码为空!请考虑关闭——initialize-insecure选项。
有关分配新
“根”@“localhost”
密码,看到初始化后root密码分配.服务器填充用于
帮助
声明(见第13.8.3节,"帮助语句").服务器不填充时区表。手动执行此操作,请参见第5.1.13节,“MySQL服务器时区支持”.如果
init_file
系统变量指定一个SQL语句文件的名称,服务器执行文件中的语句。此选项使您能够执行自定义引导序列。当服务器以引导模式运行时,一些限制文件中允许的语句的功能不可用。这些包括与帐户管理相关的报表(例如
创建用户
或格兰特
)、复制和全局事务标识符。服务器退出。
初始化数据目录之后,启动服务器——初始化
或——initialize-insecure
,正常启动服务器(即不使用这两个选项),并分配“根”@“localhost”
帐户新密码:
启动服务器。说明,请参阅第2.10.2节,“启动服务器”.
连接服务器:
如果你使用
——初始化
但不是——initialize-insecure
要初始化数据目录,请以根
:Mysql -u root -p
然后在密码提示符下,输入服务器在初始化过程中生成的随机密码:
输入密码:(在这里输入随机的根密码)
如果您不知道这个密码,请查看服务器错误日志。
如果你使用
——initialize-insecure
要初始化数据目录,请以根
没有密码:Mysql -u root——skip-password
连接后,使用an
改变用户
语句赋值new根
密码:修改用户root @ localhost根密码”;
试图连接到主机127.0.0.1
通常解析为本地主机
帐户。但是,如果服务器使用skip_name_resolve
启用。如果您打算这样做,请确保存在可以接受连接的帐户。例如,能够连接为根
使用——主机= 127.0.0.1
或——主机=::1
,创建以下帐户:
创建用户root @ 127.0.0.1 IDENTIFIED BY根密码”;创建用户root @::1根密码”;
可以将这些语句放在一个文件中,使用init_file
系统变量,如数据目录初始化期间的服务器操作.