mysql 5.7 初始化数据库_MySQL5.7数据库怎么初始化?MySQL5.7数据库的初始化方法

MySQL 5.7的初始化方法与之前不同,需要使用`mysqld`命令配合`--initialize`或`--initialize-insecure`选项。在Windows和Unix系统中,有不同的命令执行方式。初始化过程包括创建数据目录、系统数据库、'root'@'localhost'账户等。如果使用`--initialize`,服务器将生成随机密码;使用`--initialize-insecure`则不会设置密码。完成初始化后,记得为'root'@'localhost'设置新密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL 5.7发布了,不少网友发现:打开想安装文件夹,但是文件夹中没有DATA目录, 没有mysqly默认库。启动不了数据库,那是因为5.7的数据库的初始化方法和之前的初始化不一样了。

首先这里所描述的过程适用于所有平台的MySQL。5.7.6之前,使用mysql_install_db在UNIX和类UNIX系统。MySQL 5.7.7之前,Windows分布包括了在MySQL数据库建表的数据目录。

9f89f21b4311630abf6d75b26ea8dcab.png

以下说明假定您当前的位置是MySQL的安装目录,这里以BASEDIR为例

1 shell> cd BASEDIR

要初始化数据目录,调用 mysqld的与 --initialize或 --initialize不安全的选项,这取决于你是否希望服务器生成的一个随机初始密码'root'@'本地账号'的账户。

在Windows环境下,使用这些命令:

1 C:\> bin\mysqld --initialize

2 C:\> bin\mysqld --initialize-insecure

在Unix和类Unix系统,重要的是要确保数据库的目录和文件都是由拥有 MySQL的登录帐户,以便服务器具有读写访问它们,当你以后运行它。为了确保这一点,如果你运行的mysqld为root,包括 --user选项,如下所示:

1 shell> bin/mysqld --initialize --user=mysql

2 shell> bin/mysqld --initialize-insecure --user=mysql

否则,执行程序,而身份登录mysql的,在这种情况下可以省略 --user从命令选项。

无论任何平台,使用 --initialize为“ 默认安全 ”的安装(即包括产生一个随机的初始根密码)。在这种情况下,密码被标记为过期,你需要选择一个新的密码。随着 --initialize-insecure 的选项,没有root口令生成; 假设你把服务器投入使用之前指定一个密码及时查询账户。

如果mysqld的没有标识的安装目录或数据目录的正确位置.它可能需要指定其他选项,如 --basedir或 --datadir.如果mysqld的没有标识的安装目录或数据目录的正确位置。例如(输入在一行上的命令):

1 shell> bin/mysqld --initialize --user=mysql

2 --basedir=/opt/mysql/mysql

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

另外,对于Unix和类Unix系统,假设选择文件名是 /opt/mysql/mysql/etc/my.cnf。把相关的选项设置中的选项文件和传递文件命名为 mysqld的。把文件中的这几行:

1 [mysqld]

2 basedir=/opt/mysql/mysql

3 datadir=/opt/mysql/mysql/data

然后调用mysqld,如下(输入上的一行命令 -- --defaults-file第一个选项):

1 shell> bin/mysqld --defaults-file=/opt/mysql/mysql/etc/my.cnf

2 --initialize --user=mysql

在Windows中,假设C:\ my.ini中包含这些命令:

1 [mysqld]

2 basedir=C:\\Program Files\\MySQL\\MySQL Server 5.7

3 datadir=D:\\MySQLdata

然后调用mysqld.如下(--defaults-file必须是第一个选项)

1 C:\> bin/mysqld --defaults-file=C:\my.ini --initialize

当调用的 --initialize或 --initialize-insecure选项 ,mysqld执行下面的初始化程序。

注意

服务器写入的任何消息,以它的标准错误输出。这可能会被重定向到错误日志.

服务器会检查数据目录,如下所示的存在:

如果没有数据目录存在,则服务器将创建它。

如果数据目录存在并且不为空(即,它包含文件或子目录),产生一个错误消息后在服务器退出:

1 [ERROR] --initialize specified but the data directory exists. Aborting.

1.在这种情况下,删除或重命名数据目录,然后重试。

在MySQL 5.7.11中,现有的数据目录允许非空,如果每个条目或者具有开头一段的名称(.),请使用名为--ignore-db-dir 设置。

2.在数据目录中,服务器创建 的mysql系统数据库及其表,其中包括授权表,服务器端帮助表,时区表。

3.服务器初始化system tablespace 和管理所需的相关数据结构的InnoDB表。

注意

经过mysqld的设置了 InnoDB的system tablespace,改变一些表空间的特性需要建立一个全新的实例。这包括在system tablespace的第一个文件,撤销日志的数量的文件名 ??。在配置文件运行前的mysqld。如果你不想使用默认值,请确保该设置innodb_data_file_path中 和innodb_log_file_size 参数配置到位.同时一定要指定影响的创建和位置需要其他参数 InnoDB的文件,如 innodb_data_home_dir和 innodb_log_group_home_dir。

如果这些选项在您的配置文件中文,但该文件是不是在MySQL的读取默认的位置,使用指定文件位置 --defaults-extra-file设置.

4.服务器创建一个'root'@'localhost'的超级用户帐户。对于该帐号的密码,服务器的操作取决于你如何调用它:

-- 当用 --initialize账户而不用--initialize-insecure账户时。服务器生成一个随机的密码,将其标记为已过期,并写入显示密码的消息:

1 [Warning] A temporary password is generated for root@localhost:

2 iTag*AfrH5ej

-- 当用 --initialize-insecure账户时候。服务器不会生成一个密码,会将其标记为过期,并写入一条警告消息:

1 Warning] root@localhost is created with an empty password ! Please

2 consider switching off the --initialize-insecure option.

5.如果--init-file选项被给出以命名的SQL语句的文件时,服务器执行文件中的语句。可以进行自定义的引导序列。

服务器工作在引导方式,一些功能是不可用,限制在文件中所允许的语句。这些措施包括,涉及到账户管理(如报表CREATE USER或 GRANT),复制和标识符。

6.然后退出服务器

当您通过启动服务器初始化数据目录--initialize或--initialize-insecure,正常启动的服务器(也就是没有任何的这些选项),并指定'root'@'localhost'的一个新密码:

---启动服务器。

---链接到服务器..

如果你使用--initialize 但不使用--initialize-insecure初始化数据目录,连接到服务器的 根目录使用的随机密码,服务器初始化过程中产生的:

1 shell> mysql -u root -p

2 Enter password: (enter the random root password here)

如果您不知道该密码,查看服务器错误日志。

如果你使用--initialize-insecure初始化数据目录连接到服务器的root没有密码:

1 shell> mysql -u root --skip-password

---连接后,会分配一个新的root密码:

1 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

注意

由服务器执行的数据目录初始化序列不能代替被执行的操作 mysql_secure_installation或 mysql_ssl_rsa_setup。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值