MYSQL初始化数据目录

安装MySQL后,必须初始化数据目录,包括mysql系统schema中的表:对于某些MySQL安装方法,数据目录初始化是自动的

对于其他安装方法,您必须手动初始化数据目录。其中包括在Unix和类Unix系统上从通用二进制和源码发行版安装,以及在Windows上从zip压缩包安装。

本节介绍如何为那些不能自动初始化数据目录的MySQL安装方式,进行手动初始化数据目录。

数据目录初始化概述

在此处显示的示例中,服务器打算在mysql登录帐户的用户ID下运行。如果帐户不存在,请创建该帐户,或者替换您计划用于运行服务器的不同现有登录帐户的名称。

1、将位置更改为MySQL安装的顶级目录,这通常是/usr/local/mysql的(根据需要调整系统的路径名):

cd /usr/local/mysql
 

2、secure_file_priv系统变量将导入和导出操作限制在特定目录。创建一个目录,其位置可以指定为该变量的值:

mkdir mysql-files

将目录用户和组所有权授予mysql用户和mysql组,并适当设置目录权限:

chown mysql:mysql mysql-files
chmod 750 mysql-files
 

3、使用服务器初始化数据目录,包括mysql schema包含确定如何允许用户连接到服务器的初始MySQL授权表。例如:

bin/mysqld --initialize --user=mysql

 通常,数据目录初始化只需要在您第一次安装MySQL后完成。但是,初始化数据目录的命令不会覆盖任何现有的mysqlschema表,因此在任何情况下运行都是安全的。

4、如果没有任何选项文件,服务器运行默认设置。要显式指定MySQL服务器在启动时应使用的选项,请将它们放在选项文件中,例如/etc/my.cnf/etc/mysql/my.cnf。例如,您可以使用选项文件来设置secure_file_priv系统变量。

5、要确定MySQL在系统启动时无需人工干预即可启动。

6、数据目录初始化在mysql schema中创建时区表,但不填充它们。

数据目录初始化程序

将位置更改为MySQL安装的顶级目录,这通常是/usr/local/mysql的(根据需要调整系统的路径名):

cd /usr/local/mysql

要初始化数据目录,调起mysqld与--initialize或--initialize-insecure选项,这取决于您是否希望服务器生成一个随机的初始密码为'root'@'localhost'帐户,或创建该帐户时不指定密码:

1、使用--initialize进行"安全默认"安装(即,包括生成随机的初始root密码)。在这种情况下,密码被标记为过期,您必须选择一个新的。

2、使用--initialize-insecure,不会生成root密码。这是不安全的;您需要在将服务器投入生产使用之前及时为帐户分配密码。

有关分配新的'root'@'localhost'密码的说明,请参阅初始化后root密码修改。

注:服务器将任何消息(包括任何初始密码)写入其标准错误输出。这可能会被重定向到错误日志,在Windows上,使用--console选项将消息定向到控制台。

在Unix和类Unix系统上,数据库目录和文件必须由mysql登录帐户拥有,以便稍后运行时服务器可以读取和写入它们。为确保这一点,请从系统root帐户启动mysqld并包含--user选项,如下所示:

bin/mysqld --initialize --user=mysql
bin/mysqld --initialize-insecure --user=mysql

或者,在已登录为mysql用户中执行mysqld,在这种情况下,您可以从命令中省略--user选项。

在Windows上,使用以下命令之一:

bin\mysqld --initialize --console
bin\mysqld --initialize-insecure --console

注:如果缺少所需的系统库,数据目录初始化可能会失败。例如,您可能会看到如下错误:

bin/mysqld: error while loading shared libraries:
libnuma.so.1: cannot open shared object file:
No such file or directory

如果发生这种情况,您必须手动或使用系统的包管理器安装缺失的库。然后重试数据目录初始化命令。

如果mysqld无法识别安装目录或数据目录的正确位置,则可能需要指定其他选项--basedir--datadir。例如(在一行中输入命令):

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/data

然后调起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 8.4
datadir=D:\\MySQLdata

然后调起mysqld如下(同样,您应该在一行中输入命令,首先输入--defaults-file选项):

bin\mysqld --defaults-file=C:\my.ini--initialize --console
重要:始化数据目录时,除了用于设置目录位置的选项(如--basedir或--datadir)和--user选项(如果需要)之外,不应指定任何其他选项。MySQL服务器在正常使用期间使用的选项可以在初始化后重新启动时设置。有关详细信息,请参阅--initialize选项的描述。

数据目录初始化期间的服务器操作

注:服务器执行的数据目录初始化序列不能替代mysql_secure_installation执行的操作。

当使用--initialize或--initialize-insecure选项调用时,mysqld在数据目录初始化序列期间执行以下操作:

1、服务器检查数据目录是否存在,如下所示:

  • 如果不存在数据目录,则服务器会创建它。

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

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

    在这种情况下,请删除或重命名数据目录,然后重试。如果每个条目的名称都以句点(.)开头,则允许存量数据目录为非空。

