关于Mysqld的配置启动问题

本文介绍了解决MySQL无法启动的问题步骤,包括配置my.ini文件、创建data文件夹并初始化,以及解决root用户权限问题的方法。

这里写图片描述
这里写图片描述

①先检查mysql目录下的 mydefault.ini文件(也许没有)
不能使用原有的初始化文件my-default.ini直接修改,那个只是给我们参考
更改为 my.ini(创建)

These are commonly set, remove the # and set as required.

basedir = E:\mysql\mysql-5.7.20-winx64

datadir = E:\mysql\mysql-5.7.20-winx64\data

②创建data文件夹,且必须是空文件夹,如果已经有跑出一些mysql日志文件在这里,请删掉全部文件
这里写图片描述

A:进入bin目录,执行一下初始化 mysqld –initialize,再次net start MySQL就解决了。(管理员权限启动)
1、桌面左下角输入cmd
2、用cd命令进入安装mysql时的bin目录: cd E:\mysql\mysql-5.7.20-winx64\bin(本人安装路径是E:\mysql\mysql-5.7.20-winx64\bin)
3、初始化data文件(之前下载没有data 文件): mysqld –initialize(这个要等半分钟时间,没反应别以为是卡机了啊啊啊)
4、启动服务:net start MySQL,就成功啦~
这里写图片描述
Ps:
安装Mysql后利用SQLyogEnt启动是提示“access denied for user ‘root’@’localhost’(using password:YES)”,开始我还为是因为是密码问题,后来上网查了查才知道root权限问题,我想可能是因为win7系统我在安装时没用以管理员身份进行安装,所以root角色没有权限,从网上找了一个解决方案解决了,在这里记录一下:
1. 管理员登陆系统,停止mysql服务或者结束mysqld-nt进程;
2. 进入命令行,来到mysql的安装目录.假设安装目录为 d:\mysql\ , CMD进入命令行;
3. 运行 D:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld-nt –skip-grant-tables启动mysql,关闭权限的检查;
4. 运行 D:\Program Files\MySQL\MySQL Server 5.5\bin\mysqladmin -u root flush-privileges password “newpassword” 重设root密码;
5. 重新启动mysql服务;
这里写图片描述

<think>嗯,用户问的是关于如何配置mysqld,使其在启动成功后返回0并在后台挂起,失败则返回1。首先,我需要确认用户的使用场景。可能用户是在编写脚本,需要根据mysqld启动状态进行后续操作,比如重试或者记录日志。用户可能是系统管理员或者开发人员,负责自动化部署或监控MySQL服务。 接下来,我得回想一下mysqld启动方式。通常,使用systemctl启动服务的话,退出码是由systemd管理的,但用户可能希望自己编写一个脚本,直接调用mysqld并捕获其启动状态。这时候,需要考虑如何让mysqld在后台运行,并且正确获取退出状态。 用户提到启动成功后返回0并后台挂起,这意味着需要将mysqld作为守护进程运行。通常,mysqld--daemonize选项,但不同版本或发行版可能有所不同。比如,MariaDB可能支持这个选项,而MySQL可能需要使用mysqld_safe来后台运行。 然后,检测启动是否成功。可能需要检查进程是否持续运行,或者通过连接MySQL端口来确认服务可用。不过,用户可能希望立即知道启动结果,而不是等待一段时间。这里有一个时间差的问题,因为即使mysqld启动命令返回成功,实际服务可能还没准备好接受连接。但用户的需求是启动命令本身的结果,所以可能需要依赖mysqld自身的退出码。 接下来,用户提供的示例脚本中使用了一个循环来等待mysqld启动,并检查进程是否存在。这可能是一个方法,但需要考虑是否有更好的方式。比如,使用mysqld--initialize选项或者使用mysqladmin ping来检查服务状态。 另外,用户可能遇到的问题包括权限问题配置文件错误、端口冲突等,这些都可能导致mysqld启动失败。在脚本中,需要确保能够捕获这些错误,并正确返回1。 还要考虑不同环境下的兼容性,比如有的系统使用apt安装的MySQL,有的使用二进制包,路径和启动方式可能不同。需要给出通用的方法,或者提示用户根据实际情况调整路径。 最后,用户可能需要一个完整的脚本示例,结合之前的错误重试机制,比如在启动失败时进行重试,直到成功或达到最大次数。这可能和用户之前的问题相关,即循环检测错误并重试。 总结下来,回答需要包括如何后台启动mysqld,如何检测启动成功或失败,返回正确的退出码,并提供示例脚本。同时,提醒用户注意路径、权限、配置文件以及不同环境下的差异。</think>在MySQL/MariaDB服务管理中,可以通过以下方式实现「启动成功返回0并后台运行,失败返回1」的逻辑。这里给出$Shell脚本实现示例$: ```bash #!/bin/bash # 启动mysqld守护进程(根据实际路径调整) /usr/sbin/mysqld --daemonize # 等待初始化和检查进程状态 sleep 3 # 根据实际启动时间调整等待时长 # 双重验证机制 if pgrep mysqld >/dev/null && mysqladmin ping >/dev/null 2>&1; then echo "MySQL启动成功" >&2 exit 0 # 成功返回0 else echo "MySQL启动失败" >&2 exit 1 # 失败返回1 fi ``` $$关键点解析$$: 1. **后台挂起实现**: `--daemonize`参数使mysqld以守护进程方式运行(MariaDB 10.2+和部分MySQL版本支持,如不可用需改用`mysqld_safe &`方式) 2. **状态验证双重检查**: - `pgrep mysqld`:确认mysqld进程存在 - `mysqladmin ping`:确认服务真正可用(比单纯检查进程更可靠) 3. **返回值逻辑**: - 当`if`条件同时满足进程存在和服务可连接时,返回0 - 任意条件不满足则返回1 $$扩展改进建议$$: 1. **自适应等待**(替代固定sleep): ```bash for i in {1..10}; do mysqladmin ping >/dev/null 2>&1 && break sleep 1 done ``` 2. **日志诊断**: ```bash # 启动时记录错误日志 /usr/sbin/mysqld --daemonize --log-error=/var/log/mysql/startup.log ``` 3. **Systemd服务对比**: ```ini # /usr/lib/systemd/system/mysqld.service 片段 [Service] ExecStart=/usr/sbin/mysqld --daemonize Restart=on-failure RestartSec=5s SuccessExitStatus=0 ``` $$注意事项$$: 1. 权限问题:确保脚本有执行权限且以正确用户(通常为mysql)运行 2. 路径差异:通过`which mysqld`确认二进制文件真实路径 3. 版本兼容:MySQL 5.6与8.0的初始化方式存在差异 4. SELinux限制:如启用需检查上下文标签 `ls -Z /var/lib/mysql` 可通过以下命令测试脚本: ```bash chmod +x mysql_start.sh ./mysql_start.sh echo $? # 观察返回值 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值