The MySQL server is running with the --read-only option so it cannot execute this statement

正在开会,同事电话反映开发库不能写入了,错误信息如下:

1209 - The MySQL server is running with the--read-only option so it cannot execute this statement

一般这个错误有两种原因:

1.连到从库了。从库一般设置为只读。

2.主库的read_only参数被修改为1

开发人员是普通用户应该没有权限修改这个参数的值。

DBA也不会去主动修改这个参数。那究竟是什么原因导致开发库不能写入了呢?

首先确认了不是开发人员的问题,因为部门的200多位研发都遇到了这个问题。

为了先解决问题,先去查询主库上read_only参数的值。果然read_only被设置为1.

手工修改为0后,问题解决。问题是read_only为什么会设置为1呢?

解决步骤如下:

mysql> select @@read_only;

+-------------+

| @@read_only |

+-------------+

| 1 |

+-------------+

1 row in set (0.00 sec)

mysql> set global read_only=0;

Query OK, 0 rows affected (0.00 sec)

检查mysql的错误日志发现有如下信息:

151231 13:55:11 mysqld_safe Number ofprocesses running now: 0

151231 13:55:11 mysqld_safe mysqldrestarted

由此可知MySQL发生了重启。重启的原因是什么呢?

检查了系统日志,发现了如下错误:

#tail -100f /var/log/message

Dec 31 13:55:11 mysql2dev kernel: [8680] 500 8680 27084 92 3 0 0 bash

Dec 31 13:55:11 mysql2dev kernel: Out ofmemory: Kill process 12805 (mysqld) score 964 or sacrifice child

Dec 31 13:55:11 mysql2dev kernel: Killedprocess 12805, UID 500, (mysqld) total-vm:13146848kB, anon-rss:7870704kB,file-rss:16kB

Dec 31 13:55:11 mysql2dev kernel: rsyslogdinvoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0

Dec 31 13:55:11 mysql2dev kernel: rsyslogdcpuset=/ mems_allowed=0-1

Dec 31 13:55:11 mysql2dev kernel: Pid:21035, comm: rsyslogd Not tainted 2.6.32-358.el6.x86_64 #1

Dec 31 13:55:11 mysql2dev kernel: CallTrace:

由这条错误可知,是由于内存溢出导致了mysql的重启

Out of memory: Kill process 12805 (mysqld)score 964 or sacrifice child

那是什么导致了内存溢出呢?

查看了系统的历史命令后发现有同事在做备份,而此时的系统的压力又比较大,且次系统没有设置交换分区,以上原因导致了MySQL的重启。

Swap: 0 0 0

为什么重启会导致read_only=1呢? 可能是配置文件中设置了read_only ,检查配置文件

#grep read_only my.cnf

read_only = on

这时开发环境突然不能写入的原因终于水落石出了。

你可能会问,主库为什么设置read_only=on呢,因为原来是一个MMM环境。

现在已经把MMM环境摘掉,所以将配置文件中的read_only 设置为0,至此开发库不能写入问题宣告解决。

MySQL报错:The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement等问题

1.登录的mysql:mysql –u root –p

mysql> set global read_only=0;
(关掉新主库的只读属性)

flush privileges;

2.修改mysql配置文件my.cnf,该文件在/etc目录下

重启mysql服务:service mysqld restart

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot exe

在安装Mysql8.0.3过程中重置密码时报了这个错误, 原因是没有设置密码时需要在/etc/my.cnf中添加这段时才能操作mysql

#跳过密码验证

skip-grant-tables

但是添加完这句后操作mysql又报了这个错误, 这就成了一个死循环, 最后发现了解决办法,

这是因为权限设置了但还没有刷新导致的。

先执行

flush privileges;

再执行sql语句, 成功了

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

(0)

