mariadb/mysql InnoDB: Unable to lock ./ibdata1, error: 11

1, 安装mariadb方法(可不看)

根据mariadb官网方式安装在centos7上后,
官方地址:
英文: https://mariadb.com/kb/en/library/where-to-download-mariadb/
中文: https://mariadb.com/kb/zh-cn/installing-mariadb-with-yum/
建议看英文, 英文的是最新的版本, 中文的有点旧, 流程说明, 还是有点区别的. 中文作为辅助使用吧.
我的这个问题, 就是因为只用了, 中文里的启动命令, 出现的....

2, 现象

安装好mariadb 之后, mysql已经能用了, 但是我修改了字符集, 打算重启一下数据库,
使用systemctl restart mariadb 命令后一两分钟无反应,最后,

提示: Job for mariadb.service failed because the control process exited with error code. 
         See "systemctl status mariadb.service" and "journalctl -xe" for details.

根据提示, 使用命令systemctl status mariadb.service查看
其中重要的提示

InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files.

已经指出其他的线程启动已经在运行无法再次创建相关的读文件进程的权限,也就是说,现有的ibddata文件已经有人读取了,无法再次启动!

3, 解决办法:

想起来在安装mariadb的时候使用的启动命令是sudo /etc/init.d/mysql start
于是使用sudo /etc/init.d/mysql stop 命令来停止,

这时候, 再使用
systemctl start mariadb #启动服务
systemctl enable mariadb #设置开机启动
systemctl restart mariadb #重新启动
systemctl stop mariadb.service #停止MariaDB
这几个服务命令, 就可以了.
现象原因应该是使用sudo /etc/init.d/mysql start 后跟systemctl命令有冲突吧. 应该是只能使用其中一套 . 停止了, 再使用另一套
个人习惯使用systemctl来管理mariadb的生命周期

你可能感兴趣的:(mariadb/mysql InnoDB: Unable to lock ./ibdata1, error: 11)