MySQL5.7之数据库初始化过程

文章目录

参考

本文章参考

当通过tar包或者源码包安装完MySQL之后,需要执行数据目录初始化操作

bash 复制代码
## 如果不指定--datadir;默认是usr/local/mysql目录
bin/mysqld --initialize --user=mysql --basedir=/opt/mysql/mysql --datadir=/opt/mysql/mysql/data

在执行这条命令后mysqld做了什么?

  1. 检查数据目录是否存在,不存在则创建它,创建失败报错mysqld: Can't create directory '/usr/local/mysql/data/' (Errcode: 2 - No such file or directory)

  2. 如果数据目录存在但是不为空(存在文件或者子目录)则报错退出[ERROR] --initialize specified but the data directory has files in it. Aborting.出现这种情况只需要把这个目录删除、移走、重命名即可。

  3. 在数据目录中创建mysql数据库和里面的表,包括grant表、time zone 表, server-side help 表。

  4. 初始化管理InnoDB表所需的系统表空间以及相关数据结构。

    在mysqld设置InnoDB系统表空间后,表空间特性的一些更改需要建立全新的实例。符合要求的更改包括系统表空间中第一个文件的文件名和撤销日志的数量。如果不希望使用默认值,请确保在运行mysqld之前,MySQL配置文件中已设置了 innodb_data_file_path和innodb_log_file_size配置参数的设置。同时,请根据需要指定其他影响InnoDB文件创建和位置的参数,如innodb_data_home_dir和innodb_log_group_home_dir。

    如果这些选项在您的配置文件中,但该文件不在MySQL默认读取的位置,请在运行mysqld时使用--defaults-extra-file选项指定文件位置。

  5. 创建 'root'@'localhost' 超级root账户和其他预留账户,有些预留账户是locked状态不能被使用的。

    • 如果有参数 --initialize,root账号会随机生成密码。
    • 如果有参数 --initialize-insecure,root不会设置密码
  6. 服务器初始化用于HELP语句的server-side help 表,服务器不会初始化time zone 表。

  7. 如果为init_file系统变量指定了一个包含SQL语句的文件名,则服务器将执行该文件中的语句。此选项允许您执行自定义的引导序列。

    当服务器以引导模式运行时,某些功能不可用,这限制了文件中允许的语句。这些语句包括与帐户管理(如CREATE USER或GRANT)、复制和全局事务标识符相关的语句。

  8. 退出

相关推荐
SelectDB3 小时前
SelectDB 是哪个公司的?是国产数据库吗?一篇讲清飞轮科技与 Apache Doris 的关系
数据库
这个DBA有点耶3 小时前
库内计算推理:一条SQL背后的算子融合,和外挂方案差了几次网络往返
数据库·人工智能·sql
这个DBA有点耶5 小时前
函数索引的“完全一致”有多苛刻:写法、字符集、类型,差一处就失效
数据库·mysql·代码规范
星恒随风5 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
Alluxio6 小时前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
数据库急诊室_阿哲10 小时前
一次加索引建议的复核记录:从报告到签字
数据库·ai数据库
青瓦梦滋11 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
慧都小妮子11 小时前
Wyn商业智能国产数据库适配:数据接入、分析缓存与审计日志验证清单
数据库·数据分析·数据可视化·审计日志·商业智能
Joy T12 小时前
Redis Lua 原子限流:Lua 脚本、竞态条件与并发控制
数据库·redis·lua·限流·竞态条件·redis scripting
杨凯凡13 小时前
MySQL 死锁怎么排查?InnoDB 锁等待与 Spring Boot 整事务重试实战
数据库·spring boot·mysql