安装mysql报错无法创建测试文件cant create test file /usr/local/mysql8.0…

本文详细记录了解决在MacOS环境下重装MySQL时遇到的权限错误问题,通过修改目录权限、重建data文件夹并初始化数据库,最终成功启动MySQL。

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

重装mysql的时候遇到这么个问题

020-03-11T22:25:40.586329Z 0 [System] [MY-010116] [Server] /usr/local/mysql-8.0.19-macos10.15-x86_64/bin/mysqld (mysqld 8.0.19) starting as process 18261
2020-03-11T22:25:40.606916Z 0 [Warning] [MY-010091] [Server] Can't create test file /usr/local/mysql-8.0.19-macos10.15-x86_64/data/mysqld_tmp_file_case_insensitive_test.lower-test
2020-03-11T22:25:40.606933Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /usr/local/mysql-8.0.19-macos10.15-x86_64/data/ is case insensitive
2020-03-11T22:25:40.607132Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to '/usr/local/mysql-8.0.19-macos10.15-x86_64/data/' (OS errno: 13 - Permission denied)
2020-03-11T22:25:40.607199Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-03-11T22:25:40.607416Z 0 [System] [MY-010910] [Server] /usr/local/mysql-8.0.19-macos10.15-x86_64/bin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.

真是个棘手的问题,内外网\找了半天才找到一点线索,首先呢需要修改目录权限

sudo chown -R 你的主机名 /usr/local/mysql-8.0.20-macos10.15-x86_64/data

然后在删除mysql-8.0.20-macos10.15-x86_64文件夹下面的data文件夹(非空),再新建个空的data文件夹

最后到mysql-8.0.20-macos10.15-x86_64/bin目录下运行下面的指令

./mysqld --initialize --lower-case-table-names=1

运行结果是这样的 

打开navicat尝试连接数据库

终于成功了~ 

<think>好的,我现在需要解决用户提到的在IAAS环境中运行iaas-install-mysql.sh脚本时报错“can't read /etc/etcd”的问题。首先,我得理解这个错误的原因。用户是在安装MySQL时遇到问题,而脚本试图读取/etc/etcd目录,但可能该目录不存在或权限不足。 首先,我应该确认/etc/etcd目录的作用。Etcd通常用于分布式系统中的键值存储,比如Kubernetes等容器编排系统。在MySQL安装脚本中为什么会涉及到这个目录呢?可能这个IAAS环境需要依赖Etcd服务来存储某些配置信息,比如数据库的元数据或者集群信息。如果脚本需要访问Etcd的配置文件或数据,但目录不存在,就会报错。 接下来,可能的几个原因和解决方法: 1. **检查/etc/etcd目录是否存在**:用户需要先确认该目录是否存在。如果不存在,可能需要安装Etcd服务或者创建该目录。但如果是脚本的问题,可能需要检查脚本的逻辑是否有误,是否错误地引用了该路径。 2. **权限问题**:即使目录存在,运行脚本的用户可能没有读取权限。需要检查目录的权限设置,使用ls -l /etc/etcd查看,并用chmod或chown调整权限。 3. **Etcd服务未安装**:如果IAAS环境依赖Etcd,但未正确安装,那么需要先安装并配置Etcd。可能需要通过包管理器安装etcd相关的软件包,并启动服务。 4. **脚本错误**:检查脚本中引用/etc/etcd的部分是否正确,是否是拼写错误或路径错误。可能用户提供的脚本有bug,需要修改脚本中的路径。 5. **环境配置问题**:可能IAAS环境需要特定的配置,比如环境变量指向正确的Etcd路径,或者配置文件中的设置需要调整。 接下来,我需要给出具体的解决步骤: - 首先,确认/etc/etcd是否存在:运行`ls /etc/etcd`,如果不存在,可能需要安装etcd或者联系环境管理员。 - 检查权限:使用`ls -ld /etc/etcd`查看权限,确保运行脚本的用户有读取权限。 - 安装Etcd:如果Etcd未安装,根据操作系统使用yum或apt-get安装,比如`yum install etcd`,然后启动服务。 - 检查脚本内容:查看iaas-install-mysql.sh脚本中引用/etc/etcd的部分,确认是否正确,可能需要修改路径或修复脚本。 - 查看日志:运行脚本时的详细日志可能提供更多线索,添加set -x或查看错误输出。 另外,用户提到的参考引用中有MySQL 5.7手册和Unix论坛的链接,可能与MySQL安装依赖的环境有关,比如某些集群配置需要Etcd的支持。需要确保IAAS环境的所有依赖服务都已正确配置。 最后,如果用户无法自行解决,可能需要联系IAAS环境的技术支持,确认安装MySQL的前提条件是否满足,或者获取修正后的安装脚本。</think>[用户可见层] ### 解决`iaas-install-mysql.sh`报错“can't read /etc/etcd”的步骤分析 #### 1. 确认`/etc/etcd`目录状态 - **检查目录是否存在** 执行命令: ```bash ls /etc/etcd ``` - 如果目录不存在:说明Etcd服务未安装或配置错误,需安装Etcd(见步骤2)[^1]。 - 如果目录存在:检查权限问题(见步骤3)。 #### 2. 安装并配置Etcd服务(若目录不存在) - **通过包管理器安装** - CentOS/RHEL系统: ```bash yum install etcd -y systemctl start etcd systemctl enable etcd ``` - Ubuntu/Debian系统: ```bash apt-get install etcd -y service etcd start ``` - **验证安装** 检查服务状态: ```bash systemctl status etcd # CentOS/RHEL service etcd status # Ubuntu/Debian ``` 若服务启动失败,需检查配置文件(通常位于`/etc/etcd/etcd.conf`)或端口冲突。 #### 3. 检查目录权限 - **查看权限设置** ```bash ls -ld /etc/etcd ``` 输出示例: ```bash drwxr-x--- 2 etcd etcd 4096 Jun 10 10:00 /etc/etcd ``` - 若运行脚本的用户(如`root`或`mysql`)不在`etcd`组或无读取权限,需调整权限: ```bash chmod 755 /etc/etcd # 开放读权限 chown -R etcd:etcd /etc/etcd # 确保归属正确 ``` #### 4. 检查脚本逻辑 - **查看脚本中`/etc/etcd`的引用** 使用文本编辑器打开`iaas-install-mysql.sh`,搜索`/etc/etcd`: ```bash grep -rn "/etc/etcd" iaas-install-mysql.sh ``` - 若路径被硬编码且实际环境路径不同(如`/opt/etcd`),需修改脚本中的路径。 - 若脚本依赖Etcd的配置文件(如`etcd.conf`),需确保文件存在。 #### 5. 查看详细错误日志 - **启用脚本调试模式** 在脚本开头添加`set -x`以输出执行细节: ```bash #!/bin/bash set -x # 添加此行 ``` 重新运行脚本,观察具体报错位置。 #### 6. 联系IAAS环境支持 如果上述步骤无效,可能是IAAS平台对MySQL安装有特殊限制,需提供以下信息给技术支持: - 完整的脚本报错日志 - 操作系统版本(`cat /etc/os-release`) - Etcd服务状态及版本(`etcd --version`) ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值