2、在数据目录中,服务器创建mysql系统schema及其表,包括数据字典表、授权表、时区表和服务器端帮助表。

3、服务器初始化管理InnoDB表所需的系统表空间和相关数据结构。注意:在mysqld设置InnoDB 系统表空间后,对表空间特征的某些更改需要设置一个全新的实例。合格的更改包括系统表空间中第一个文件的文件名和撤消日志的数量。如果您不想使用默认值,请确保innodb_data_file_path和innodb_log_file_size配置参数的设置在MySQL配置文件 中到位,然后再运行mysqld。还要确保根据需要指定影响InnoDB文件创建和位置的其他参数,例如innodb_data_home_dirinnodb_log_group_home_dir,如果这些选项在配置文件中,但该文件不在MySQL默认读取的位置,请在运行mysqld时使用--defaults-extra-file选项指定文件位置。

4、服务器创建一个'root'@'localhost'超级用户帐户和其他保留帐户(参见第8.2.9节,“保留帐户”)。一些保留帐户被锁定,客户端无法使用,但'root'@'localhost'用于管理用途,您应该为其分配密码。服务器关于'root'@'localhost'帐户密码的操作取决于您如何调起它:

使用--initialize但不--initialize-insecure,服务器生成一个随机密码,将其标记为过期,并写入一个显示密码的消息:

[Warning] A temporary password is generated for root@localhost:
iTag*AfrH5ej

使用--initialize-insecure,(无论是否--initialize,因为--initialize-insecure暗示--initialize),服务器不会生成密码或标记密码已过期,并写入警告消息:

[Warning] root@localhost is created with an empty password ! Please
consider switching off the --initialize-insecure option.

有关分配新的'root'@'localhost'密码的说明,请参阅下面的说明

5、服务器填充用于HELP的服务器端help表。服务器不填充时区表。要手动执行此操作

6、如果使用init_file系统变量来命名包含SQL语句的文件,则服务器将执行该文件中的语句。当服务器在引导模式下运行时,某些功能不可用,这些功能限制了文件中允许的语句。这些语句包括与帐户管理(如CREATE USER或GRANT)、复制和全局事务标识符相关的语句。

7、服务器退出。

初始化后root密码分配

通过使用--initialize或--initialize-insecure启动服务器初始化数据目录后,正常启动服务器(即不使用这些选项中的任何一个)并为'root'@'localhost'帐户分配新密码:

1、启动服务器

2、连接到服务器

如果使用--initialize但不--initialize-insecure初始化数据目录,则以root身份连接到服务器:

mysql -u root -p

然后,在密码提示处,输入服务器在初始化序列中生成的随机密码:

Enter password: (enter the random root password here)

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

如果您使用--initialize-insecure初始化数据目录,请以root连接到服务器,无需密码:

mysql -u root --skip-password

 3、连接后,使用ALTER USER语句分配新的root密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';

尝试连接到主机通常127.0.0.1解析为localhost帐户。但是,如果服务器在启用skip_name_resolve的情况下运行,则会失败。如果您计划这样做,请确保存在可以接受连接的帐户。例如,为了能够使用--host=127.0.0.1或--host=::1以root连接,请创建以下帐户:

CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password';
CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';

可以使用init_file系统变量将这些语句放入要执行的文件中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/497533.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Springboot + vue实现的火锅店管理系统

🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…

基于Svelte 5的体检查询系统前端设计与实现探究

一、引言 1.1 研究背景与意义 在当今数字化时代,医疗信息化已成为医疗行业发展的重要趋势。随着人们对健康的重视程度不断提高,体检作为预防疾病、保障健康的重要手段,其相关信息的管理和查询需求也日益增长。传统的体检查询系统前端往往存…

科大讯飞在线语音合成(流式版)python版

1、进入自己的项目 复制APPID、APISecret、APIKey 2、添加好听发音人 复制vcn参数 3、需要替换代码部分: 换自己喜欢的发声人的参数 换上自己的APPID、APISecret、APIKey 4、完整代码: # -*- coding:utf-8 -*- import _thread as thread import base…

TCP 为什么采用三次握手和四次挥手以及 TCP 和 UDP 的区别

1. TCP 为什么采用三次握手和四次挥手 采用三次握手的原因: 确认双方的收发能力。第一次握手,客户端发送 SYN 报文,告诉服务器自身具备发送数据的能力,第二次握手,服务器回应 SYN ACK 报文,表名自己既能…

python-Flask:SQLite数据库路径不正确但是成功访问到了数据库,并对表进行了操作

