mysql skip-grant-tables 添加用户报错 ERROR 1290

mysql skip-grant-tables 添加用户报错 ERROR 1290

   

不小心把数据库密码忘掉了,

这个时候我们只需要在数据库的配置文件里面添加

skip-grant-tables

然后重新启动服务,再登录数据库就不要我们输入密码了

这个时候我成功登录数据,可是不小心又把所有的用户给删除了又无法登陆了,这个时候我又改动配置文件可以登录了想再数据库里面添加用户,可是执行了添加用户的命令后就提示我如下:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY '123' WITH GRANT OPTION;
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

这个时候我们只需要flush privileges 一下,在添加用户就OK了,

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY '123' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

这个时候我们成功搞定了,再登录就可以了。

如果报错如下信息:

Error: Cannot retrieve repository metadata (repomd.xml) for repository: InstallMedia. Please verify its path and try again
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

我们只要到/etc/yum.repo.s下面把packetxxxx.repo和RedHat.repo两个文件删除掉,再启动就可以了,

### 解决方案 当 `mysqld` 命令通过 `--skip-grant-tables` 参数启动时发生报错,通常是因为该参数的使用方式不正确或者与其他配置冲突。以下是可能的原因分析以及解决方案: #### 1. **确认配置文件中的设置** 如果在 MySQL 配置文件中已经设置了 `[mysqld] skip-grant-tables` 的选项,则无需再通过命令行传递 `--skip-grant-tables` 参数[^1]。重复指定可能导致冲突并引发错误。 可以通过以下方法验证配置文件的内容: ```bash grep "skip-grant-tables" /etc/my.cnf ``` 如果有匹配项,则说明已经在配置文件中启用了此功能。此时应移除命令行中的 `--skip-grant-tables` 参数。 --- #### 2. **检查其他潜在冲突配置** 某些情况下,MySQL 配置文件可能存在多个相互矛盾的指令。例如,在同一配置文件中既存在 `skip-grant-tables` 又有被注释掉的相关条目(如引用[2]所示)。这种混乱可能会导致解析失败或行为异常[^2]。 建议清理配置文件,确保只保留必要的配置项,并删除多余的注释或冗余内容。 --- #### 3. **网络通信问题排查** 如果仍然遇到类似于 `Communications link failure` 的错误提示[^4],则可能是由于客户端与服务端之间的连接中断引起的。这通常不是由 `--skip-grant-tables` 导致的问题,而是因为监听地址、端口或其他网络相关配置未正确设置。 可以尝试手动指定绑定地址和端口号来测试服务是否正常运行: ```bash mysqld --bind-address=127.0.0.1 --port=3306 --skip-grant-tables & ``` 随后使用本地客户端工具连接数据库以进一步诊断问题所在。 --- #### 4. **自定义配置路径的影响** 对于非标准安装目录下的 MySQL 实例,其默认读取的配置文件位置可能不同于常规情况。例如,引用[5]展示了如何创建独立实例所需的个性化 `.cnf` 文件[^5]。在这种场景下,需特别注意确保所使用的 mysqld 进程能够找到正确的 my.cnf 路径;否则即使指定了 `--skip-grant-tables` ,也可能无法生效。 可通过显式声明 `--defaults-file` 来强制加载特定配置文件: ```bash mysqld --defaults-file=/path/to/custom-my.cnf --skip-grant-tables & ``` --- #### 5. **日志记录审查** 最后一步是查看 MySQL 错误日志 (`log_error`) 中的具体信息以便更精准定位原因。根据引用[5]的例子可知,默认的日志存储位置位于 `/data/3308/mysql.log` 。打开它寻找任何关于授权表跳过的警告消息可以帮助理解实际发生的状况。 --- ### 总结代码示例 综合上述要点,下面给出一个完整的调试脚本供参考: ```bash #!/bin/bash # Step A: 修改配置文件 (假设为/etc/my.cnf) sed -i '/skip-grant-tables/d' /etc/my.cnf # 删除原有配置以防冲突 echo "[mysqld]" >> /etc/my.cnf # 添加新配置 echo "skip-grant-tables" >> /etc/my.cnf # # Step B: 启动服务进程 nohup mysqld --bind-address=127.0.0.1 --port=3306 --skip-grant-tables > /var/log/mysqld.log 2>&1 & # Step C: 查看状态和服务日志 ps aux | grep mysqld # 确认进程已启动 tail -n 20 /var/log/mysqld.log # 输出最近的日志片段用于分析 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值