我在 Linux 上Ubuntu机器MySQL已安装。
如果有MySQL安装在Ubuntu机器时,我看到有些人做以下事情:
sudo chown mysql:mysql /data/tmp
我很困惑,我知道上述命令的含义,即将其所有者更改为/data/tmp
用户“ mysql
”,并将其组更改为“ mysql
”组。
但是(我的问题):
1.为什么要运行上述命令?如果我在my_db
数据库中创建一个表,默认情况下,将创建.frm
、.MYD
和.MYI
文件(数据文件)自动地经过MySQL在 下/var/lib/mysql/my_db/
。那么,上述命令是否会将默认的 MySQL 数据目录更改为/data/tmp/
而不是/var/lib/mysql/my_db/
?
基本上我想知道上述命令的目的和效果。(最好有例子)
2.'mysql' 所有者和组来自哪里?在 Linux 机器上安装 MySQL 是否会自动创建 'mysql' 用户和组?还是需要手动mysql
为 Linux 机器创建帐户?
答案1
命令
- 该
chown
命令确实执行了您预期的操作。 - 在我熟悉的大多数系统中,默认目录树是 /var/lib/mysql/ 的一部分
- 为了使
chown
命令有意义,必须有一个my.cnf
引用 /data/tmp、相关系统变量或命令行标志的命令。
用户帐户
在 Ubuntu(您已标记此标签)上,MySQL 通常通过 安装apt-get
。MySQL APT 包包含在安装软件时自动创建 MySQL 用户的脚本。
答案2
当您从类似的包管理器安装 mysql 时apt-get
,mysql
将自动创建用户,并且权限和所有权也应自动设置。
当正在运行的进程(例如 mysql)创建文件时,该文件也应由同一有效用户拥有mysql
。
答案3
mysql的主目录在/etc/passwd文件中设置:
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
如果将其更改为 /data/tmp (或任何其他目录),该目录将成为 mysql 的主文件夹。
最重要的是,你可以在 mysql 配置文件“my.cnf”中的 [mysqld] 下更改 datadir=,这将是实际数据文件的存储位置
[mysqld]
datadir=/var/lib/mysql
显然,无论这两个指向什么,mysql 用户都需要访问权限。
**
更改主目录和/或数据目录的原因显然是空间。一个“最佳实践”是在 *nix 服务器上保持 /var 目录相当小,但是 sql 数据库往往会变得很大,最简单的做法是将它们移动到另一个分区上。