出现了这个问题,就好像是我要去找在南方的人,然后我刚好不分南北,我认为的方向错了,实则方向对了。 在我针对复盘解决:sqlite3.OperationalError: unrecognized token: “{“-CSDN博客这个内容的时候,又出现…

2024-12-29-sklearn学习(25)无监督学习-神经网络模型(无监督) 烟笼寒水月笼沙,夜泊秦淮近酒家。

文章目录 sklearn学习(25) 无监督学习-神经网络模型(无监督)25.1 限制波尔兹曼机25.1.1 图形模型和参数化25.1.2 伯努利限制玻尔兹曼机25.1.3 随机最大似然学习 sklearn学习(25) 无监督学习-神经网络模型(无监督) 文章参考网站&a…

Spring ----深入理解AOP(面向切面编程)

给程序做增强 事务是最小的执行单元,转账,同时成功、同时失败 TxUtils类式事务管理类,有6个静态方法,可以直接通过类名来调用,threadlocal线程池,还有一个静态代码块,来加载链接 从数据源中获取…

vue源码分析(十)—— 生命周期

文章目录 前言一、关键方法 callHook二、详细的钩子函数说明1.beforeCreate和create2.beforeMount & mounted注意点组件(非根组件)的渲染节点(1)invokeInsertHook函数(2)insert方法(3&#…

docker离线安装及部署各类中间件(x86系统架构)

前言:此文主要针对需要在x86内网服务器搭建系统的情况 一、docker离线安装 1、下载docker镜像 https://download.docker.com/linux/static/stable/x86_64/ 版本:docker-23.0.6.tgz 2、将docker-23.0.6.tgz 文件上传到服务器上面,这里放在…

【WIN11新机/重装系统 把尿级系统设置优化】

目录 一、更改鼠标样式二、更改显示器刷新率三、常规文件存储路径0.存储感知1.保存新内容的地方2.快捷访问的文件路径3.Edge浏览器下载路径 四、通知关闭五、开机自启动关闭六、隐私关闭七、性能优化1.开机优化2.用户账控制关闭 八、关闭Windows自动更新九、任务栏设置十、必装…

7.若依参数设置、通知公告、日志管理

参数设置 对系统中的参数进行动态维护。 关闭验证码校验功能 打开页面注册功能 需要修改前端页面代码 通知公告 促进组织内部信息传递 若依只提供了一个半成品,只实现了管理员可以添加通知公告。 日志管理 追踪用户行为和系统运行状况。 登录日志 和操作日志…

修改网络ip地址方法有哪些?常用的有这四种

在数字时代,IP地址作为网络设备的唯一标识,对于网络连接和通信至关重要。然而,有时候我们可能需要修改设备的IP地址,以满足特定的网络需求或解决网络问题。本文将为您详细介绍几种修改网络IP地址的常用方法,无论是对于…

【Java项目】基于SpringBoot的【外卖点餐系统】

【Java项目】基于SpringBoot的【外卖点餐系统】 技术简介:本系统使用JSP技术,采用B/S架构、Spring Boot框架、MYSQL数据库进行开发设计。 系统简介:管理员;首页、个人中心、用户管理、商家管理、菜品分类管理、骑手管理、系统管理…

Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化

如何使用 Maven 将 Spring Boot 应用程序 Docker 化? Docker是一个开源容器化工具,用于在隔离环境中构建、运行和管理应用程序。它方便开发人员捆绑其软件、库和配置文件。Docker 有助于将一个容器与另一个容器隔离。在本文中,为了将Spring B…

计算机网络|数据流向剖析与分层模型详解

文章目录 一、网络中的数据流向二、计算机网络通信模型1.OSI 模型2.TCP/IP 模型3.TCP/IP五层模型3.1 分层架构描述3.2各层地址结构3.3UDP数据包报头结构 三、总结 一、网络中的数据流向 在计算机网络中,数据的流向是指数据从发送端到接收端的传输路径。数据流向涉及…

uniapp——微信小程序,从客户端会话选择文件

微信小程序选择文件 文章目录 微信小程序选择文件效果图选择文件返回数据格式 API文档: chooseMessageFile 微信小程序读取文件,请查看 效果图 选择文件 /*** description 从客户端会话选择文件* returns {String} 文件路径*/ const chooseFile () &g…

vue3+vite+nginx打包

在开发环境下,已经可以正常地运行一个有增删改查功能的页面了,但如何把它发布到运行服务器呢?仍有许多的问题需要探索。 网上很多文章给了很大的帮助,但总是没有说明原理,对于像我这样的初学者来说,不知其…

CAN201 Introduction to Networking(计算机网络)Pt.2 传输层

文章目录 3. Transport Layer(传输层)3.1 Multiplexing and demultiplexing(多路复用和多路分解)3.2 Connectionless transport:UDP3.3 Principles of reliable data transfer3.4 Pipelined communication3.5 TCP: con…

JVM 详解

一. JVM 内存区域的划分 1. 程序计数器 程序计数器是JVM中一块比较小的空间, 它保存下一条要执行的指令的地址. [注]: 与CPU的程序计数器不同, 这里的下一条指令不是二进制的机器语言, 而是Java字节码. 2. 栈 保存方法中的局部变量, 方法的形参, 方法之间的调用关系. 栈又…

Docker--Docker Network(网络)

Docker为什么需要网络管理 容器的网络默认与宿主机及其他容器之间是隔离的,但有时也需要与宿主机和容器进行通信。 容器间及容器与外部通信的需求 容器间通信:在Docker环境中,容器默认与宿主机及其他容器是相互隔离的。然而,在实际应用中&…