前言:

今日在部署mysql应用时,遇到mysql无法启动错误

环境:

系统:centos 6.8 x64

mysql:mysql 5.7

问题:

采用mysql 官方yum 源安装mysql5.7,安装后修改了my.cnf 默认的datadir 路径为自定义目录。

启动mysql 报datadir 目录无权限,错误信息如下。

Initializing MySQL database:  mysqld: Can't create directory '/data/mysql/' (Errcode: 17 - File exists)
2016-09-20T01:51:47.062108Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-09-20T01:51:47.064457Z 0 [ERROR] Aborting
[FAILED]

解决方案:

确认datadir 目录属主 属组均为mysql 用户,应该不是用户权限的问题,这时想起SELinux 默认是开启状态,会不会是SELinux 的问题,为了确认问题,临时关闭SELINUX

#setenforce 0

也可边查看SELINUX 日志边启动mysql服务

#tail -f /var/log/audit/audit.log

确认确实是SELinux 的原因,那就来修改 datadir 自定义目录的SELinux 标签。

首先查看默认目录的SElinux 标签

#ls -ldZ /var/lib/mysql
drwxr-x--x. mysql mysql system_u:object_r:mysqld_db_t:s0 /var/lib/mysql

设置自定义目录的SELINUX 标签为以上值,并确认

#chcon -Rv -u system_u -t mysqld_db_t /data/mysql
#ls -ldZ /data/mysql
drwxr-x--x. mysql mysql system_u:object_r:mysqld_db_t:s0 /data/mysql/

这样问题应该就解决了,启动mysql

#service mysqld start

晕,居然还是同样的问题,再次查看/data/mysql目录的安全上下文

# ls -lZd /data/mysql/
drwxr-x--x. mysql mysql system_u:object_r:default_t:s0   /data/mysql/

汗,目录的安全上下文居然变回默认值了,猜测可能是mysql启动时重置了目录的selinux安全上下文。

那有没有办法修改默认安全上下文的方法呢,只要你能想到的,就肯定是有的。

使用semanage 修改安全上下文的默认值,具体使用可见 http://man.linuxde.net/semanage

#semanage fcontext -a -t mysqld_db_t “/data/mysql(/.*)?“

接下来在将目录的安全上下文恢复为刚刚设置的默认值即可

#restorecon -Rv /data/mysql

如果使用的是非默认端口,还需修改端口的安全上下文

#semanage port -a -t mysqld_port_t -p tcp port_number

需要修改的安全上下文标签值,是什么这里就用什么,此处mysql 用的是mysqld_db_t 如果是http类的,用的就是http_port

启动还是报同样的错误

最后要修正下安全上下文

#fixfiles restore
********************************************filespec_add:  conflicting specifications for /var/log/boot.log and /var/spool/plymouth/boot.log, using system_u:object_r:plymouthd_spool_t:s0.
******************

再次启动mysql就可以了

亦可通过查看selinux 文档确认修改

#grep "/data/mysql" /etc/selinux/targeted/contexts/files/file_contexts.local
/data/mysql(/.*)?    system_u:object_r:mysqld_db_t:s0
/data/mysql    system_u:object_r:mysqld_db_t:s0

按照这种方式推理,直接在file_contexts.local 文件增加自定义目录及对应安全上下文貌似也可以,

经验证可行,但同样需要执行

#fixfiles restore


总结:

遇到系统权限问题时,首先确认用户权限设置是否正确,其次就要想到SELINUX 这个linux系统独有的安全控制

selinux 太复杂,但在生产环境是一种不错的安全机制

转载于:https://blog.51cto.com/morrowind/1854427

Install Mysql with SELinux on相关推荐

  1. php无法连接mysql(selinux)

    php无法连接mysql(selinux) 注意: 有什么不对的地方请大神们多多指教!!! 今天发布代码的时候,使用小伙伴搭建的lamp环境遇到这样的一个问题: 使用Thinkphp5,连接mysql ...

  2. install mysql 5.6.22 source code

    install mysql 5.6.22 source code 1.配置yum / epel 2.安装基础环境 yum -y install ntp make openssl openssl-dev ...

  3. brew install mysql

    Mac安装MySQL(Brew)以及修改默认密码 折腾了一大圈之后,得知需要安装MacOS的包管理器----HomeBrew 百度搜索macos安装homebrew 进入第一个CSDN大佬文章开始撸: ...

  4. 【苹果推家庭推】推送脚本软件安装新版本brew install mysql

    1.APNS关系.本课程需求您利用Mac处理器,您能够使用有用的Apple Developer帐户. 推荐内容IMESSGAE相关 作者推荐内容 参考此文档来操作 *** 点击即可查看作者要求内容信息 ...

  5. centos7 install mysql

    1. 下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2. 安装mysql-co ...

  6. mysqld install mysql default_MySQL安装默认配置

    查看MySQL默认数据保存地,执行语句: SELECT @@databir; 查看MySQL安装文件路径,执行语句: SELECT @@basedir; MySQL默认配置文件: # Other de ...

  7. yum install mysql_CentOS7下解决yum install mysql

    [plain] view plaincopy # wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm --  htt ...

  8. mysql64位zip版_windows install mysql 64位 zip版本

    MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示),一般MySQL将会安装在C:\P ...

  9. npm install mysql --save-dev

    npm install X: 会把X包安装到node_modules目录中 不会修改package.json 之后运行npm install命令时,不会自动安装X npm install X –sav ...

最新文章

  1. linux定时备份mysql数据并同步到其他服务器
  2. 实现房源列表的Dubbo服务的开发
  3. OPA 1 - testsuite.opa.html
  4. Ajax补充之serialize
  5. 等级保护2.0发布!过了4级的华为云如何帮助你?
  6. VC中char,TCHAR,WCHAR总结
  7. Vue终端取消vue、prettier警告warn
  8. php xml构造,C++_C语言实现xml构造解析器,纯C实现xml构造解析器,所有实 - phpStudy...
  9. GATK / 体细胞短变异检测工具Mutect2的使用
  10. ORACLE 10g命令大全
  11. 纯JS写一个用苹果序列号查询生产信息的小工具
  12. windows之IP地址(一)
  13. 浏览器利用框架BeEF测试
  14. 傅里叶级数用matlab,傅里叶级数展开matlab实现
  15. Python批量删除文件名中带小括号数字(1)(2)(3)...
  16. selenium如何执行网页脚本
  17. QT笔记——QDir,QFileInfo类
  18. 2019 杭电第九场1007 Rikka with Travels
  19. 藏宝阁显示您在该服务器没有角色或没有绑定密保!,《大唐无双》藏宝阁提现 藏宝阁角色交易常见问题...
  20. 层次结构工程命名建议

热门文章

  1. C七:指向函数的指针 ------ 函数指针(function pointer)
  2. python email模块
  3. js中内置对象Math()常用方法笔记
  4. Linux环境下安装Mysql+SphinxSE
  5. 70后、80后、90后程序员区别极端版
  6. openstack nova 源码分析3-nova目录下的service.py
  7. E: Unable to locate package ros-kinetic-usb-cam
  8. Nodejs Web网站-请求路径分发
  9. office365中文版
  10. Windows环境下MinGW/gcc安装和环境配置