解决Mysql 出现Table‘xxx’is read only问题
原创
©著作权归作者所有:来自51CTO博客作者yxkong的原创作品,请联系作者获取转载授权,否则将追究法律责任
背景:在博客迁移过程,由于误操作原来的mysql无法启动,只能通过新建一个mysql,然后清空data目录,将原来的data都拷贝过去。
启动后登录没问题,读取也没问题,就是无法写入,出现了Table‘xxx’is read only。
我这是因为迁移后修改my.cnf文件多加了一个配置导致
\[mysqld\]
log-error = /app/data/mysql/logs/error.log
pid-file = /app/data/mysql/mysql.pid
port = 3306
socket = /app/data/mysql/tmp/mysql.sock
datadir = /app/data/mysql/data
innodb\_undo\_directory = /app/data/mysql/undo
#innodb\_undo\_tablespaces = 4
#innodb\_force\_recovery =4 #这个配置不能乱加
当时在网上找大部分是方案一和方案二,我这个是用方案三解决。
方案一
找到mysqladmin 命令,权限没刷新的问题
`find / -name mysqladmin`
`/usr/bin/mysqladmin -u root -p flush-tables`
`回车输入密码`
方案二
数据库目录的归属和权限不够,授权即可
chown -R mysql.mysql /app/data/mysql/chmod -R
664 data
方案三
查看 my.cnf将 innodb_force_recovery =4 注释掉
`#innodb_force_recovery =4`
ps: innodb_force_recovery =4 innodb_force_recovery 可以设置为1~6,大的数字包含前面所有数字的作用,当设置参数值大于0后,可以对标进行select、create、drop操作,但insert、update或者delete这类操作是不允许的。
想了解更多,请关注公众号5ycode