相关推荐

  • mysql server is running with the --skip-grant-tables option

    The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 意思貌似MYSQL还运行在 --skip-grant-tables模式,如何让他回到原来的模式 第一种方法:原来在mysql.ini文件中配置了skip-grant-tables,前面加个#注释掉就可以了 修改mysql的配置文件,把skip-grant-tables去掉后,重启mysql 第二种:

  • The MySQL server is running with the --read-only option so it cannot execute this statement

    正在开会,同事电话反映开发库不能写入了,错误信息如下: 1209 - The MySQL server is running with the--read-only option so it cannot execute this statement 一般这个错误有两种原因: 1.连到从库了.从库一般设置为只读. 2.主库的read_only参数被修改为1 开发人员是普通用户应该没有权限修改这个参数的值. DBA也不会去主动修改这个参数.那究竟是什么原因导致开发库不能写入了呢? 首先确认了不是开

  • MySQL server has gone away 问题的解决方法

    mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分批插入). 产生这个问题的原因有很多,总结下网上的分析: 原因一. MySQL 服务宕了 判断是否属于这个

  • Can't connect to MySQL server on localhost (10061)解决方法

    首先检查MySQL 服务没有启动>如果没有启动,则要启动这个服务. 昨天,重起服务器后出现MySQL 'localhost' (10061)错误,开始以为是因为数据库链接打开过多,数据库资源耗尽的缘故,但是重启服务器以后,仍旧出现问题,于是在网上查找解决方法.大体如下: 解决办法: 第一步 删除c:\windows\下面的my.ini 第二步 打开c:\mysql\bin\winmysqladmin.exe 输入用户名 和密码 第三步 在dos下 输入 mysqld-nt -remove 删除服

  • master and slave have equal MySQL server ids

    蚊子今天下午搭了一主三从的mysql复制,结果所有服务器都配置好后,发现从上报如下的错误 复制代码 代码如下: Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-i

  • MySQL: mysql is not running but lock exists 的解决方法

    启动MySQL出错,查看了下状态,发现提示MySQL is not running,but lock exists: 一个网友说可能和log文件有关,于是将log文件给移除了,再重启MySQL终于OK了找了下资料,基本上都是说: 复制代码 代码如下: # chown -R mysql:mysql /var/lib/mysql # rm /var/lock/subsys/mysql # service mysql restart 执行完发现还是这个提示. 因为是在cPanel服务器上,所以又通过命

  • MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket

    在安装好了MySQL之后,使用了新的配置文件后,MySQL服务器可以成功启动,但在登陆的时候出现了ERROR 2002 (HY000): Can't connect to local MySQL server through socket,即无法通过socket连接到mysql服务器,同时提供了socket文件的位置.下面是这个问题的描述与解决办法. 1.故障现象 复制代码 代码如下: [root@SZDB mysqldata]# mysql -uroot -p123456 Warning: U

  • CentOS 7中安装mysql server的步骤分享

    以前一直用RHEL 6.3和6.4,系统盘里自带了mysql server,配置好yum源后,直接yum install mysql-server就可安装mysql服务器端了,最近用CentOS 7.1,发现系统盘没有提供mysql-server的RPM包,在网上搜罗了半天,最后在mysql的官方网站找到答案. 只需在/etc/yum.repos.d/目录下添加以下文件mysql-community.repo文件,内容如下: # Enable to use MySQL 5.6 [mysql56-

  • 解决zabbix server is running | No.的方法

    根据日志报错排查 cat /var/log/zabbix/zabbix_server.log zabbix进程查看 ps aux |grep zabbix 查看监听zabbix server---------zabbix agent    10050---10051端口 netstat -nplut |grep zabbix 登陆报错解决    zabbix server is running | No. 解决方法1 setsebool -P httpd_can_network_connect

  • MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)

    最近服务器很不稳定,于是重装了mysql 和php 服务,但是接着却遇到了很头疼的麻烦. 远程连接mysql是总是提示: 复制代码 代码如下: Lost connection to MySQL server at 'reading initial communication packet', system error: 0 很明显这是连接初始化阶段就丢失了连接的错误. google半天大多是说的注释掉配置文件中 bind-address = 127.0.0.1 这一句. 但是我的配置文件并没有配

随机推荐