文章插图
如设置了UMASK=0664,UMASK_DIR=0774,在经过以上运算之后,生成的文件及目录的权限应为0664,0774 。
4.1.2 设置方式
设置这两个环境变量的建议做法是,在用户的/etc/skel/{bashrc, bash_profile} 文件和root用户的.bashrc .bash_profile中加入:
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160TW3-11.jpg)
文章插图
4.1.3 验证
验证所用版本:mysql 5.6.31
系统umask:
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160V215-12.jpg)
文章插图
UMASK、UMASK_DIR环境变量:
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160Q2Q-13.jpg)
文章插图
初始化后生成的文件及目录权限为:
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160VO3-14.jpg)
文章插图
4.1.4 特殊的目录权限
在初始化完成后,mysql、test文件夹的权限和预期不符,出现此种情况的原因为mysql、test文件夹的创建是通过scripts/mysql_install_db这个perl脚本实现的,找到相关的代码如下,可以看出,这两个文件夹的创建时的权限是固定的 。
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160R5M-15.jpg)
文章插图
4.2 启动及MySQL实例运行中创建文件及目录的权限
启动mysql 有两种方式,/etc/init.d/mysql start 或 service mysql start,这两种方式都能够正确的启动MySQL,但实际情况是有差别的,尤其是在设置了上述环境变量的情况下 。
查看了service 命令的 manual,描述是这样的:
DESCRIPTION
service runs a System V init script in as predictable environment as possible, removing most environment variables and with current working directory set to /.
通过验证后确实如此,用service 命令启动 会去掉UMASK环境变量:
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160UC2-16.jpg)
文章插图
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160Q051-17.jpg)
文章插图
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160W2a-18.jpg)
文章插图
4.2.1 验证
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160S549-19.jpg)
文章插图
启动后,生成的mysql.err文件权限为0640,通过mysql连接数据库,创建的新的database及table,查看权限:
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160V264-20.jpg)
文章插图
实例运行后创建的文件及目录权限为0660、0700,UMASK、UMASK_DIR环境变量未起作用 。
4.2.1.1 源码层面分析
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160R030-21.jpg)
文章插图
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160VD9-22.jpg)
文章插图
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160VW2-23.jpg)
文章插图
使用service mysql start 启动:
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160R123-24.jpg)
文章插图
使用service mysql start 启动不会产生 atoi_octal 函数调用,所以UMASK、UMASK_DIR环境变量没有生效 。
4.2.2 解决办法
- 启动脚本中加入 export UMASK等环境变量;
- 不使用service命令启动 。
验证
验证所用版本:mysql 5.6.31
以下,通过在每次启动MySQL服务之前,删除MySQL的错误日志,启动之后查看生成的错误日志的权限来具体说明这个问题(本例中,错误日志为mysql.err),最初初始化生成的错误日志的权限为0664,即 rw-rw-r– 。
启动脚本中加入 export UMASK等环境变量:
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160U0U-25.jpg)
文章插图
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160S402-26.jpg)
文章插图
启动后mysql.err权限为0664,通过mysql连接数据库,创建新的数据库及表,查看权限:
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160W457-27.jpg)
文章插图
新创建的文件及数据库目录的权限为0664、0774 。
4.2.2.1 源码层面分析
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160V294-28.jpg)
文章插图
使用service启动:
![MySQL文件及目录权限设置分析-爱可生](http://img.jiangsulong.com/220413/19160TW6-29.jpg)
文章插图
产生atoi_octal调用,UMASK、UMASK_DIR环境变量生效 。
推荐阅读
- 茉莉花苞茶的功效与作用及禁忌,茉莉花的功效与作用
- 为什么别人能用好 MySQL?万字详解其复杂原理
- 足部反射区高清图及足底按摩
- 洛神花茶的味道口感怎样,洛神花茶的功效及其作用
- 玫瑰冬瓜荷叶茶的功效与作用及副作用,茉莉花的功效与作用
- 菊花茶的主要品种及其功效,菊花茶的功效与作用
- 玳玳花茶的品质特点,白兰花茶的特点及制法
- 丁香叶主要的功效作用以及禁忌,金银花茶的功效作用
- 胃不好喝洋甘菊茶吗,玳玳花主要的功效作用以及禁忌
- 科目三灯光考试的口诀及操作细节,新手看完,全面掌握要点