您的位置:

MySQL数据库初始化

一、mysqld --initialize --console命令介绍

mysqld --initialize --console命令用于生成一个全新的MySQL数据目录,并且创建root账户的默认密码,该密码将会在日志中输出。

二、mysqld --initialize --console命令使用

1、生成全新的MySQL数据目录

使用mysqld --initialize --console命令生成全新的MySQL数据目录,示例如下:

$ mysqld --initialize --console
2020-04-05T01:25:29.822188Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 3342
2020-04-05T01:25:29.824964Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2020-04-05T01:25:29.826628Z 0 [ERROR] [MY-013236] [Server] Newly created data directory /var/lib/mysql/ is unusable. You can safely remove it.

如果全新的MySQL数据目录已经存在,将会输出以上错误信息。

如果全新的MySQL数据目录不存在,将会输出以下类似的信息:

$ mysqld --initialize --console
2020-04-05T01:08:33.765043Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 3037
2020-04-05T01:08:33.853206Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: GCPsO1G[s4&6
2020-04-05T01:08:38.226778Z 0 [System] [MY-013170] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initialization completed successfully (log sequence number 0).

以上信息表示MySQL数据目录初始化成功,并生成了root账户的默认密码:GCPsO1G[s4&6。

2、修改MySQL数据目录位置

使用mysqld --initialize --console命令时,默认MySQL数据目录为/var/lib/mysql,可以通过--datadir参数来指定MySQL数据目录位置,示例如下:

$ mysqld --initialize --console --datadir=/data/mysql

以上命令将会在/data/mysql目录下生成全新的MySQL数据目录。

三、mysqld --initialize --console命令原理

mysqld --initialize --console命令执行原理如下:

1、生成临时密码

执行命令时,MySQL服务器会生成一串随机的临时密码,平时我们不可见,密码会被输出在日志中,如以下信息:

2020-04-05T01:08:33.853206Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: GCPsO1G[s4&6

2、初始化数据目录

执行mysqld --initialize --console命令时,MySQL 会检查指定数据目录是否存在,如果不存在,MySQL就会按照默认的存储引擎创建必要的文件和子目录。

当 MySQL 执行成功时,表示数据库初始化完成并且数据库可以正常工作了。

3、启动MySQL服务器实例

执行mysqld --initialize --console命令并不会启动 MySQL服务器实例。需要执行mysqld_safe启动 MySQL服务器实例。

四、mysqld --initialize --console命令注意事项

1、MySQL数据目录不为空

如果MySQL数据目录不为空时,执行mysqld --initialize --console命令将会输出以下信息,初始化中止:

mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
2020-04-05T01:03:30.171566Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-04-05T01:03:30.172188Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.

2、MySQL版本不同

MySQL的版本不同,执行mysqld --initialize --console命令时的日志信息可能会略有不同。

3、MySQL数据目录权限问题

如果MySQL数据目录的权限不正确,执行mysqld --initialize --console命令可能会失败。我们需要使用chmod 命令修改 MySQL 数据目录权限(默认权限为700),示例如下:

$ sudo chmod 700 /var/lib/mysql/

4、生成的密码强度

mysqld --initialize --console命令生成的密码强度并不高,我们需要在MySQL服务启动后,修改root账户的密码:

$ mysql -u root -p
Enter password: *********
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

总结

mysqld --initialize --console命令是MySQL服务初始化必不可少的命令之一,不仅会生成全新的MySQL数据目录,还会生成root账户的临时密码,需要注意的是,生成的密码强度并不高,需要及时修改密码。

mysql初始化元数据库失败,oracle数据库初始化失败

2022-11-19
mysql数据库服务初始化,mysql数据库初始化失败

2022-11-18
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
mysql安装数据库初始化失败,MySQL初始化失败

2022-11-29
基于mysql数据库初始化(mysql数据库初始化配置)

2022-11-10
初始mysql数据库,mysql57初始化数据库

2022-11-17
mysql数据库完整笔记(mysql数据库数据)

2022-11-13
mysql如何用sql初始化数据库(怎样初始化数据库)

2022-11-14
mysql安装数据库初始化失败,初始化数据库失败怎样解决

2022-11-17
mysql数据库重新初始化数据,mysql数据库重新初始化数

2022-11-19
java学习笔记(java初学笔记)

2022-11-14
mysql数据库初始化方法教程,mysql数据库初始化方法教

2022-11-21
jsp数据库笔记,jsp写入数据库

本文目录一览: 1、怎么用jsp连接mysql数据库 2、jsp中怎么使用数据库 3、JSP 从数据库中如何取得图片的路径? 怎么用jsp连接mysql数据库 一. 数据库的连接和操作笔记:1.初始化

2023-12-08
mysql数据库优化的一些笔记(MySQL数据库的优化)

2022-11-13
命令行初始化mysql数据库,oracle数据库初始化命令

2022-11-19
MySQL数据库初始化

2023-05-20
mysql数据库表初始化恢复,MySQL数据库恢复

2022-11-18
bat初始化mysql数据库的简单介绍

2022-11-19
mysql数据库开发笔记(mysql数据库应用案例教程电子版

2022-11-14
linux的mysql初始化的简单介绍

2022-11-12